update: Added grouping of elements in the timeline. It allows to see

more easily of an element appeared multiple times.
pull/29/head
Sami Mokaddem 2017-12-11 14:21:33 +01:00
parent 5de0d31818
commit f2666ef767
2 changed files with 18 additions and 8 deletions

View File

@ -1,6 +1,7 @@
import math, random import math, random
import os import os
import json import json
import copy
import datetime, time import datetime, time
import logging import logging
from collections import OrderedDict from collections import OrderedDict
@ -190,11 +191,10 @@ class Trendings_helper:
obj = {'name': item, 'start': timestamps[0]-ONEDAY, 'end': timestamps[0]} obj = {'name': item, 'start': timestamps[0]-ONEDAY, 'end': timestamps[0]}
for t in timestamps: for t in timestamps:
if t-obj['end'] > ONEDAY: #new entry if t-obj['end'] > ONEDAY: #new entry
to_ret.append(obj) to_ret.append(copy.deepcopy(obj))
obj['start'] = t-ONEDAY obj['start'] = t-ONEDAY
obj['end'] = t obj['end'] = t
else: # contrinue entry else: # contrinue entry
obj['end'] = t obj['end'] = t
to_ret.append(obj) to_ret.append(obj)
return to_ret return to_ret

View File

@ -104,7 +104,7 @@ var typeaheadOption_tag = {
updateLineForLabel(tagLine, tag, undefined, url_getTrendingTag); updateLineForLabel(tagLine, tag, undefined, url_getTrendingTag);
} }
} }
var timeline_option = {}; var timeline_option = {groupOrder: 'content'};
/* FUNCTIONS */ /* FUNCTIONS */
@ -402,23 +402,33 @@ function updateDisc() {
function updateTimeline() { function updateTimeline() {
$.getJSON( url_getGenericTrendingOvertime+"?dateS="+parseInt(dateStart.getTime()/1000)+"&dateE="+parseInt(dateEnd.getTime()/1000), function( data ) { $.getJSON( url_getGenericTrendingOvertime+"?dateS="+parseInt(dateStart.getTime()/1000)+"&dateE="+parseInt(dateEnd.getTime()/1000), function( data ) {
var items = []; var items = [];
var groups = new vis.DataSet();
var dico_groups = {};
var i = 1; var i = 1;
var g = 1;
for (var obj of data) { for (var obj of data) {
if (obj.end == obj.start) { console.log(obj);} var index = dico_groups[obj.name];
if (index == undefined) { // new group
index = groups.add({id: g, content: obj.name});
dico_groups[obj.name] = g;
g++;
}
items.push({ items.push({
id: i, id: i,
content: obj.name, content: obj.name,
start: obj.start*1000, start: obj.start*1000,
end: obj.end*1000 end: obj.end*1000,
group: dico_groups[obj.name]
}); });
i++; i++;
} }
items = new vis.DataSet(items); items = new vis.DataSet(items);
if (timeline === undefined) { // create timeline if (timeline === undefined) { // create timeline
timeline = new vis.Timeline(document.getElementById('timeline'), items, timeline_option); timeline = new vis.Timeline(document.getElementById('timeline'));
} else { // update timeline.setOptions(timeline_option);
timeline.setItems(items);
} }
timeline.setGroups(groups);
timeline.setItems(items);
}); });
} }