integration/js/editor.js
author veltr
Tue, 06 Nov 2012 18:48:59 +0100
changeset 39 d3d8a88878ed
parent 32 47f9a2d63a0a
child 41 3ec2343f2b85
permissions -rw-r--r--
Added validation before publication
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
32
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
     1
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
     2
IriSP.hc_messages = {
39
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
     3
    Duration_ : "Durée :",
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
     4
    duration_ : "durée :",
32
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
     5
    edit_segment: "Éditer le segment",
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
     6
    segment_down: "Descendre le segment",
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
     7
    segment_up: "Remonter le segment",
39
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
     8
    delete_segment: "Supprimer le segment",
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
     9
    clone_segment: "Cloner le segment",
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    10
    From_: "De :",
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    11
    to_: "à :",
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    12
    segment_title_placeholder: "Segment sans titre",
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    13
    mashup_title_placeholder: "Hashcut sans titre"
32
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
    14
}
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
    15
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
    16
IriSP.Hashcut = function(options) {
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
    17
    
32
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
    18
    
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
    19
    /* Load Media List */
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
    20
    
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
    21
    var directory = new IriSP.Model.Directory(),
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
    22
        project = directory.remoteSource({
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
    23
            url: options.url,
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
    24
            serializer: IriSP.serializers.medialist
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
    25
        }),
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
    26
        mashup = new IriSP.Model.Mashup(false, project),
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
    27
        mediatemplate = _.template('<li class="item-video" data-media-id="<%= id %>"><img src="<%= thumbnail %>" alt="<%= title %>" />'
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
    28
            + '<span class="video-info"><span class="title-video"><%= title %></span><span class="author"><%= description %></span>'
39
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    29
            + '<span class="time-length"><%= IriSP.hc_messages.Duration_ %> <span><%= duration.toString() %></span></span></span></li>'),
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
    30
        segmenttemplate = _.template('<li class="item-video" data-segment-id="<%= annotation.id %>" data-media-id="<%= annotation.getMedia().id %>">'
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
    31
            + '<img src="<%= annotation.getMedia().thumbnail %>" alt="<%= annotation.getMedia().title %>" />'
39
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    32
            + '<div class="validate <%= annotation.status %>"><div class="validate-tooltip"><ul><li><%= annotation.status_messages.join("</li><li>") %></li></ul></div></div><span class="video-info"><span class="title-video"><%= annotation.getMedia().title %></span>'
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
    33
            + '<span class="subtitle"><%= annotation.title %></span><span class="duration"><%= annotation.begin.toString() %> - <%= annotation.end.toString() %> (<%= annotation.getDuration().toString() %>)</span>'
32
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
    34
            + '<ul class="tools"><li><a class="edit" href="#" title="<%= IriSP.hc_messages.edit_segment %>"></a></li><li><a class="bottom" href="#" title="<%= IriSP.hc_messages.segment_down %>"></a></li>'
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
    35
            + '<li><a class="top" href="#" title="<%= IriSP.hc_messages.segment_up %>"></a></li><li><a class="delete" href="#" title="<%= IriSP.hc_messages.delete_segment %>"></a></li></ul></span></li>'),
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
    36
        viztemplate = _.template('<div class="frise-segment" data-segment-id="<%= segmentid %>" style="background-color:<%= color %>; left:<%= left %>%; width:<%= width %>%;"></div>'),
29
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
    37
        intervaltemplate = _.template('<span class="frise-indication" style="left:<%= left %>%;"><%= time.toString() %></span>'),
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
    38
        mediasegmenttemplate = _.template('<div class="media-segments-list"><div class="media-segment">'
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
    39
            + '<div class="media-section media-segment-section" style="left:<%= left %>px; width:<%= width %>px; background:<%= annotation.getMedia().color %>"></div>'
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
    40
            + '<div class="media-section media-current-section" style="left:<%= currentleft %>px; width:<%= currentwidth %>px;"><div class="media-current-section-inner"></div></div>'
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
    41
            + '<div class="popin media-segment-popin" style="left:<%= popleft %>px"><img style="left:<%= pointerpos %>px;" class="pointer" src="img/popin-triangle.png" alt="" /><div class="popin-content">'
39
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    42
            + '<h3><%= annotation.title %></h3><a href="#" class="button reprendre-segment" data-segment-id="<%= annotation.id %>"><%= IriSP.hc_messages.clone_segment %></a>'
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    43
            + '<p><%= IriSP.hc_messages.From_ %> <span><%= annotation.begin.toString() %></span> <%= IriSP.hc_messages.to_ %> <span><%= annotation.end.toString() %></span> (<%= IriSP.hc_messages.duration_ %> <span><%= annotation.getDuration().toString() %></span>)</p>'
29
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
    44
            + '</div></div></div></div>');
39
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    45
    
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    46
    /* Validation of segments and mashup */
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    47
    
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    48
    var segmentcritical = [
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    49
        {
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    50
            validate: function(_s) {
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    51
                var _d = _s.getDuration();
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    52
                return (_d > 1000 && _d < 180000);
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    53
            },
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    54
            message: "La durée du segment doit être comprise entre 1 seconde et trois minutes"
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    55
        },
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    56
        {
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    57
            validate: function(_s) {
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    58
                return (!!_s.title && _s.title !== IriSP.hc_messages.segment_title_placeholder);
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    59
            },
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    60
            message: "Un titre doit être donné au segment"
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    61
        }
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    62
    ];
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    63
    var segmentwarning = [
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    64
        {
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    65
            validate: function(_s) {
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    66
                return (_s.description);
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    67
            },
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    68
            message: "Il est recommandé de donner une description au segment"
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    69
        }
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    70
    ];
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    71
    
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    72
    var mashupcritical = [
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    73
        {
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    74
            validate: function(_m) {
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    75
                return _m.segments.length > 2;
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    76
            },
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    77
            message: "Un hashcut doit être composé d'au moins trois segments"
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    78
        },
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    79
        {
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    80
            validate: function(_m) {
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    81
                return (!!_m.title && _m.title !== IriSP.hc_messages.mashup_title_placeholder);
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    82
            },
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    83
            message: "Un titre doit être donné au hashcut"
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    84
        }
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    85
    ];
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    86
    var mashupwarning = [
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    87
        {
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    88
            validate: function(_m) {
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    89
                return !!_m.description
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    90
            },
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    91
            message: "Il est recommandé de donner une description au hashcut"
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    92
        }
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    93
    ];
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
    94
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
    95
    /* Fill left column with Media List */
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
    96
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
    97
    project.onLoad(function() {
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
    98
        var html = '';
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
    99
        project.getMedias().forEach(function(_m) {
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   100
            html += mediatemplate(_m);
13
42c59d09670e display media list
veltr
parents: 12
diff changeset
   101
        });
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   102
        $(".col-left .list-video").html(html);
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   103
    });
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   104
    
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   105
    /* Search Media with left column form */
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   106
    
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   107
    $(".col-left input").on("keyup change input paste", function() {
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   108
        var val = $(this).val();
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   109
        if (val) {
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   110
            var find = IriSP.Model.regexpFromTextOrArray(val, true),
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   111
                replace = IriSP.Model.regexpFromTextOrArray(val, false);
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   112
        }
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   113
        $(".col-left .item-video").each(function() {
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   114
            var li = $(this),
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   115
                title = $(this).find(".title-video"),
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   116
                titletext = title.text();
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   117
            if (val && find.test(titletext)) {
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   118
                title.html(titletext.replace(replace, '<span style="background: yellow;">$1</span>'));
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   119
                li.show();
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   120
            } else {
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   121
                title.text(titletext);
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   122
                if (val) {
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   123
                    li.hide();
13
42c59d09670e display media list
veltr
parents: 12
diff changeset
   124
                } else {
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   125
                    li.show();
13
42c59d09670e display media list
veltr
parents: 12
diff changeset
   126
                }
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   127
            }
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   128
        })
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   129
    });
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   130
    
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   131
    /* Fill right column when mashup is updated */
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   132
   
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   133
    function setPointerToCurrentAnnotation() {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   134
        if (mashupCurrentAnnotation) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   135
            var p = (mashupCurrentAnnotation.begin + mashupCurrentAnnotation.end) / (2 * mashup.duration);
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   136
            $(".mashup-description .pointer").css("left", (100 * p) + "%");
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   137
        }
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   138
    }
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   139
    
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   140
    function updateMashupUI() {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   141
        var listhtml = '', vizhtml = '', t = 0, k = mashup.duration ? (100 / mashup.duration) : 0;
39
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   142
        var critical = false, warning = false, messages = [];
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   143
        mashup.segments.forEach(function(_s) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   144
            listhtml += segmenttemplate(_s);
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   145
            var vizdata = {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   146
                left: k * t,
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   147
                width: k * _s.duration,
32
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   148
                color: _s.getMedia().color,
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   149
                segmentid: _s.annotation.id
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   150
            }
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   151
            vizhtml += viztemplate(vizdata);
39
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   152
            if (_s.annotation.status === "critical") {
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   153
                critical = true;
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   154
            }
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   155
            t += _s.duration.milliseconds;
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   156
        });
39
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   157
        if (critical) {
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   158
            messages.push("Certains segments ne sont pas valides");
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   159
        }
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   160
        
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   161
        _(mashupcritical).each(function(sc) {
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   162
            if (!sc.validate(mashup)) {
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   163
                critical = true;
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   164
                messages.push(sc.message);
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   165
            }
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   166
        });
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   167
        _(mashupwarning).each(function(sc) {
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   168
            if (!sc.validate(mashup)) {
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   169
                warning = true;
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   170
                messages.push(sc.message);
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   171
            }
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   172
        });
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   173
        mashup.status = critical ? "critical" : (warning ? "warning" : "valid");
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   174
        if (!messages.length) {
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   175
            messages.push("Le hashcut est valide !");
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   176
        }
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   177
        $(".publier-button").toggleClass("disable", critical);
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   178
        
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   179
        $(".liste-segment .validate").removeClass("critical warning valid").addClass(mashup.status);
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   180
        $(".liste-segment .validate-tooltip").html("<ul><li>" + messages.join("</li><li>")+"</li></ul>");
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   181
        
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   182
        var intervals = [ 1000, 2000, 5000, 10000, 30000, 60000, 120000, 300000, 600000, 900000, 1800000, 3600000, 7200000 ];
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   183
        
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   184
        function createIntervals(maxn) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   185
            for (var i = 0; i < intervals.length; i++) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   186
                if (mashup.duration / intervals[i] <= maxn) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   187
                    var html = '';
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   188
                    for (var j = intervals[i]; j < mashup.duration; j += intervals[i]) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   189
                        html += intervaltemplate({ left: k * j, time: new IriSP.Model.Time(j) });
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   190
                    }
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   191
                    return html;
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   192
                }
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   193
            }
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   194
            return "";
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   195
        }
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   196
        
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   197
        $(".col-right .list-video").html(listhtml).find(".item-video:last-child .bottom, .item-video:first-child .top").addClass("disable");
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   198
        $(".mashup-total-duration").text(mashup.duration.toString());
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   199
        $(".frise-segments").html(vizhtml);
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   200
        $(".col-right .frise-indications").html(createIntervals(4));
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   201
        $(".bloc-pvw .frise-indications").html(createIntervals(8));
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   202
        highlightCurrentSegment();
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   203
        if (currentMedia === mashup) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   204
            $(".Ldt-Ctrl-Time-Total").text(currentMedia.duration.toString());
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   205
            if (mashupTimecode > mashup.duration) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   206
                mashup.setCurrentTime(mashup.duration);
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   207
            }
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   208
            changeCurrentAnnotation();
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   209
            setPointerToCurrentAnnotation();
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   210
        }
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   211
    }
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   212
    
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   213
    mashup.on("change",updateMashupUI);
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   214
    
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   215
    /* Slider */
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   216
   
23
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   217
    var timeSlider = $(".Ldt-Slider"),
29
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   218
        timeSliderContainer = $(".Ldt-Slider-Container"),
23
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   219
        slidersRange = 920;
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   220
    timeSlider.slider({
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   221
        range: "min",
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   222
        value: 0,
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   223
        min: 0,
23
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   224
        max: slidersRange,
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   225
        slide: function(event, ui) {
23
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   226
            if (currentMedia) {
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   227
                var t = currentMedia.duration * ui.value / slidersRange;
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   228
                currentMedia.setCurrentTime(t);
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   229
            }
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   230
        }
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   231
    });
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   232
    
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   233
    var timeSliderHandle = timeSlider.find('.ui-slider-handle'),
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   234
        timeSliderMaximized = false,
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   235
        timeSliderTimeoutId = false,
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   236
        timeSliderMinimizedHeight = 4,
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   237
        timeSliderMaximizedHeight = 10,
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   238
        timeSliderTimeoutDuration = 1500,
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   239
        timeTooltip = $(".Ldt-Slider-Time");
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   240
    
29
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   241
    timeSliderContainer.css(calculateSliderCss(timeSliderMinimizedHeight));
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   242
    timeSliderHandle.css(calculateHandleCss(timeSliderMinimizedHeight));
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   243
    
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   244
    function timeSliderMouseOver() {
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   245
        if (timeSliderTimeoutId) {
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   246
            window.clearTimeout(timeSliderTimeoutId);
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   247
            timeSliderTimeoutId = false;
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   248
        }
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   249
        if (!timeSliderMaximized) {
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   250
           timeSliderAnimateToHeight(timeSliderMaximizedHeight);
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   251
           timeSliderMaximized = true;
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   252
        }
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   253
    }
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   254
    
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   255
    function timeSliderMouseOut() {
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   256
        timeTooltip.hide();
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   257
        if (timeSliderTimeoutId) {
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   258
            clearTimeout(timeSliderTimeoutId);
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   259
            timeSliderTimeoutId = false;
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   260
        }
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   261
        timeSliderTimeoutId = setTimeout(function() {
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   262
            if (timeSliderMaximized) {
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   263
                timeSliderAnimateToHeight(timeSliderMinimizedHeight);
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   264
                timeSliderMaximized = false;
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   265
            }
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   266
            timeSliderTimeoutId = false;
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   267
        }, timeSliderTimeoutDuration);
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   268
    }
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   269
    
29
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   270
    timeSliderContainer
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   271
        .mouseover(function() {
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   272
            timeTooltip.show();
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   273
            timeSliderMouseOver();
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   274
        })
29
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   275
        .mouseout(timeSliderMouseOut);
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   276
    timeSlider.mousemove(function(_e) {
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   277
            var _x = _e.pageX - timeSlider.offset().left,
23
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   278
                _t = new IriSP.Model.Time(
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   279
                );
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   280
            timeTooltip.text(_t.toString()).css("left",_x);
15
56937307d7f4 cleaning css
veltr
parents: 13
diff changeset
   281
        });
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   282
    
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   283
    $(".Ldt-Ctrl").mouseover(timeSliderMouseOver).mouseout(timeSliderMouseOut);
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   284
    
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   285
    function timeSliderAnimateToHeight(_height) {
29
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   286
        timeSliderContainer.stop().animate(
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   287
            calculateSliderCss(_height),
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   288
            500,
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   289
            function() {
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   290
                IriSP.jQuery(this).css("overflow","visible");
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   291
            });
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   292
        timeSliderHandle.stop().animate(
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   293
            calculateHandleCss(_height),
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   294
            500,
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   295
            function() {
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   296
                IriSP.jQuery(this).css("overflow","visible");
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   297
            });
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   298
    }
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   299
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   300
    function calculateSliderCss(_size) {
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   301
        return {
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   302
            height: _size + "px",
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   303
            "margin-top": (timeSliderMinimizedHeight - _size) + "px"
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   304
        };
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   305
    }
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   306
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   307
    function calculateHandleCss(_size) {
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   308
        return {
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   309
            height: (2 + _size) + "px",
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   310
            width: (2 + _size) + "px",
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   311
            "margin-left": -Math.ceil(2 + _size / 2) + "px" 
18
c85b323f5174 Modifications to home
veltr
parents: 15
diff changeset
   312
        }
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   313
    }
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   314
    
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   315
    /* Controller Widget */
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   316
   
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   317
    var volBlock = $(".Ldt-Ctrl-Volume-Control");
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   318
    
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   319
    $('.Ldt-Ctrl-Sound')
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   320
        .click(function() {
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   321
            if (currentMedia) {
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   322
                currentMedia.setMuted(!currentMedia.getMuted());
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   323
            }
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   324
        })
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   325
        .mouseover(function() {
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   326
            volBlock.show();
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   327
        })
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   328
        .mouseout(function() {
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   329
            volBlock.hide();
18
c85b323f5174 Modifications to home
veltr
parents: 15
diff changeset
   330
        });
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   331
    volBlock.mouseover(function() {
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   332
        volBlock.show();
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   333
    }).mouseout(function() {
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   334
        volBlock.hide();
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   335
    });
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   336
    
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   337
    var volBar = $(".Ldt-Ctrl-Volume-Bar");
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   338
    
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   339
    function ctrlVolumeUpdater() {
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   340
        if (currentMedia) {
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   341
            var _muted = currentMedia.getMuted(),
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   342
                _vol = currentMedia.getVolume();
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   343
            if (_vol === false) {
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   344
                _vol = .5;
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   345
            }
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   346
            var _soundCtl = $(".Ldt-Ctrl-Sound");
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   347
            _soundCtl.removeClass("Ldt-Ctrl-Sound-Mute Ldt-Ctrl-Sound-Half Ldt-Ctrl-Sound-Full");
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   348
            if (_muted) {        
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   349
                _soundCtl.attr("title", "Activer le son")
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   350
                    .addClass("Ldt-Ctrl-Sound-Mute");    
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   351
            } else {
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   352
                _soundCtl.attr("title", "Couper le son")
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   353
                    .addClass(_vol < .5 ? "Ldt-Ctrl-Sound-Half" : "Ldt-Ctrl-Sound-Full" )
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   354
            }
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   355
            volBar.slider("value", _muted ? 0 : 100 * _vol);
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   356
            volBar.attr("title",'Volume : ' + Math.floor(100 * _vol) + '%');
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   357
        }
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   358
    }
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   359
    
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   360
    volBar.slider({
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   361
        slide: function(event, ui) {
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   362
            if (currentMedia) {
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   363
                currentMedia.setVolume(ui.value / 100);
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   364
            }
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   365
        }
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   366
    });
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   367
    
23
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   368
    $(".Ldt-Ctrl-Play").click(function() {
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   369
        if (currentMedia) {
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   370
            if (currentMedia.getPaused()) {        
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   371
                currentMedia.play();
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   372
            } else {
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   373
                currentMedia.pause();
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   374
            }
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   375
        }
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   376
    });
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   377
    
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   378
    $(".Ldt-Ctrl-SetIn").click(function() {
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   379
        if (currentMedia && currentSegment) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   380
            currentSegment.setBegin(currentMedia.getCurrentTime());
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   381
        }
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   382
    });
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   383
    $(".Ldt-Ctrl-SetOut").click(function() {
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   384
        if (currentMedia && currentSegment) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   385
            currentSegment.setEnd(currentMedia.getCurrentTime());
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   386
        }
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   387
    });
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   388
    
23
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   389
    /* Slice Widget */
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   390
   
23
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   391
    var sliceSlider = $(".Ldt-Slice"),
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   392
        sliceStartTime;
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   393
    
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   394
    sliceSlider.slider({
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   395
        range: true,
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   396
        values: [0, slidersRange],
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   397
        min: 0,
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   398
        max: slidersRange,
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   399
        start: function() {
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   400
            if (currentMedia) {
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   401
                if (!currentMedia.getPaused()) {
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   402
                    currentMedia.pause();
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   403
                }
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   404
            }
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   405
        },
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   406
        slide: function(event, ui) {
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   407
            if (currentMedia && currentSegment) {
23
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   408
                var t = currentMedia.duration * ui.value / slidersRange;
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   409
                if (ui.value === ui.values[0]) {
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   410
                    currentSegment.setBegin(t);
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   411
                } else {
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   412
                    currentSegment.setEnd(t);
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   413
                }
23
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   414
            }
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   415
        }
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   416
    });
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   417
    
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   418
    sliceSlider.find(".ui-slider-handle:first")
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   419
        .addClass("Ldt-Slice-left-handle")
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   420
        .click(function() {
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   421
            if (currentMedia && currentSegment) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   422
                currentMedia.setCurrentTime(currentSegment.begin);
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   423
            }
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   424
        });
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   425
    sliceSlider.find(".ui-slider-handle:last")
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   426
        .addClass("Ldt-Slice-right-handle")
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   427
        .click(function() {
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   428
            if (currentMedia && currentSegment) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   429
                currentMedia.setCurrentTime(currentSegment.end);
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   430
            }
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   431
        });
23
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   432
    
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   433
    /* UI Events */
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   434
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   435
    function onCurrentMediaPlay() {
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   436
        $(".Ldt-Ctrl-Play")
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   437
            .attr("title", "Pause")
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   438
            .removeClass("Ldt-Ctrl-Play-PlayState")
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   439
            .addClass("Ldt-Ctrl-Play-PauseState")
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   440
    }
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   441
    
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   442
    function onCurrentMediaPause() {
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   443
        $(".Ldt-Ctrl-Play")
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   444
            .attr("title", "Lecture")
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   445
            .removeClass("Ldt-Ctrl-Play-PauseState")
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   446
            .addClass("Ldt-Ctrl-Play-PlayState")
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   447
    }
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   448
    
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   449
    function onCurrentMediaTimeupdate(_time) {
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   450
        $(".Ldt-Ctrl-Time-Elapsed").text(_time.toString());
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   451
        timeSlider.slider("value",slidersRange * _time / currentMedia.duration);
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   452
    }
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   453
    
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   454
    /* Mashup Player */
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   455
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   456
    var mashupCurrentMedia = null,
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   457
        mashupCurrentAnnotation = null,
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   458
        mashupSegmentBegin,
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   459
        mashupSegmentEnd,
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   460
        mashupTimecode = 0,
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   461
        mashupSeeking = false,
32
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   462
        seekdiv = $(".video-wait"),
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   463
        mashupTimedelta;
32
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   464
    
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   465
    function showSeek() {
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   466
        if (mashupSeeking) {
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   467
            seekdiv.show();
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   468
        }
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   469
    }
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   470
    
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   471
    function changeCurrentAnnotation() {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   472
        if (mashupTimecode >= mashup.duration) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   473
            if (!mashup.paused) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   474
                mashup.paused = true;
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   475
                mashup.trigger("pause");
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   476
            }
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   477
            mashupTimecode = 0;
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   478
        }
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   479
        var _annotation = mashup.getAnnotationAtTime( mashupTimecode );
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   480
        if (typeof _annotation === "undefined") {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   481
            if (mashupCurrentMedia) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   482
                mashupCurrentMedia.pause();
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   483
                if (!mashup.paused) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   484
                    mashup.paused = true;
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   485
                    mashup.trigger("pause");
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   486
                }
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   487
            }
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   488
            return;
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   489
        }
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   490
        mashupCurrentAnnotation = _annotation;
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   491
        mashupSegmentBegin = mashupCurrentAnnotation.annotation.begin.milliseconds;
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   492
        mashupSegmentEnd = mashupCurrentAnnotation.annotation.end.milliseconds;
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   493
        mashupTimedelta = mashupSegmentBegin - mashupCurrentAnnotation.begin.milliseconds;
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   494
        mashupCurrentMedia = mashupCurrentAnnotation.getMedia();
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   495
        
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   496
        project.getMedias().forEach(function(_media) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   497
            if (_media !== mashupCurrentMedia) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   498
                _media.hide();
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   499
                _media.pause();
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   500
            } else {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   501
                _media.show();
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   502
            }
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   503
        });
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   504
        
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   505
        mashupCurrentMedia.setCurrentTime( mashupTimecode + mashupTimedelta);
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   506
        mashupCurrentMedia.seeking = true;
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   507
        
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   508
        if (!mashup.paused) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   509
            mashupCurrentMedia.play();
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   510
            mashupSeeking = true;
32
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   511
            setTimeout(showSeek,200);
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   512
        }
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   513
        mashup.trigger("timeupdate", new IriSP.Model.Time(mashupTimecode));
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   514
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   515
    }
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   516
    
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   517
    /* Set current Media */
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   518
   
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   519
    var currentMedia, currentSegment;
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   520
    
39
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   521
    function updateSegmentUI() {
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   522
        if (currentMedia && currentSegment) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   523
            var start = currentSegment.begin,
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   524
                end = currentSegment.end,
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   525
                dur = currentSegment.getDuration(),
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   526
                f = slidersRange / currentMedia.duration,
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   527
                tangleStart = $(".tangle-start"),
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   528
                tangleEnd = $(".tangle-end"),
29
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   529
                tangleDuration = $(".tangle-duration"),
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   530
                k = 100 / currentMedia.duration,
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   531
                p = k * (start + end) / 2;
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   532
            sliceSlider.slider( "values", [ f * start, f * end ] );
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   533
            tangleStart.text(start.toString(tangleStart.hasClass("active"))).attr("data-milliseconds",start.milliseconds);
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   534
            tangleEnd.text(end.toString(tangleEnd.hasClass("active"))).attr("data-milliseconds",end.milliseconds);
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   535
            tangleDuration.text(dur.toString(tangleDuration.hasClass("active"))).attr("data-milliseconds",dur.milliseconds);
39
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   536
            $(".segmentation .pointer").css("left", p + "%");
29
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   537
            $(".media-current-section").css({
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   538
                left: (k * start) + "%",
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   539
                width: (k * dur) + "%"
39
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   540
            });
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   541
            var messages = [],
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   542
                critical = false,
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   543
                warning = false;
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   544
            _(segmentcritical).each(function(sc) {
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   545
                if (!sc.validate(currentSegment)) {
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   546
                    critical = true;
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   547
                    messages.push(sc.message);
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   548
                }
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   549
            });
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   550
            _(segmentwarning).each(function(sc) {
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   551
                if (!sc.validate(currentSegment)) {
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   552
                    warning = true;
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   553
                    messages.push(sc.message);
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   554
                }
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   555
            });
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   556
            currentSegment.status = critical ? "critical" : (warning ? "warning" : "valid");
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   557
            if (!messages.length) {
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   558
                messages.push("Le segment est valide !")
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   559
            }
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   560
            currentSegment.status_messages = messages;
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   561
            
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   562
            $(".segmentation .validate").removeClass("critical warning valid").addClass(currentSegment.status);
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   563
            $(".segmentation .validate-tooltip").html("<ul><li>" + currentSegment.status_messages.join("</li><li>")+"</li></ul>");
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   564
        }
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   565
    }
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   566
    
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   567
    var addMode;
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   568
    
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   569
    function setMedia(media) {
23
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   570
        if (currentMedia) {
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   571
            currentMedia.pause();
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   572
        }
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   573
        currentMedia = media;
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   574
        if (currentMedia.elementType == "media") {
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   575
            $("video").hide();
23
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   576
            showSegmentation();
32
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   577
            if (!currentMedia.loaded) {
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   578
                seekdiv.show();
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   579
            }
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   580
            var currentvideo = $('#video_' + currentMedia.id);
23
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   581
            if (!currentvideo.length) {
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   582
                addMediaPlayer(currentMedia);
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   583
            }
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   584
            $(".tab-media-title").text(currentMedia.title);
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   585
            
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   586
            addMode = !(currentSegment && mashup.hasAnnotation(currentSegment));
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   587
            
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   588
            if (!currentSegment) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   589
                currentSegment = new IriSP.Model.Annotation(false, project);
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   590
                currentSegment.setMedia(currentMedia.id);
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   591
                currentSegment.setBegin(0);
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   592
                currentSegment.setEnd(currentMedia.duration);
39
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   593
                currentSegment.title = IriSP.hc_messages.segment_title_placeholder;
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   594
                currentSegment.description = "";
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   595
                currentSegment.on("change-begin", function() {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   596
                    if (currentMedia && currentSegment === this) {
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   597
                        currentMedia.setCurrentTime(this.begin);
39
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   598
                        updateSegmentUI();
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   599
                    }
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   600
                });
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   601
                currentSegment.on("change-end", function() {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   602
                    if (currentMedia && currentSegment === this) {
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   603
                        currentMedia.setCurrentTime(this.end);
39
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   604
                        updateSegmentUI();
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   605
                    }
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   606
                });
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   607
                currentSegment.on("enter", function() {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   608
                    if (currentMedia === mashup) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   609
                        $(".annotation-title").text(this.title);
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   610
                        $(".annotation-begin").text(this.begin.toString());
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   611
                        $(".annotation-end").text(this.end.toString());
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   612
                        $(".annotation-media-title").text(this.getMedia().title);
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   613
                        $(".annotation-description").text(this.description);
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   614
                        setPointerToCurrentAnnotation();
32
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   615
                        highlightCurrentSegment();
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   616
                    }
29
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   617
                });
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   618
            }
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   619
            if (currentMedia.loaded) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   620
                currentMedia.setCurrentTime(currentSegment.begin);
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   621
            }
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   622
            $(".add-segment").val(addMode ? "Ajouter au Hashcut" : "Sauvegarder");
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   623
            $(".create-or-edit").text(addMode ? "Créer un nouveau segment" : "Modifier le segment");
39
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   624
            updateSegmentUI();
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   625
            media.show();
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   626
            $("#segment-title").val(currentSegment.title);
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   627
            $("#segment-description").val(currentSegment.description);
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   628
            $("#segment-tags").val("");
29
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   629
            var relatedSegments = mashup.segments.filter(function(_s) {
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   630
                return _s.getMedia() === currentMedia && _s.annotation !== currentSegment;
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   631
            });
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   632
            var html = "";
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   633
            if (relatedSegments.length) {
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   634
                var k = $(".Ldt-Slider").width() / currentSegment.getMedia().duration,
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   635
                    currentleft = k * currentSegment.begin,
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   636
                    currentwidth = k * currentSegment.getDuration();
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   637
                relatedSegments.forEach(function(_s) {
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   638
                    var pos = k * (_s.annotation.begin + _s.annotation.end) / 2,
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   639
                        corrpos = Math.max(145, Math.min(305, pos));
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   640
                    vizdata = {
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   641
                        annotation : _s.annotation,
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   642
                        currentleft : currentleft,
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   643
                        currentwidth : currentwidth,
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   644
                        popleft : corrpos,
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   645
                        left : k * _s.annotation.begin,
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   646
                        width : k * _s.annotation.getDuration(),
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   647
                        pointerpos : (pos - corrpos)
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   648
                    }
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   649
                    html += mediasegmenttemplate(vizdata);
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   650
                });
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   651
                $(".self-media-segments").show();
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   652
            } else {
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   653
                $(".self-media-segments").hide();
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   654
            }
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   655
        }
29
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   656
        $(".self-media-segments .media-segments-list").html(html);
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   657
        if (currentMedia.elementType === "mashup") {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   658
            showPreview();
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   659
            mashup.checkLoaded();
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   660
        }
23
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   661
        $(".Ldt-Ctrl-Time-Total").text(currentMedia.duration.toString());
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   662
        // TODO: Do something with the tags !
23
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   663
        onCurrentMediaTimeupdate(currentMedia.getCurrentTime());
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   664
        onCurrentMediaPause();
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   665
        highlightCurrentSegment();
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   666
    }
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   667
    
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   668
    function addMediaPlayer(media) {
23
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   669
        var videoid = "video_" + media.id,
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   670
            videoEl = $('<video>'),
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   671
            width = $(".video").width(),
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   672
            height = $(".video").height(),
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   673
            mp4_file = media.video.replace(/\.webm$/i,'.mp4'),
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   674
            webm_file = media.video.replace(/\.mp4$/i,'.webm'),
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   675
            mp4_src = $('<source>'),
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   676
            webm_src = $('<source>');
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   677
        mp4_src.attr({
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   678
            src: mp4_file,
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   679
            type: "video/mp4"
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   680
        });
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   681
        webm_src.attr({
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   682
            src: webm_file,
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   683
            type: "video/webm"
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   684
        });
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   685
        videoEl.attr({
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   686
            id : videoid,
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   687
            width : width,
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   688
            height : height
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   689
        }).css({
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   690
            position : "absolute",
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   691
            left: 0,
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   692
            top: 0,
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   693
            width : width,
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   694
            height : height
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   695
        });
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   696
        videoEl.append(mp4_src).append(webm_src);
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   697
        $(".video").append(videoEl);
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   698
        
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   699
        media.show = function() {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   700
            videoEl.show();
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   701
        }
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   702
        media.hide = function() {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   703
            videoEl.hide();
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   704
        }
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   705
        
23
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   706
        var popcorn = Popcorn("#" + videoid);
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   707
        
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   708
        // Binding functions to Popcorn
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   709
        
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   710
        media.on("setcurrenttime", function(_milliseconds) {
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   711
            if (media.loaded) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   712
                popcorn.currentTime(_milliseconds / 1000);
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   713
            }
23
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   714
        });
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   715
        
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   716
        media.on("setvolume", function(_vol) {
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   717
            media.volume = _vol;
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   718
            if (media.loaded) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   719
                popcorn.volume(_vol);
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   720
            }
23
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   721
        });
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   722
        
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   723
        media.on("setmuted", function(_muted) {
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   724
            media.muted = _muted;
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   725
            if (media.loaded) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   726
                popcorn.muted(_muted);
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   727
            }
23
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   728
        });
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   729
        
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   730
        media.on("setplay", function() {
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   731
            if (media.loaded) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   732
                popcorn.play();
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   733
            }
23
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   734
        });
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   735
        
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   736
        media.on("setpause", function() {
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   737
            if (media.loaded) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   738
                popcorn.pause();
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   739
            }
23
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   740
        });
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   741
        
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   742
        // Binding Popcorn events to media
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   743
        
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   744
        function getVolume() {
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   745
            media.muted = popcorn.muted();
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   746
            media.volume = popcorn.volume();
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   747
        }
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   748
        
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   749
        popcorn.on("loadedmetadata", function() {
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   750
            getVolume();
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   751
            media.loaded = true;
23
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   752
            media.trigger("loadedmetadata");
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   753
            media.trigger("volumechange");
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   754
        })
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   755
        
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   756
        popcorn.on("timeupdate", function() {
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   757
            media.trigger("timeupdate", new IriSP.Model.Time(1000*popcorn.currentTime()));
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   758
        });
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   759
        
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   760
        popcorn.on("volumechange", function() {
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   761
            getVolume();
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   762
            media.trigger("volumechange");
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   763
        })
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   764
        
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   765
        popcorn.on("play", function() {
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   766
            media.trigger("play");
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   767
        });
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   768
        
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   769
        popcorn.on("pause", function() {
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   770
            media.trigger("pause");
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   771
        });
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   772
        
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   773
        popcorn.on("seeked", function() {
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   774
            media.trigger("seeked");
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   775
        });
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   776
        
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   777
        // Binding UI Events and Mashup Playing to Media
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   778
        
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   779
        media.on("loadedmetadata", function() {
32
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   780
            if (media === currentMedia) {
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   781
                seekdiv.hide();
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   782
            }
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   783
            mashup.checkLoaded();
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   784
        });
23
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   785
        
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   786
        media.on("play", function() {
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   787
            if (media === currentMedia) {
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   788
                onCurrentMediaPlay();
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   789
            }
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   790
            if (mashup === currentMedia && media === mashupCurrentMedia) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   791
                mashup.trigger("play");
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   792
            }
23
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   793
        });
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   794
        
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   795
        media.on("pause", function() {
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   796
            if (media === currentMedia) {
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   797
                onCurrentMediaPause();
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   798
            }
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   799
            if (mashup === currentMedia && media === mashupCurrentMedia) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   800
                mashup.trigger("pause");
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   801
            }
23
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   802
        });
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   803
        
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   804
        media.on("timeupdate", function(_time) {
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   805
            if (media === currentMedia) {
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   806
                onCurrentMediaTimeupdate(_time);
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   807
            }
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   808
            if (mashup === currentMedia && !mashup.paused && media === mashupCurrentMedia && !media.seeking) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   809
                if ( _time < mashupSegmentEnd ) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   810
                    if ( _time >= mashupSegmentBegin ) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   811
                        mashupTimecode = _time - mashupTimedelta;
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   812
                    } else {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   813
                        mashupTimecode = mashupSegmentBegin - mashupTimedelta;
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   814
                        media.setCurrentTime(mashupSegmentBegin);
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   815
                    }
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   816
                } else {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   817
                    mashupTimecode = mashupSegmentEnd - mashupTimedelta;
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   818
                    media.pause();
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   819
                    changeCurrentAnnotation();
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   820
                }
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   821
                mashup.trigger("timeupdate", new IriSP.Model.Time(mashupTimecode));
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   822
            }
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   823
        });
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   824
        
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   825
        media.on("seeked", function() {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   826
            media.seeking = false;
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   827
            if (mashup === currentMedia && media === mashupCurrentMedia && mashupSeeking) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   828
                mashupSeeking = false;
32
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   829
                seekdiv.hide();
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   830
            }
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   831
        });
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   832
        
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   833
        media.on("volumechange", function() {
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   834
            if (media === currentMedia) {
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   835
                ctrlVolumeUpdater();
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   836
            }
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   837
            mashup.muted = media.muted;
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   838
            mashup.volume = media.volume;
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   839
            mashup.trigger("volumechange");
23
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   840
        })
18
c85b323f5174 Modifications to home
veltr
parents: 15
diff changeset
   841
        
13
42c59d09670e display media list
veltr
parents: 12
diff changeset
   842
    }
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   843
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   844
    // Mashup Events
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   845
    
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   846
    mashup.on("setcurrenttime", function(_milliseconds) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   847
        mashupTimecode = _milliseconds;
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   848
        changeCurrentAnnotation();
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   849
    });
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   850
    
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   851
    mashup.on("setvolume", function(_vol) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   852
        mashup.getMedias().forEach(function(_media) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   853
            _media.setVolume(_vol);
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   854
        });
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   855
        mashup.volume = _vol;
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   856
    });
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   857
    
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   858
    mashup.on("setmuted", function(_muted) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   859
        mashup.getMedias().forEach(function(_media) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   860
            _media.setMuted(_muted);
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   861
        });
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   862
        mashup.muted = _muted;
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   863
    });
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   864
    
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   865
    mashup.on("setplay", function() {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   866
        mashup.paused = false;
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   867
        changeCurrentAnnotation();
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   868
    });
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   869
    
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   870
    mashup.on("setpause", function() {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   871
        mashup.paused = true;
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   872
        if (mashupCurrentMedia) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   873
            mashupCurrentMedia.pause();
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   874
        }
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   875
    });
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   876
    
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   877
    mashup.on("loadedmetadata", function() {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   878
        if (mashup === currentMedia) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   879
            changeCurrentAnnotation();
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   880
        }
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   881
    });
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   882
    
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   883
    /* Mashup Events to UI */
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   884
   
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   885
    mashup.on("play", function() {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   886
        if (mashup === currentMedia) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   887
            onCurrentMediaPlay();
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   888
        }
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   889
    });
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   890
    
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   891
    mashup.on("pause", function() {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   892
        if (mashup === currentMedia) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   893
            onCurrentMediaPause();
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   894
        }
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   895
    });
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   896
    
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   897
    mashup.on("timeupdate", function(_time) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   898
        if (mashup === currentMedia) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   899
            $(".frise-position").css("left",(100*_time/mashup.duration)+"%");
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   900
            onCurrentMediaTimeupdate(_time);
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   901
        }
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   902
    });
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   903
        
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   904
    /* Segment Form interaction */
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   905
   
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   906
    $("#segment-title").on("keyup change input paste", function() {
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   907
        if (currentMedia && currentSegment) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   908
            currentSegment.title = $(this).val();
39
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   909
            updateSegmentUI();
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   910
            updateMashupUI();
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   911
        }
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   912
    });
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   913
    $("#segment-description").on("keyup change input paste", function() {
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   914
        if (currentMedia && currentSegment) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   915
            currentSegment.description = $(this).val();
39
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   916
            updateSegmentUI();
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   917
        }
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   918
    });
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   919
    $("#segment-form").submit(function() {
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   920
        if (addMode) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   921
            mashup.addAnnotation(currentSegment);
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   922
        } else {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   923
            updateMashupUI();
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   924
        }
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   925
        var segment = mashup.getAnnotation(currentSegment);
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   926
        currentSegment = undefined;
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   927
        setMedia(mashup);
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   928
        if (segment) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   929
            mashup.setCurrentTime(segment.begin);
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   930
        }
29
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   931
        return false;
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   932
    })
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   933
    
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   934
    /* Click on media items */
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   935
   
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   936
    $(".col-left").on("click", ".item-video", function() {
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   937
        currentSegment = undefined;
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   938
        setMedia(project.getElement($(this).attr("data-media-id")));
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   939
    });
12
8a8b6097d382 Starting 'editorjs' branch
veltr
parents:
diff changeset
   940
    
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   941
    /* Click on Tabs */
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   942
    
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   943
    function showSegmentation() {
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   944
        $(".col-middle").removeClass("empty-mode pvw-mode").addClass("segment-mode");
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   945
        return false;
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   946
    }
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   947
    function showPreview() {
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   948
        $(".col-middle").removeClass("empty-mode segment-mode").addClass("pvw-mode");
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   949
        return false;
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   950
    }
32
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   951
    function showEmpty() {
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   952
        $("video").hide();
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   953
        $(".col-middle").removeClass("pvw-mode segment-mode").addClass("empty-mode");
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   954
        return false;
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   955
    }
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   956
    
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   957
    $(".tab-pvw").click(function() {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   958
        if (mashup.segments.length) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   959
            setMedia(mashup);
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   960
        }
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   961
    });
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   962
    
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   963
    /* Click on segments */
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   964
    
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   965
    function reorganizeMashup() {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   966
        var ids = $(".organize-segments .item-video").map(function(){return $(this).attr("data-segment-id")});
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   967
        mashup.setAnnotationsById(ids);
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   968
    }
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   969
    
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   970
    function highlightCurrentSegment() {
32
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   971
        $(".organize-segments .item-video, .col-left .item-video, .frise-segment").removeClass("active");
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   972
        var segmentid = undefined;
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   973
        if (currentMedia && currentSegment) {
32
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   974
            segmentid = currentSegment.id;
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   975
        }
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   976
        if (currentMedia === mashup && mashupCurrentAnnotation) {
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   977
            segmentid = mashupCurrentAnnotation.annotation.id;
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   978
        }
32
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   979
        $(".item-video[data-segment-id='" + segmentid + "']").addClass("active");
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   980
        var mediaid = undefined;
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   981
        if (currentMedia) {
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   982
            mediaid = currentMedia.id;
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   983
        }
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   984
        if (currentMedia === mashup && mashupCurrentMedia) {
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   985
            mediaid = mashupCurrentMedia.id
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   986
        }
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   987
        $(".col-left .item-video[data-media-id='" + mediaid + "']").addClass("active");
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   988
    }
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   989
    
32
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   990
    function hoverSegment() {
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   991
        var segmentid = $(this).attr("data-segment-id");
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   992
        $(".organize-segments .item-video, .frise-segment").removeClass("active");
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   993
        $(".item-video[data-segment-id='" + segmentid + "'], .frise-segment[data-segment-id='" + segmentid + "']").addClass("active");
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   994
    }
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   995
    
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   996
    $(".frise")
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   997
    .on("mouseover", ".frise-segment", hoverSegment)
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   998
    .on("mouseout", ".frise-segment", highlightCurrentSegment)
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   999
    
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
  1000
    $(".organize-segments")
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
  1001
    .sortable({
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
  1002
        stop : reorganizeMashup
32
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
  1003
    })
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
  1004
    .on("mouseover", ".item-video", hoverSegment)
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
  1005
    .on("mouseout", ".item-video", highlightCurrentSegment)
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
  1006
    .on("click", ".item-video", function(e) {
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
  1007
        var el = $(this),
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
  1008
            segment = mashup.getAnnotationById(el.attr("data-segment-id"));
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
  1009
        setMedia(mashup);
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
  1010
        if (segment) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
  1011
            mashup.setCurrentTime(segment.begin);
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
  1012
        }
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
  1013
        return false;
32
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
  1014
    })
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
  1015
    .on("click", ".edit", function(e) {
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
  1016
        var currentItem = $(this).parents(".item-video"),
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
  1017
            media = project.getElement(currentItem.attr("data-media-id")),
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
  1018
            segment = project.getElement(currentItem.attr("data-segment-id"));
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
  1019
        currentSegment = segment;
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
  1020
        setMedia(media);
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
  1021
        return false;
32
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
  1022
    })
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
  1023
    .on("click", ".top", function(e){
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
  1024
        var currentItem = $(this).parents(".item-video");
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
  1025
        currentItem.insertBefore(currentItem.prev());
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
  1026
		reorganizeMashup();
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
  1027
		return false;
32
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
  1028
    })
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
  1029
    .on("click", ".bottom", function(e){
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
  1030
        var currentItem = $(this).parents(".item-video");
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
  1031
        currentItem.insertAfter(currentItem.next());
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
  1032
		reorganizeMashup();
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
  1033
        return false;
32
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
  1034
    })
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
  1035
    .on("click", ".delete", function(e){
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
  1036
        var id = $(this).parents(".item-video").attr("data-segment-id");
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
  1037
        mashup.removeAnnotationById(id);
32
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
  1038
        if (!mashup.segments.length) {
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
  1039
            showEmpty();
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
  1040
        }
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
  1041
        return false;
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
  1042
    });
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
  1043
    
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
  1044
    /* Tangles */
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
  1045
    var tangleMsPerPixel = 100,
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
  1046
        activeTangle,
23
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
  1047
        tangleStartX,
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
  1048
        tangleStartVal,
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
  1049
        tangleHasMoved;
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
  1050
    
23
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
  1051
    $(".time-tangle").mousedown(function(evt) {
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
  1052
        activeTangle = $(this);
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
  1053
        activeTangle.addClass("active");
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
  1054
        tangleStartVal = +activeTangle.attr("data-milliseconds");
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
  1055
        tangleStartX = evt.pageX;
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
  1056
        tangleHasMoved = false;
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
  1057
        $(this).siblings(".time-tangle").addClass("deactivate");
23
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
  1058
        return false;
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
  1059
    });
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
  1060
    $(document)
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
  1061
        .mousemove(function(evt) {
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
  1062
            if (activeTangle) {
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
  1063
                tangleHasMoved = true;
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
  1064
                var newval = new IriSP.Model.Time(tangleMsPerPixel * (evt.pageX - tangleStartX) + tangleStartVal);
23
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
  1065
                activeTangle.trigger("valuechange", newval);
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
  1066
                return false;
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
  1067
            }
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
  1068
        })
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
  1069
        .mouseup(function() {
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
  1070
            if (activeTangle) {
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
  1071
                activeTangle.text(activeTangle.text().replace(/\.\d+$/,''));
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
  1072
                $(".time-tangle").removeClass("active deactivate");
23
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
  1073
                activeTangle = undefined;
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
  1074
            }
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
  1075
        });
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
  1076
        
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
  1077
    $(".tangle-start")
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
  1078
        .mouseup(function(evt) {
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
  1079
            if (!tangleHasMoved && currentMedia && currentSegment) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
  1080
                currentMedia.setCurrentTime(currentSegment.begin);
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
  1081
            }
23
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
  1082
        })
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
  1083
        .on("valuechange", function(evt, val) {
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
  1084
            if (currentMedia && currentSegment) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
  1085
                currentSegment.setBegin(val);
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
  1086
            }
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
  1087
        });
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
  1088
    $(".tangle-end")
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
  1089
        .mouseup(function(evt) {
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
  1090
            if (!tangleHasMoved && currentMedia && currentSegment) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
  1091
                currentMedia.setCurrentTime(currentSegment.end);
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
  1092
            }
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
  1093
        })
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
  1094
        .on("valuechange", function(evt, val) {
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
  1095
            if (currentMedia && currentSegment) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
  1096
                currentSegment.setEnd(val);
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
  1097
            }
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
  1098
        });
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
  1099
    $(".tangle-duration").on("valuechange", function(evt, val) {
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
  1100
        if (currentMedia && currentSegment) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
  1101
            currentSegment.setDuration(val);
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
  1102
        }
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
  1103
    });
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
  1104
    
29
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
  1105
    /* Click on current segment in Preview */
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
  1106
    
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
  1107
    $(".mashup-description .edit").click(function() {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
  1108
        if (mashupCurrentAnnotation) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
  1109
            currentSegment = mashupCurrentAnnotation.annotation;
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
  1110
            setMedia(mashupCurrentAnnotation.getMedia());
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
  1111
        }
29
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
  1112
    });
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
  1113
    
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
  1114
    /* Handling related segments */
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
  1115
   
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
  1116
    $(".media-segments-list").on("mouseover", ".media-segment", function() {
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
  1117
        $(this).find(".media-segment-popin").show();
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
  1118
    }).on("mouseout", ".media-segment", function() {
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
  1119
        $(this).find(".media-segment-popin").hide();
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
  1120
    }).on("click", ".reprendre-segment", function() {
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
  1121
        var s = project.getElement($(this).attr("data-segment-id"));
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
  1122
        currentSegment.title = s.title;
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
  1123
        currentSegment.description = s.description;
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
  1124
        $("#segment-title").val(s.title);
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
  1125
        $("#segment-description").val(s.description);
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
  1126
        currentSegment.setBegin(s.begin);
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
  1127
        currentSegment.setEnd(s.end);
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
  1128
        return false;
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
  1129
    });
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
  1130
    
32
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
  1131
    /* Changing Hashcut Title and description */
39
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
  1132
    
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
  1133
    mashup.title = IriSP.hc_messages.mashup_title_placeholder;
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
  1134
    $(".title-video-wrap a").text(mashup.title);
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
  1135
    $("#hashcut-title").val(mashup.title);
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
  1136
    
32
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
  1137
    $("#hashcut-title").on("keyup change input paste", function() {
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
  1138
        mashup.title = $(this).val();
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
  1139
        $(".title-video-wrap a").text(mashup.title);
39
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
  1140
        updateMashupUI();
32
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
  1141
    });
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
  1142
    
39
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
  1143
    $("#hashcut-description").on("keyup change input paste", function() {
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
  1144
        mashup.description = $(this).val();
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
  1145
        updateMashupUI();
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
  1146
    });
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
  1147
    
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
  1148
    updateMashupUI();
13
42c59d09670e display media list
veltr
parents: 12
diff changeset
  1149
}