blob: 444123090095762d5b0743031ce15e72b6677c1e [file] [log] [blame]
<div class="panel right-align">
<div>
<input type="text" name="daterange" value="01/01/2015 - 01/31/2015" />
</div>
<div id = "{{element_name}}" class="line_chart" ></div>
<script>
google.charts.setOnLoadCallback(drawChartReportPerDay);
const arrayColumn = (arr, n) => arr.map(x => x[n]);
function drawChartReportPerDay(element) {
element = "heartbeats"
var chart = new google.visualization.ColumnChart(document.getElementById("{{element_name}}"));
var data = new google.visualization.DataTable();
var options = {
title: "{{ title }}",
legend: { position: 'bottom' },
chartArea: {width: '100%', height: '100%'},
legend: {position: 'in'},
titlePosition: 'in', axisTitlesPosition: 'in',
bar: { groupWidth: '175%' },
isStacked: true,
hAxis: {textPosition: 'in',
viewWindow: {
},
}, vAxis: {textPosition: 'in'}
};
$.getJSON( "{% url 'hiccup_stats_api_v1_device_report_history' uuid %}", function( json_response ) {
res = [];
if (json_response.results)
res = json_response.results;
else
res = json_response;
reformated_array = res.map(function(obj){
ret = [new Date(obj.date), obj.heartbeats, obj.prob_crashes, obj.smpl, obj.other];
return ret;
});
dates_sorted = arrayColumn(reformated_array,0).sort(function(a,b){
return a - b;
});
// Define the start and end of the range of dates we should look at.
var hiccup_introduction_date = new Date("2016-08-01");
var start_date = hiccup_introduction_date;
for (let date_sorted of dates_sorted) {
if (date_sorted >= hiccup_introduction_date) {
start_date = date_sorted;
break;
}
}
var end_date = dates_sorted[dates_sorted.length - 1];
data.addColumn('date', 'Date');
data.addColumn('number', 'Heartbeats');
data.addColumn('number', 'prob. Crashes');
data.addColumn('number', 'SMPL');
data.addColumn('number', 'other');
data.addRows(reformated_array);
chart.draw(data, options);
initDateRange(chart, data, start_date, end_date, options);
});
}
function initDateRange(chart, data, start_date, end_date, options) {
$('input[name="daterange"]').daterangepicker( {
locale: {
format: 'YYYY-MM-DD'
},
showDropdowns: true,
endDate: end_date,
startDate: start_date,
minDate: start_date,
maxDate: end_date,
opens: "left",
},
function(start, end, label) {
options.hAxis.viewWindow.min=new Date(start);
options.hAxis.viewWindow.max=new Date(end);
chart.draw(data, options);
});
options.hAxis.viewWindow.min=start_date;
options.hAxis.viewWindow.max=end_date;
chart.draw(data, options);
}
</script>