# HG changeset patch # User veltr # Date 1380878800 -7200 # Node ID 05c1161fa5017c8ff8098e8084fd9b07abe9f04b # Parent f1f97f1c755774720ec67bbdd66ba9ace42a6215 Added "aggressive filtering" diff -r f1f97f1c7557 -r 05c1161fa501 timeline/js/timeline.js --- a/timeline/js/timeline.js Fri Oct 04 11:25:57 2013 +0200 +++ b/timeline/js/timeline.js Fri Oct 04 11:26:40 2013 +0200 @@ -13,13 +13,13 @@ Tlns.Utils.zeroPad = function(_n) { return (_n < 10 ? "0" : "") + _n; -} +}; Tlns.Utils.SetDefaults = function(_object, _defaults, _options) { var _options = _options || {}; _(_defaults).each(function(_v, _k) { if(/^m(in|ax)_/.test(_k)) { - var _tab = _k.split('_') + var _tab = _k.split('_'); if( typeof _object[_tab[1]] !== "undefined") { var _fn = Math[_tab[0] === "max" ? "min":"max"]; _object[_tab[1]] = _fn(_object[_tab[1]], _v); @@ -55,7 +55,7 @@ monthName: ["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"][_date.getMonth()], shortMonthName: ["jan.","fev.","mar.","avr.","mai","jun.","jul.","aou.","sep.","oct.","nov.","dec."][_date.getMonth()], year: _date.getFullYear() - } + }; return Mustache.to_html(_template, _params); }; @@ -79,7 +79,7 @@ hours: _h, minutes: _m, text: Tlns.Utils.zeroPad(_h) + ':' + Tlns.Utils.zeroPad(_m) - } + }; }; Tlns.Utils.dateFieldProcess = function(_val) { @@ -106,11 +106,13 @@ month: _m, date: _d, text: Tlns.Utils.zeroPad(_d) + '/' + Tlns.Utils.zeroPad(_m) + '/' + _y - } + }; }; /* Defaults */ +/* TOUTE LA CONFIGURATION DE L'APPLI SE FAIT ICI */ + Tlns.Defaults.Timeline = { email: "", token: "", @@ -132,19 +134,19 @@ span : 7 * 86400 * 1000, grid_interval : 86400 * 1000, grid_date_format : '{{dayOfMonth}} {{monthName}}', - min_importance : 0 + min_importance : 3 }, { label : "3 jours", span : 3 * 86400 * 1000, grid_interval : 6 * 3600 * 1000, grid_date_format : '{{^isDayStart}}{{0hours}}h{{0minutes}}{{/isDayStart}}{{#isDayStart}}{{dayOfMonth}} {{shortMonthName}}{{/isDayStart}}', - min_importance : 0 + min_importance : 2 }, { label : "Journée", span : 86400 * 1000, grid_interval : 2 * 3600 * 1000, grid_date_format : '{{^isDayStart}}{{0hours}}h{{0minutes}}{{/isDayStart}}{{#isDayStart}}{{dayOfMonth}} {{shortMonthName}}{{/isDayStart}}', - min_importance : 0 + min_importance : 1 }, { label : "Demi-Journée", span : 6 * 3600 * 1000, @@ -558,9 +560,33 @@ var minT = this.timeFromX(-32), minI = this.timescales[this.level].min_importance; var _visible = _(this.occurrences).filter(function(_occ) { - return (_occ.date >= minT && _occ.date <= _this.end_time && (_occ.importance >= minI)); + _occ.visible = (_occ.date >= minT && _occ.date <= _this.end_time && (_occ.importance >= minI)); + return _occ.visible; }); + /* FILTRAGE SI TROP D'OCCURRENCES PAR UNITE DE TEMPS */ + + var _timescale = this.timescales[this.level], + _offset = new Date().getTimezoneOffset() * 60000, + _grid_width = Math.floor(_timescale.grid_interval * this.current_scale), + _roundstart = Math.floor((this.start_time - _offset) / _timescale.grid_interval) * _timescale.grid_interval + _offset, + _html = ''; + for (var _t = _roundstart; _t < this.end_time; _t += _timescale.grid_interval) { + var items = _(_visible).filter(function(_occ) { + return _occ.date >= _t && _occ.date < _t + _timescale.grid_interval; + }); + if (items && items.length > 1) { + _(items).chain().rest().each(function(_occ) { + _occ.visible = false; + }); + } + } + var _visible = _(_visible).filter(function(_occ) { return _occ.visible; }); + + /* FIN FILTRAGE */ + + /* REORGANISATION DES PICTOS SI TROP NOMBREUX */ + var _moved = true, l = 0; while (_moved && l < 10) { l++; @@ -581,6 +607,8 @@ } } + /* FIN REORGANISATION */ + var _html = Mustache.to_html(Tlns.Templates.Occurrence, { occurrences: _visible });