misp-dashboard/static/js/trendings.js

116 lines
2.9 KiB
JavaScript

/* VARS */
var date;
var eventPie = ["#eventPie"];
var eventLine = ["#eventLine"];
var categPie = ["#categPie"];
var categLine = ["#categLine"];
var tagPie = ["#tagPie"];
var tagLine = ["#tagLine"];
var sightingEventPieWidget;
var sightingCategLineWidget;
/* OPTIONS */
var datePickerOptions = {
showOn: "button",
maxDate: 0,
buttonImage: urlIconCalendar,
buttonImageOnly: true,
buttonText: "Select date",
showAnim: "slideDown",
onSelect: dateChanged
};
var lineChartOption = {
lines: {
show: true,
steps: true,
fill: true
},
xaxis: {
mode: "time",
minTickSize: [1, "day"],
}
};
var pieChartOption = {
series: {
pie: {
innerRadius: 0.5,
show: true
}
}
};
/* FUNCTIONS */
function updatePie(pie, data) {
pieID = pie[0];
pieWidget = pie[1];
if (data === undefined || data.length == 0 || (data[0] == 0 && data[1] == 0)) {
toPlot = [{ label: 'No data', data: 100 }];
} else {
toPlot = [];
for (item of data) {
toPlot.push({label: item[0], data: item[1]});
}
}
console.log(toPlot);
if (!(pieWidget === undefined)) {
pieWidget.setData(toPlot);
pieWidget.setupGrid();
pieWidget.draw();
} else {
pieWidget = $.plot(pieID, toPlot, pieChartOption);
pie.push(pieWidget);
}
}
function updateLine(line, data) {
lineID = line[0];
lineWidget = line[1];
temp = [];
var i=0;
for (item of data) {
temp.push([new Date(item[0]*1000), item[1]]);
}
data = {label: 'Overtime', data: temp}
if (!(lineWidget === undefined)) {
lineWidget.setData(toPlot);
lineWidget.draw();
} else {
lineWidget = $.plot(lineID, [data], lineChartOption);
line.push(lineWidget);
}
}
function updatePieLine(pie, line, url) {
// format date
// var now = new Date();
// if (date.toDateString() == now.toDateString()) {
// date = now;
// } else {
// date.setTime(date.getTime() + (24*60*60*1000-1)); // include data of selected date
// }
$.getJSON( url+"?date="+parseInt(date.getTime()/1000), function( data ) {
updatePie(pie, data[0][1]);
updateLine(line, data);
});
}
function dateChanged() {
date = datePickerWidget.datepicker( "getDate" );
updatePieLine(eventPie, eventLine, url_getTrendingEvent)
updatePieLine(categPie, categLine, url_getTrendingCateg)
updatePieLine(tagPie, tagLine, url_getTrendingTag)
}
$(document).ready(function () {
datePickerWidget = $( "#datepicker" ).datepicker(datePickerOptions);
datePickerWidget.datepicker("setDate", new Date());
date = datePickerWidget.datepicker( "getDate" );
updatePieLine(eventPie, eventLine, url_getTrendingEvent)
updatePieLine(categPie, categLine, url_getTrendingCateg)
updatePieLine(tagPie, tagLine, url_getTrendingTag)
});