timeline/js/timeline.js
author veltr
Tue, 22 May 2012 14:55:44 +0200
changeset 65 03bbfd9cd3c6
child 66 37492d1ce841
permissions -rw-r--r--
First commit for Timeline
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
65
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
     1
/*
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
     2
 * Main Timeline code
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
     3
 */
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
     4
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
     5
window.Tlns = {
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
     6
    Utils : {},
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
     7
    Defaults : {},
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
     8
    Templates : {},
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
     9
    Classes : {}
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    10
};
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    11
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    12
/* Utility Functions */
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    13
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    14
Tlns.Utils.SetDefaults = function(_object, _defaults, _options) {
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    15
    var _options = _options || {};
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    16
    _(_defaults).each(function(_v, _k) {
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    17
        if(/^m(in|ax)_/.test(_k)) {
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    18
            var _tab = _k.split('_')
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    19
            if( typeof _object[_tab[1]] !== "undefined") {
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    20
                var _fn = (_tab[0] === "min" ? Math.max : Math.min);
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    21
                _object[_tab[1]] = _fn(_object[_tab[1]], _v);
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    22
            }
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    23
        } else {
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    24
            if( typeof _options[_k] !== "undefined") {
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    25
                _object[_k] = _options[_k];
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    26
            } else {
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    27
                _object[_k] = _v;
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    28
            }
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    29
        }
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    30
    });
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    31
}
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    32
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    33
Tlns.Utils.dateFormat = function(_date, _template) {
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    34
    if (typeof _data !== "object") {
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    35
        _date = new Date(_date);
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    36
    }
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    37
    function zeroPad(_n) {
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    38
        return (_n < 10 ? "0" : "") + _n
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    39
    }
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    40
    var _params = {
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    41
        hours: _date.getHours(),
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    42
        "0hours": zeroPad(_date.getHours()),
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    43
        minutes: _date.getMinutes(),
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    44
        "0minutes": zeroPad(_date.getMinutes()),
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    45
        seconds: _date.getSeconds(),
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    46
        "0seconds": zeroPad(_date.getSeconds()),
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    47
        dayOfWeek: ["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"][_date.getDay()],
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    48
        shortDayOfWeek: ["Dim","Lun","Mar","Mer","Jeu","Ven","Sam"][_date.getDay()],
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    49
        dayOfMonth: _date.getDate(),
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    50
        "0dayOfMonth": zeroPad(_date.getDate()),
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    51
        monthNumber: 1+_date.getMonth(),
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    52
        "0monthNumber": zeroPad(1+_date.getMonth()),
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    53
        monthName: ["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"][_date.getMonth()],
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    54
        shortMonthName: ["jan","fev","mar","avr","mai","jun","jul","aou","sep","oct","nov","dec"][_date.getMonth()],
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    55
        year: _date.getFullYear()
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    56
    }
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    57
    return Mustache.to_html(_template, _params);
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    58
}
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    59
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    60
/* Defaults */
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    61
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    62
Tlns.Defaults.Timeline = {
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    63
    container : "timeline",
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    64
    width : 950,
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    65
    height : 200,
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    66
    url_univers : '',
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    67
    min_width : 400,
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    68
    min_height : 100,
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    69
    main_width : 800,
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    70
    timescales : [{
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    71
        label : "Mois",
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    72
        span : 32 * 86400 * 1000,
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    73
        grid_interval : 5 * 86400 * 1000,
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    74
        grid_date_format : '{{dayOfMonth}} {{shortMonthName}}',
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    75
        start_date_format : '{{dayOfMonth}} {{shortMonthName}}',
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    76
        end_date_format : '{{dayOfMonth}} {{shortMonthName}} {{year}}'
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    77
    }, {
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    78
        label : "Semaine",
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    79
        span : 8 * 86400 * 1000,
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    80
        grid_interval : 86400 * 1000,
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    81
        grid_date_format : '{{shortDayOfWeek}} {{0dayOfMonth}}/{{0monthNumber}}',
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    82
        start_date_format : '{{dayOfMonth}} {{shortMonthName}}',
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    83
        end_date_format : '{{dayOfMonth}} {{shortMonthName}}'
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    84
    }, {
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    85
        label : "2 jours",
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    86
        span : 2 * 86400 * 1000,
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    87
        grid_interval : 8 * 3600 * 1000,
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    88
        grid_date_format : '{{shortDayOfWeek}} {{0dayOfMonth}}/{{0monthNumber}} {{hours}}h',
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    89
        start_date_format : '{{dayOfMonth}} {{shortMonthName}}',
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    90
        end_date_format : '{{dayOfMonth}} {{shortMonthName}}'
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    91
    }, {
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    92
        label : "Demi-Journée",
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    93
        span : 12 * 3600 * 1000,
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    94
        grid_interval : 2 * 3600 * 1000,
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    95
        grid_date_format : '{{hours}}h',
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    96
        start_date_format : '{{dayOfMonth}} {{shortMonthName}} {{hours}}h',
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    97
        end_date_format : '{{dayOfMonth}} {{shortMonthName}} {{hours}}h'
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    98
    }, {
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
    99
        label : "3 Heures",
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   100
        span : 3 * 3600 * 1000,
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   101
        grid_interval : 30 * 60 * 1000,
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   102
        grid_date_format : '{{0hours}}:{{0minutes}}',
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   103
        start_date_format : '{{dayOfMonth}} {{shortMonthName}} {{0hours}}:{{0minutes}}',
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   104
        end_date_format : '{{0hours}}:{{0minutes}}'
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   105
    }, {
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   106
        label : "1 Heure",
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   107
        span : 80 * 60 * 1000,
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   108
        grid_interval : 15 * 60 * 1000,
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   109
        grid_date_format : '{{0hours}}:{{0minutes}}',
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   110
        start_date_format : '{{dayOfMonth}} {{shortMonthName}} {{0hours}}:{{0minutes}}',
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   111
        end_date_format : '{{0hours}}:{{0minutes}}'
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   112
    }],
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   113
    level: 0,
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   114
    central_time: 0,
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   115
    sync_now: true,
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   116
    url_occurrences: '',
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   117
    occurrences: {}
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   118
}
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   119
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   120
for (var _i = 0; _i < Tlns.Defaults.Timeline.timescales.length; _i++) {
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   121
    Tlns.Defaults.Timeline.timescales[_i].level = _i;
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   122
}
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   123
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   124
/* Templates */
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   125
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   126
Tlns.Templates.Timeline = '<div class="Tl-TopBar"><div class="Tl-TopBar-Button Tl-Border-Right"><div class="Tl-TopBar-AddButton"></div></div><div class="Tl-TopBar-Spacer Tl-Border-Right"></div>'
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   127
    + '<div class="Tl-TopBar-Button Tl-Border-Right"><div class="Tl-TopBar-PreviousButton"></div></div><div class="Tl-TopBar-TimeSpan Tl-TopBar-TextBtn Tl-Border-Right">--/--</div>'
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   128
    + '<div class="Tl-TopBar-Button Tl-Border-Right"><div class="Tl-TopBar-SyncButton"></div></div><div class="Tl-TopBar-Button Tl-Border-Right"><div class="Tl-TopBar-NextButton"></div></div><div class="Tl-TopBar-Spacer Tl-Border-Right"></div>'
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   129
    + '<div class="Tl-TopBar-Timescales">{{#timescales}}<div class="Tl-TopBar-Button Tl-TopBar-TextBtn Tl-Border-Right" data-level="{{level}}">{{label}}</div>{{/timescales}}</div></div>'
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   130
    + '<div class="Tl-BottomPart"><ul class="Tl-UniversLabels"></ul><div class="Tl-MainPart"><div class="Tl-Grid"></div></div></div>';
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   131
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   132
Tlns.Templates.Univers = '<span class="Tl-UniversText">{{title}}</span>'
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   133
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   134
/* Classes */
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   135
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   136
Tlns.Classes.Timeline = function(_options) {
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   137
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   138
    /* Setting Defaults */
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   139
    Tlns.Utils.SetDefaults(this, Tlns.Defaults.Timeline, _options);
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   140
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   141
    /* Setting container CSS */
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   142
    this.$ = $('#' + this.container);
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   143
    this.$.addClass('Tl-Main');
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   144
    this.$.css({
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   145
        width : this.width + "px",
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   146
        height : this.height + "px"
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   147
    });
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   148
    this.$.html(Mustache.to_html(Tlns.Templates.Timeline, this));
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   149
    
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   150
    this.main_height = this.height - this.$.find('.Tl-TopBar').outerHeight();
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   151
    this.$.find('.Tl-BottomPart').css("height", this.main_height + "px");
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   152
    this.$.find('.Tl-MainPart').css("width", this.main_width + "px");
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   153
    var _o = this.$.find('.Tl-MainPart').offset();
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   154
    this.dragging_bounds = {
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   155
        left: _o.left,
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   156
        top: _o.top,
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   157
        right: _o.left + this.$.find('.Tl-MainPart').outerWidth(),
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   158
        bottom: _o.top + this.$.find('.Tl-MainPart').outerHeight(),
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   159
    };
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   160
    
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   161
    this.setLevel(this.level);
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   162
    
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   163
    var _this = this;
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   164
    this.$.find('.Tl-TopBar-Timescales>div').click(function() {
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   165
        _this.setLevel($(this).attr("data-level"));
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   166
    });
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   167
    
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   168
    this.$.find('.Tl-TopBar-SyncButton').click(function() {
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   169
        _this.sync_now = !_this.sync_now;
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   170
        _this.drawGrid();
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   171
    })
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   172
    
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   173
    this.$.find('.Tl-TopBar-PreviousButton').click(function() {
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   174
        _this.offsetTime(-_this.timescales[_this.level].span / 4);
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   175
    });
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   176
    
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   177
    this.$.find('.Tl-TopBar-NextButton').click(function() {
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   178
        _this.offsetTime(_this.timescales[_this.level].span / 4);
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   179
    });
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   180
    
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   181
    this.$.find('.Tl-MainPart').mousedown(function(_event) {
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   182
        _this.onMouseDown(_event);
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   183
        return false;
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   184
    });
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   185
    
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   186
    this.$.find('.Tl-MainPart').mousemove(function(_event) {
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   187
        _this.onMouseMove(_event);
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   188
        return false;
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   189
    });
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   190
    
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   191
    this.$.find('.Tl-MainPart').mouseup(function(_event) {
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   192
        _this.onMouseUp(_event);
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   193
        return false;
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   194
    });
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   195
    
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   196
    this.throttledSetTime = _.throttle(function(_time) {
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   197
        _this.setTime(_time)
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   198
    }, 150);
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   199
    
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   200
    /* Loading Univers */
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   201
    $.getJSON(this.url_univers, function(_data) {
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   202
        _this.onUniversLoaded(_data);
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   203
    });
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   204
}
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   205
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   206
Tlns.Classes.Timeline.prototype.onMouseDown = function(_event) {
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   207
    this.mouse_down = true;
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   208
    this.is_dragging = false;
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   209
    this.start_pos = {
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   210
        x: _event.pageX,
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   211
        y: _event.pageY
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   212
    };
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   213
    var _target = $(_event.target);
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   214
    while (!_target.hasClass("Tl-Main") && _target.length) {
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   215
        if (_target.hasClass("Tl-MainPart")) {
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   216
            this.dragging_type = "timeline";
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   217
            this.time_at_start = this.central_time;
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   218
            break;
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   219
        }
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   220
        _target = _target.parent();
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   221
    }
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   222
}
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   223
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   224
Tlns.Classes.Timeline.prototype.onMouseUp = function(_event) {
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   225
    this.mouse_down = false;
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   226
    this.is_dragging = false;
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   227
}
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   228
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   229
Tlns.Classes.Timeline.prototype.onMouseMove = function(_event) {
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   230
    if (this.mouse_down) {
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   231
        this.is_dragging = true;
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   232
        if (_event.pageX > this.dragging_bounds.left
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   233
            && _event.pageX < this.dragging_bounds.right
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   234
            && _event.pageY > this.dragging_bounds.top
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   235
            && _event.pageY < this.dragging_bounds.bottom) {
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   236
            switch (this.dragging_type) {
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   237
                case "timeline":
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   238
                    var _newTime = Math.floor(this.time_at_start + ( this.start_pos.x - _event.pageX ) / this.current_scale);
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   239
                    this.throttledSetTime(_newTime);
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   240
                break;
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   241
            }
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   242
        } else {
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   243
            this.onMouseUp(_event);
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   244
        }
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   245
    }
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   246
}
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   247
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   248
Tlns.Classes.Timeline.prototype.onUniversLoaded = function(_data) {
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   249
    this.univers = [];
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   250
    if(_data.length) {
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   251
        this.univers_height = Math.floor(this.main_height / _data.length);
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   252
    }
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   253
    for(var _i = 0; _i < _data.length; _i++) {
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   254
        this.univers.push(new Tlns.Classes.Univers(_data[_i], this, _i));
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   255
    }
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   256
}
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   257
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   258
Tlns.Classes.Timeline.prototype.offsetTime = function(_timeOffset) {
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   259
    this.setTime(this.central_time + _timeOffset);
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   260
}
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   261
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   262
Tlns.Classes.Timeline.prototype.setTime = function(_centralTime) {
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   263
    this.sync_now = false;
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   264
    this.central_time = _centralTime;
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   265
    this.drawGrid();
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   266
}
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   267
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   268
Tlns.Classes.Timeline.prototype.setLevel = function(_level) {
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   269
    if (_level >= 0 && _level < this.timescales.length) {
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   270
        this.$.find('.Tl-TopBar-Timescales>div').each(function() {
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   271
            var _el = $(this);
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   272
            if (_el.attr("data-level") == _level) {
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   273
                _el.addClass("active");
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   274
            } else {
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   275
                _el.removeClass("active");
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   276
            }
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   277
        });
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   278
        this.level = _level;
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   279
        this.drawGrid();
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   280
    }
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   281
}
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   282
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   283
Tlns.Classes.Timeline.prototype.drawGrid = function() {
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   284
    var _now = new Date().valueOf();
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   285
    if (this.sync_now) {
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   286
        this.central_time = _now;
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   287
        this.$.find('.Tl-TopBar-SyncButton').addClass("active");
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   288
    } else {
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   289
        this.$.find('.Tl-TopBar-SyncButton').removeClass("active");
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   290
    }
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   291
    var _timescale = this.timescales[this.level],
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   292
        _offset = new Date().getTimezoneOffset() * 60000;
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   293
    this.current_scale = this.main_width / (_timescale.span);
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   294
    var _tmin = this.central_time - (_timescale.span / 2),
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   295
        _tmax = this.central_time + (_timescale.span / 2),
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   296
        _grid_width = Math.floor(_timescale.grid_interval * this.current_scale),
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   297
        _roundstart = Math.floor((_tmin - _offset) / _timescale.grid_interval) * _timescale.grid_interval + _offset,
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   298
        _html = '';
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   299
    this.$.find('.Tl-TopBar-TimeSpan').html(Tlns.Utils.dateFormat(_tmin, _timescale.start_date_format) + ' - ' + Tlns.Utils.dateFormat(_tmax, _timescale.end_date_format));
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   300
    for (var _t = _roundstart; _t < _tmax; _t += _timescale.grid_interval) {
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   301
        _html += '<div class="Tl-Grid-Column" style="width:' + _grid_width + 'px; left: ' + this.current_scale * (_t - this.central_time) + 'px">'
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   302
        + '<div class="Tl-Grid-Label">' + Tlns.Utils.dateFormat(_t, _timescale.grid_date_format) + '</div></div>';
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   303
    }
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   304
/*
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   305
 
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   306
    for (var _t = _roundstart; _t < _tmax; _t += _timescale.grid_interval) {
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   307
        var _isMajor = !(Math.floor((_t - _offset) / _timescale.grid_interval) % _timescale.major_interval);
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   308
        _html += '<div class="Tl-Grid-Column' + ( _isMajor ? ' Tl-Grid-Major' : '' ) + '" style="width:' + _grid_width + 'px; left: ' + _scale * (_t - this.central_time) + 'px">'
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   309
        + ( _isMajor ? '<div class="Tl-Grid-Label">' + Tlns.Utils.dateFormat(_t, _timescale.date_format) + '</div>' : '' ) + '</div>';
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   310
    }
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   311
*/
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   312
    if (_tmin <= _now && _tmax >= _now) {
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   313
        _html += '<div class="Tl-Grid-Now" style="left: ' + this.current_scale * (_now - this.central_time) + 'px"></div>'
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   314
    }
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   315
    this.$.find('.Tl-Grid').html(_html);
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   316
}
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   317
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   318
Tlns.Classes.Timeline.prototype.drawOccurrences = function() {
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   319
    
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   320
}
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   321
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   322
Tlns.Classes.Univers = function(_data, _timeline, _index) {
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   323
    this.id = _data.id;
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   324
    this.index = _index;
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   325
    this.title = _data.nom;
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   326
    this.mainCharacter = _data.personnage;
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   327
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   328
    this.$label = $('<li>').css({
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   329
        height : _timeline.univers_height + "px"
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   330
    }).html(Mustache.to_html(Tlns.Templates.Univers, this))
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   331
    .addClass((_index % 2) ? 'Tl-Line-Odd' : 'Tl-Line-Even');
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   332
    
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   333
    _timeline.$.find('.Tl-UniversLabels').append(this.$label);
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   334
    var _txt = _data.nom,
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   335
        _span = this.$label.find('span');
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   336
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   337
    while (_span.outerWidth() > (_timeline.width - _timeline.main_width) && _txt) {
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   338
        _txt = _txt.substr(0, _txt.length - 1);
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   339
        _span.html(_txt + '&hellip;');
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   340
    }
03bbfd9cd3c6 First commit for Timeline
veltr
parents:
diff changeset
   341
}