diff -r 4fbe94af93e8 -r 5ef3bfef0bff cms/app-client/app/components/visu-chrono.js --- a/cms/app-client/app/components/visu-chrono.js Fri Nov 04 19:03:25 2016 +0100 +++ b/cms/app-client/app/components/visu-chrono.js Sun Nov 06 03:44:16 2016 +0100 @@ -4,89 +4,35 @@ export default Ember.Component.extend({ range: [], + rawdatestats: null, decades: Ember.computed('range', function() { var range = this.get('range'); - return _.range(Math.floor(range[0]/10)*10, Math.floor(range[1]/10)*10, 10); + return _.range(Math.floor(range[0]/10)*10, (Math.floor(range[1]/10)+1)*10, 10); }), + datestats: Ember.computed('rawdatestats.[]', function() { + var res = {}; + this.get('rawdatestats').forEach(function(s) { + res[s.get('id')] = s.get('count'); + }); + return Ember.Object.create(res); + }), + + counts: Ember.computed.mapBy('rawdatestats', 'count'), + maxCount: Ember.computed.max('counts'), + minCount: Ember.computed.min('counts'), + filter: Ember.inject.service(), - dateObserver: Ember.observer('date', function() { - var self = this; - this.$('li').removeClass('highlighted'); - this.get('date').forEach(function(date) { - self.$('li#' + date).addClass('highlighted'); - }); - }), - - date: Ember.computed('filter.date', { - get: function() { - const dates = this.get('filter').get('date'); - console.log("get DATES", dates); - if(dates === null) { - return []; - } - const res = _.reduce(dates, function(res, d) { - let m = d.match(/^(\d+)(?:-(\d+))?$/); - if(m) { - let start = parseInt(m[1]); - let end = parseInt(m[2]); - if(isNaN(end)) { - res.push(parseInt(m[1])); - } else { - res = res.concat(_.range(start,end+1)); - } - } - return res; - }, []).sort(); - console.log("GET DATE", res); - return res; - }, - set: function(key, values) { - var srcDateList = _.clone(values).sort(); - let start = null; - let end = null; - var pushValues = function(s,e,valuesList) { - if(s === e) { - valuesList.push(s.toString()); - } else { - valuesList.push(s.toString()+"-"+e.toString()); - } - }; - let dateList = _.reduce(srcDateList, function(res, d, i) { - if(start === null) { - start = end = d; - } - if(d > (end + 1)) { - pushValues(start, end, res); - start = end = d; - } else { - end = d; - } - if(i === (srcDateList.length - 1)) { - pushValues(start, end, res); - } - return res; - }, []); - console.log("SET DATE",key, values, dateList); - if(dateList.length === 0) { - dateList = null; - } - this.get('filter').set('date', dateList); - return srcDateList; - } - }), + date: Ember.computed.alias('filter.dateList'), elementId: "chrono-table", didInsertElement: function(){ + var self = this; - if (this.get('date') !== null){ - this.highlightQuery(this.get('date')); - } - var isMouseDown = false, isHighlighted, didHighlight, @@ -98,6 +44,9 @@ isMouseDown = true; var element = parseInt(Ember.$(this).attr('id')); + if(!_.inRange(element, self.get('range')[0], self.get('range')[1]+1)) { + return false; + } var elements = [element]; if(event.shiftKey) { while(previousElement !== element) { @@ -155,16 +104,6 @@ }); }, - highlightQuery: function(dates){ - console.log("highlightQuery", dates); - if(dates === null) { - return; - } - dates.map(function(date){ - Ember.$("#" + date).toggleClass("highlighted", true); - }); - }, - actions : { selectDecade: function(decade) {