From b53f9fdf4b264a14752744719f7c546d2129f293 Mon Sep 17 00:00:00 2001 From: Sami Mokaddem Date: Fri, 17 Nov 2017 09:13:18 +0100 Subject: [PATCH] Feature: Date range replace fixed date + formatted labels --- server.py | 26 ++++++++++++------- static/js/trendings.js | 55 ++++++++++++++++++++++++++++++++-------- templates/trendings.html | 13 +++++++--- 3 files changed, 70 insertions(+), 24 deletions(-) diff --git a/server.py b/server.py index 467293a..ef4233a 100755 --- a/server.py +++ b/server.py @@ -491,31 +491,39 @@ def getLoginVSCOntribution(): @app.route("/_getTrendingEvents") def getTrendingEvents(): try: - date = datetime.datetime.fromtimestamp(float(request.args.get('date'))) + dateS = datetime.datetime.fromtimestamp(float(request.args.get('dateS'))) + dateE = datetime.datetime.fromtimestamp(float(request.args.get('dateE'))) except: - date = datetime.datetime.now() + dateS = datetime.datetime.now() - datetime.timedelta(days=7) + dateE = datetime.datetime.now() - data = trendings_helper.getTrendingEvents(date) + data = trendings_helper.getTrendingEvents(dateS, dateE) return jsonify(data) @app.route("/_getTrendingCategs") def getTrendingCategs(): try: - date = datetime.datetime.fromtimestamp(float(request.args.get('date'))) + dateS = datetime.datetime.fromtimestamp(float(request.args.get('dateS'))) + dateE = datetime.datetime.fromtimestamp(float(request.args.get('dateE'))) except: - date = datetime.datetime.now() + dateS = datetime.datetime.now() - datetime.timedelta(days=7) + dateE = datetime.datetime.now() - data = trendings_helper.getTrendingCategs(date) + + data = trendings_helper.getTrendingCategs(dateS, dateE) return jsonify(data) @app.route("/_getTrendingTags") def getTrendingTags(): try: - date = datetime.datetime.fromtimestamp(float(request.args.get('date'))) + dateS = datetime.datetime.fromtimestamp(float(request.args.get('dateS'))) + dateE = datetime.datetime.fromtimestamp(float(request.args.get('dateE'))) except: - date = datetime.datetime.now() + dateS = datetime.datetime.now() - datetime.timedelta(days=7) + dateE = datetime.datetime.now() - data = trendings_helper.getTrendingTags(date) + + data = trendings_helper.getTrendingTags(dateS, dateE) return jsonify(data) diff --git a/static/js/trendings.js b/static/js/trendings.js index f319cc2..853ca81 100644 --- a/static/js/trendings.js +++ b/static/js/trendings.js @@ -1,5 +1,6 @@ /* VARS */ -var date; +var dateStart; +var dateEnd; var eventPie = ["#eventPie"]; var eventLine = ["#eventLine"]; var categPie = ["#categPie"]; @@ -36,10 +37,12 @@ var lineChartOption = { var pieChartOption = { series: { pie: { - innerRadius: 0.5, + innerRadius: 0.2, show: true, label: { - show: false, + show: true, + radius: 1, + formatter: innerPieLabelFormatter, } } }, @@ -50,6 +53,15 @@ var pieChartOption = { }; /* FUNCTIONS */ +function innerPieLabelFormatter(label, series) { + var count = series.data[0][1]; + return '
' + + ' ' + count + '' + + '
'; +} + function getTextColour(rgb) { var r = parseInt('0x'+rgb.substring(0,2)); var g = parseInt('0x'+rgb.substring(2,4)); @@ -87,11 +99,26 @@ function updatePie(pie, data) { if (data === undefined || data.length == 0 || (data[0] == 0 && data[1] == 0)) { toPlot = [{ label: 'No data', data: 100 }]; } else { + toPlot_obj = {} + for (var arr of data) { + var date = arr[0]; + var items = arr[1] + for(var item_arr of items) { + var item = item_arr[0]; + var count = item_arr[1]; + if(toPlot_obj[item] === undefined) + toPlot_obj[item] = 0; + toPlot_obj[item] += count; + } + } toPlot = []; - for (var item of data) { - toPlot.push({label: item[0], data: item[1]}); + for (var item in toPlot_obj) { + if (toPlot_obj.hasOwnProperty(item)) { + toPlot.push({label: item, data: toPlot_obj[item]}) + } } } + if (!(pieWidget === undefined)) { pieWidget.setData(toPlot); pieWidget.setupGrid(); @@ -149,14 +176,15 @@ function updateLine(line, data) { } function updatePieLine(pie, line, url) { - $.getJSON( url+"?date="+parseInt(date.getTime()/1000), function( data ) { - updatePie(pie, data[0][1]); + $.getJSON( url+"?dateS="+parseInt(dateStart.getTime()/1000)+"&dateE="+parseInt(dateEnd.getTime()/1000), function( data ) { + updatePie(pie, data); updateLine(line, data); }); } function dateChanged() { - date = datePickerWidget.datepicker( "getDate" ); + dateStart = datePickerWidgetStart.datepicker( "getDate" ); + dateEnd = datePickerWidgetEnd.datepicker( "getDate" ); updatePieLine(eventPie, eventLine, url_getTrendingEvent) updatePieLine(categPie, categLine, url_getTrendingCateg) updatePieLine(tagPie, tagLine, url_getTrendingTag) @@ -164,9 +192,14 @@ function dateChanged() { $(document).ready(function () { - datePickerWidget = $( "#datepicker" ).datepicker(datePickerOptions); - datePickerWidget.datepicker("setDate", new Date()); - date = datePickerWidget.datepicker( "getDate" ); + datePickerWidgetStart = $( "#datepickerStart" ).datepicker(datePickerOptions); + var lastWeekDate = new Date(); + lastWeekDate.setDate(lastWeekDate.getDate()-7); + datePickerWidgetStart.datepicker("setDate", lastWeekDate); + dateStart = datePickerWidgetStart.datepicker( "getDate" ); + datePickerWidgetEnd = $( "#datepickerEnd" ).datepicker(datePickerOptions); + datePickerWidgetEnd.datepicker("setDate", new Date()); + dateEnd = datePickerWidgetEnd.datepicker( "getDate" ); updatePieLine(eventPie, eventLine, url_getTrendingEvent) updatePieLine(categPie, categLine, url_getTrendingCateg) diff --git a/templates/trendings.html b/templates/trendings.html index 6d33839..241d2e9 100644 --- a/templates/trendings.html +++ b/templates/trendings.html @@ -62,6 +62,10 @@ margin-bottom: 10px; } + .panel-body { + padding: 0px; + } + .col-lg-6 { padding-right: 5px; padding-left: 5px; @@ -112,7 +116,11 @@ small {
  • MISP Trendings
  • - Date: + Date: + + to + +
    @@ -133,7 +141,6 @@ small {
    -
    @@ -146,7 +153,6 @@ small {
    -
    @@ -159,7 +165,6 @@ small {
    -