timeline/js/timeline.js
changeset 101 05c1161fa501
parent 99 281ef3fd6f84
child 102 2f1ef2ded30c
equal deleted inserted replaced
100:f1f97f1c7557 101:05c1161fa501
    11 
    11 
    12 /* Utility Functions */
    12 /* Utility Functions */
    13 
    13 
    14 Tlns.Utils.zeroPad = function(_n) {
    14 Tlns.Utils.zeroPad = function(_n) {
    15     return (_n < 10 ? "0" : "") + _n;
    15     return (_n < 10 ? "0" : "") + _n;
    16 }
    16 };
    17 
    17 
    18 Tlns.Utils.SetDefaults = function(_object, _defaults, _options) {
    18 Tlns.Utils.SetDefaults = function(_object, _defaults, _options) {
    19     var _options = _options || {};
    19     var _options = _options || {};
    20     _(_defaults).each(function(_v, _k) {
    20     _(_defaults).each(function(_v, _k) {
    21         if(/^m(in|ax)_/.test(_k)) {
    21         if(/^m(in|ax)_/.test(_k)) {
    22             var _tab = _k.split('_')
    22             var _tab = _k.split('_');
    23             if( typeof _object[_tab[1]] !== "undefined") {
    23             if( typeof _object[_tab[1]] !== "undefined") {
    24                 var _fn = Math[_tab[0] === "max" ? "min":"max"];
    24                 var _fn = Math[_tab[0] === "max" ? "min":"max"];
    25                 _object[_tab[1]] = _fn(_object[_tab[1]], _v);
    25                 _object[_tab[1]] = _fn(_object[_tab[1]], _v);
    26             }
    26             }
    27         } else {
    27         } else {
    53         monthNumber: 1+_date.getMonth(),
    53         monthNumber: 1+_date.getMonth(),
    54         "0monthNumber": Tlns.Utils.zeroPad(1+_date.getMonth()),
    54         "0monthNumber": Tlns.Utils.zeroPad(1+_date.getMonth()),
    55         monthName: ["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"][_date.getMonth()],
    55         monthName: ["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"][_date.getMonth()],
    56         shortMonthName: ["jan.","fev.","mar.","avr.","mai","jun.","jul.","aou.","sep.","oct.","nov.","dec."][_date.getMonth()],
    56         shortMonthName: ["jan.","fev.","mar.","avr.","mai","jun.","jul.","aou.","sep.","oct.","nov.","dec."][_date.getMonth()],
    57         year: _date.getFullYear()
    57         year: _date.getFullYear()
    58     }
    58     };
    59     return Mustache.to_html(_template, _params);
    59     return Mustache.to_html(_template, _params);
    60 };
    60 };
    61 
    61 
    62 Tlns.Utils.guid = function() {
    62 Tlns.Utils.guid = function() {
    63     return 'xxxx-xxxx-xxxx-xxxx'.replace(/x/g,function() {
    63     return 'xxxx-xxxx-xxxx-xxxx'.replace(/x/g,function() {
    77     }
    77     }
    78     return {
    78     return {
    79         hours: _h,
    79         hours: _h,
    80         minutes: _m,
    80         minutes: _m,
    81         text: Tlns.Utils.zeroPad(_h) + ':' + Tlns.Utils.zeroPad(_m)
    81         text: Tlns.Utils.zeroPad(_h) + ':' + Tlns.Utils.zeroPad(_m)
    82     }
    82     };
    83 };
    83 };
    84 
    84 
    85 Tlns.Utils.dateFieldProcess = function(_val) {
    85 Tlns.Utils.dateFieldProcess = function(_val) {
    86     var _now = new Date(),
    86     var _now = new Date(),
    87         _y = _now.getFullYear(),
    87         _y = _now.getFullYear(),
   104     return {
   104     return {
   105         year: _y,
   105         year: _y,
   106         month: _m,
   106         month: _m,
   107         date: _d,
   107         date: _d,
   108         text: Tlns.Utils.zeroPad(_d) + '/' + Tlns.Utils.zeroPad(_m) + '/' + _y
   108         text: Tlns.Utils.zeroPad(_d) + '/' + Tlns.Utils.zeroPad(_m) + '/' + _y
   109     }
   109     };
   110 };
   110 };
   111 
   111 
   112 /* Defaults */
   112 /* Defaults */
       
   113 
       
   114 /* TOUTE LA CONFIGURATION DE L'APPLI SE FAIT ICI */
   113 
   115 
   114 Tlns.Defaults.Timeline = {
   116 Tlns.Defaults.Timeline = {
   115     email: "",
   117     email: "",
   116     token: "",
   118     token: "",
   117     container : "timeline",
   119     container : "timeline",
   130     timescales : [{
   132     timescales : [{
   131         label : "Semaine",
   133         label : "Semaine",
   132         span : 7 * 86400 * 1000,
   134         span : 7 * 86400 * 1000,
   133         grid_interval : 86400 * 1000,
   135         grid_interval : 86400 * 1000,
   134         grid_date_format : '{{dayOfMonth}} {{monthName}}',
   136         grid_date_format : '{{dayOfMonth}} {{monthName}}',
   135         min_importance : 0
   137         min_importance : 3
   136     }, {
   138     }, {
   137         label : "3 jours",
   139         label : "3 jours",
   138         span : 3 * 86400 * 1000,
   140         span : 3 * 86400 * 1000,
   139         grid_interval : 6 * 3600 * 1000,
   141         grid_interval : 6 * 3600 * 1000,
   140         grid_date_format : '{{^isDayStart}}{{0hours}}h{{0minutes}}{{/isDayStart}}{{#isDayStart}}{{dayOfMonth}} {{shortMonthName}}{{/isDayStart}}',
   142         grid_date_format : '{{^isDayStart}}{{0hours}}h{{0minutes}}{{/isDayStart}}{{#isDayStart}}{{dayOfMonth}} {{shortMonthName}}{{/isDayStart}}',
   141         min_importance : 0
   143         min_importance : 2
   142     }, {
   144     }, {
   143         label : "Journée",
   145         label : "Journée",
   144         span : 86400 * 1000,
   146         span : 86400 * 1000,
   145         grid_interval : 2 * 3600 * 1000,
   147         grid_interval : 2 * 3600 * 1000,
   146         grid_date_format : '{{^isDayStart}}{{0hours}}h{{0minutes}}{{/isDayStart}}{{#isDayStart}}{{dayOfMonth}} {{shortMonthName}}{{/isDayStart}}',
   148         grid_date_format : '{{^isDayStart}}{{0hours}}h{{0minutes}}{{/isDayStart}}{{#isDayStart}}{{dayOfMonth}} {{shortMonthName}}{{/isDayStart}}',
   147         min_importance : 0
   149         min_importance : 1
   148     }, {
   150     }, {
   149         label : "Demi-Journée",
   151         label : "Demi-Journée",
   150         span : 6 * 3600 * 1000,
   152         span : 6 * 3600 * 1000,
   151         grid_interval : 3600 * 1000,
   153         grid_interval : 3600 * 1000,
   152         grid_date_format : '{{^isDayStart}}{{0hours}}h{{0minutes}}{{/isDayStart}}{{#isDayStart}}{{dayOfMonth}} {{shortMonthName}}{{/isDayStart}}',
   154         grid_date_format : '{{^isDayStart}}{{0hours}}h{{0minutes}}{{/isDayStart}}{{#isDayStart}}{{dayOfMonth}} {{shortMonthName}}{{/isDayStart}}',
   556         _occ.y = _occ.univers.y;
   558         _occ.y = _occ.univers.y;
   557     });
   559     });
   558     var minT = this.timeFromX(-32),
   560     var minT = this.timeFromX(-32),
   559         minI = this.timescales[this.level].min_importance;
   561         minI = this.timescales[this.level].min_importance;
   560     var _visible = _(this.occurrences).filter(function(_occ) {
   562     var _visible = _(this.occurrences).filter(function(_occ) {
   561         return (_occ.date >= minT && _occ.date <= _this.end_time && (_occ.importance >= minI));
   563         _occ.visible = (_occ.date >= minT && _occ.date <= _this.end_time && (_occ.importance >= minI));
   562     });
   564         return _occ.visible;
       
   565     });
       
   566     
       
   567     /* FILTRAGE SI TROP D'OCCURRENCES PAR UNITE DE TEMPS */
       
   568     
       
   569     var _timescale = this.timescales[this.level],
       
   570         _offset = new Date().getTimezoneOffset() * 60000,
       
   571         _grid_width = Math.floor(_timescale.grid_interval * this.current_scale),
       
   572         _roundstart = Math.floor((this.start_time - _offset) / _timescale.grid_interval) * _timescale.grid_interval + _offset,
       
   573         _html = '';
       
   574     for (var _t = _roundstart; _t < this.end_time; _t += _timescale.grid_interval) {
       
   575         var items = _(_visible).filter(function(_occ) {
       
   576             return _occ.date >= _t && _occ.date < _t + _timescale.grid_interval;
       
   577         });
       
   578         if (items && items.length > 1) {
       
   579             _(items).chain().rest().each(function(_occ) {
       
   580                 _occ.visible = false;
       
   581             });
       
   582         }
       
   583     }
       
   584     var _visible = _(_visible).filter(function(_occ) { return _occ.visible; });
       
   585     
       
   586     /* FIN FILTRAGE */
       
   587     
       
   588     /* REORGANISATION DES PICTOS SI TROP NOMBREUX */
   563     
   589     
   564     var _moved = true, l = 0;
   590     var _moved = true, l = 0;
   565     while (_moved && l < 10) {
   591     while (_moved && l < 10) {
   566         l++;
   592         l++;
   567         _moved = false;
   593         _moved = false;
   578                     _visible[_j].x += add;
   604                     _visible[_j].x += add;
   579                 }
   605                 }
   580             }
   606             }
   581         }
   607         }
   582     }
   608     }
       
   609     
       
   610     /* FIN REORGANISATION */
   583     
   611     
   584     var _html = Mustache.to_html(Tlns.Templates.Occurrence, {
   612     var _html = Mustache.to_html(Tlns.Templates.Occurrence, {
   585         occurrences: _visible
   613         occurrences: _visible
   586     });
   614     });
   587     this.$.find('.Tl-Occurrences').html(_html);
   615     this.$.find('.Tl-Occurrences').html(_html);