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(), |
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; |