From b17d480360105fe639d846e56a01e036ebe79475 Mon Sep 17 00:00:00 2001 From: Sami Mokaddem Date: Fri, 17 Nov 2017 16:50:04 +0100 Subject: [PATCH] feature: Added draft support of discussion in Trendings --- server.py | 12 ++++++++++++ static/js/trendings.js | 20 +++++++++++++++++--- templates/trendings.html | 5 +++-- trendings_helper.py | 6 ++++++ zmq_subscriber.py | 6 +++++- 5 files changed, 43 insertions(+), 6 deletions(-) diff --git a/server.py b/server.py index 97ad405..0459248 100755 --- a/server.py +++ b/server.py @@ -538,6 +538,18 @@ def getTrendingSightings(): data = trendings_helper.getTrendingSightings(dateS, dateE) return jsonify(data) +@app.route("/_getTrendingDisc") +def getTrendingDisc(): + try: + dateS = datetime.datetime.fromtimestamp(float(request.args.get('dateS'))) + dateE = datetime.datetime.fromtimestamp(float(request.args.get('dateE'))) + except: + dateS = datetime.datetime.now() - datetime.timedelta(days=7) + dateE = datetime.datetime.now() + + + data = trendings_helper.getTrendingDisc(dateS, dateE) + return jsonify(data) if __name__ == '__main__': app.run(host='localhost', port=8001, threaded=True) diff --git a/static/js/trendings.js b/static/js/trendings.js index 0113b20..f0a020b 100644 --- a/static/js/trendings.js +++ b/static/js/trendings.js @@ -8,6 +8,7 @@ var categLine = ["#categLine"]; var tagPie = ["#tagPie"]; var tagLine = ["#tagLine"]; var sightingLineWidget; +var discLine = ["#discussionLine"]; /* OPTIONS */ var datePickerOptions = { @@ -192,7 +193,7 @@ function updatePie(pie, data) { } } -function updateLine(line, data) { +function updateLine(line, data, chartOptions) { lineID = line[0]; lineWidget = line[1]; @@ -203,7 +204,10 @@ function updateLine(line, data) { lineWidget.setupGrid(); lineWidget.draw(); } else { - lineWidget = $.plot(lineID, toPlot, lineChartOption); + if (chartOptions === undefined) { + chartOptions = lineChartOption; + } + lineWidget = $.plot(lineID, toPlot, chartOptions); line.push(lineWidget); $(lineID).bind("plothover", function (event, pos, item) { if (item) { @@ -258,6 +262,15 @@ function updatePieLine(pie, line, url) { }); } +function updateDisc() { + var lineChartOptionDisc = jQuery.extend(true, {}, lineChartOption); + lineChartOptionDisc['legend']['show'] = true; + lineChartOptionDisc['legend']['position'] = 'nw'; + $.getJSON( url_getTrendingDisc+"?dateS="+parseInt(dateStart.getTime()/1000)+"&dateE="+parseInt(dateEnd.getTime()/1000), function( data ) { + updateLine(discLine, data, lineChartOptionDisc); + }); +} + function dateChanged() { dateStart = datePickerWidgetStart.datepicker( "getDate" ); dateEnd = datePickerWidgetEnd.datepicker( "getDate" ); @@ -265,6 +278,7 @@ function dateChanged() { updatePieLine(categPie, categLine, url_getTrendingCateg); updatePieLine(tagPie, tagLine, url_getTrendingTag); updateSignthingsChart(); + updateDisc(); } $(document).ready(function () { @@ -282,7 +296,7 @@ $(document).ready(function () { updatePieLine(categPie, categLine, url_getTrendingCateg) updatePieLine(tagPie, tagLine, url_getTrendingTag) updateSignthingsChart(); - + updateDisc(); $("
").css({ position: "absolute", diff --git a/templates/trendings.html b/templates/trendings.html index cf34bd3..4bc9846 100644 --- a/templates/trendings.html +++ b/templates/trendings.html @@ -185,10 +185,10 @@ small {
- Empty + Discussion
-
+
@@ -212,6 +212,7 @@ small { var url_getTrendingCateg = "{{ url_for('getTrendingCategs') }}"; var url_getTrendingTag = "{{ url_for('getTrendingTags') }}"; var url_getTrendingSightings = "{{ url_for('getTrendingSightings') }}"; + var url_getTrendingDisc = "{{ url_for('getTrendingDisc') }}"; /* DATA FROM CONF */ diff --git a/trendings_helper.py b/trendings_helper.py index ceaa0a9..ac81ca8 100644 --- a/trendings_helper.py +++ b/trendings_helper.py @@ -29,6 +29,9 @@ class Trendings_helper: def addTrendingCateg(self, categName, timestamp): self.addGenericTrending('TRENDINGS_CATEGS', categName, timestamp) + def addTrendingDisc(self, eventName, timestamp): + self.addGenericTrending('TRENDINGS_DISC', eventName, timestamp) + def addTrendingTags(self, tags, timestamp): for tag in tags: ordDic = OrderedDict() #keep fields with the same layout in redis @@ -95,3 +98,6 @@ class Trendings_helper: fp = 0 if fp is None else int(fp.decode('utf8')) to_ret.append([util.getTimestamp(curDate), { 'sightings': sight, 'false_positive': fp}]) return to_ret + + def getTrendingDisc(self, dateS, dateE): + return self.getGenericTrending('TRENDINGS_DISC', dateS, dateE) diff --git a/zmq_subscriber.py b/zmq_subscriber.py index 1698302..9f6983e 100755 --- a/zmq_subscriber.py +++ b/zmq_subscriber.py @@ -145,7 +145,7 @@ def handleContribution(zmq_name, org, contribType, categ, action, pntMultiplier= pnts_to_add = DEFAULT_PNTS_REWARD # if there is a contribution, there is a login (even if ti comes from the API) - users_helper.add_user_login(timestamp, org) + users_helper.add_user_login(nowSec, org) # is a valid contribution if categ is not None: @@ -214,11 +214,15 @@ def handler_conversation(zmq_name, jsonevent): org = jsonpost['org_name'] categ = None action = 'add' + eventName = 'no name or id yet...' handleContribution(zmq_name, org, 'Discussion', None, action, isLabeled=False) + # add Discussion + nowSec = int(time.time()) + trendings_helper.addTrendingDisc(eventName, nowSec) def handler_object(zmq_name, jsondata): print('obj')