integration/js/editor.js
author veltr
Fri, 09 Nov 2012 18:56:29 +0100
changeset 42 40909e8d6855
parent 41 3ec2343f2b85
child 43 5a5024bc74e6
permissions -rw-r--r--
Commit before weekend
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
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
    16
IriSP.editor = function(options) {
32
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
    17
    
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
    18
    /* Load Media List */
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
    19
    
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
    20
    var directory = new IriSP.Model.Directory(),
42
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
    21
        apidirectory = new IriSP.Model.Directory(),
22
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),
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
    27
        mediatemplate = _.template('<li class="item-video media" data-media-id="<%= id %>"><img src="<%= thumbnail %>" alt="<%= title %>" />'
27
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>'),
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
    30
        segmenttemplate = _.template('<li class="item-video annotation" data-segment-id="<%= annotation.id %>" data-media-id="<%= annotation.getMedia().id %>">'
27
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>'),
29
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
    36
        mediasegmenttemplate = _.template('<div class="media-segments-list"><div class="media-segment">'
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
    37
            + '<div class="media-section media-segment-section" style="left:<%= left %>px; width:<%= width %>px; background:<%= annotation.color %>"></div>'
29
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
    38
            + '<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
    39
            + '<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
    40
            + '<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
    41
            + '<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>'
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
    42
            + '</div></div></div></div>'),
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
    43
        addMode, currentMedia, currentSegment;
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
    44
    
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
    45
    IriSP.mashupcore(project, mashup);
39
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    46
    
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    47
    /* Validation of segments and mashup */
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    48
    
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    49
    var segmentcritical = [
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    50
        {
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    51
            validate: function(_s) {
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
    52
                return (_s.getDuration() >= 1000);
39
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    53
            },
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
    54
            message: "Le segment doit durer au moins une seconde"
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
    55
        },
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
    56
        {
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
    57
            validate: function(_s) {
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
    58
                return (_s.getDuration() < 180000);
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
    59
            },
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
    60
            message: "Le segment doit durer moins de trois minutes"
39
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
            validate: function(_s) {
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    64
                return (!!_s.title && _s.title !== IriSP.hc_messages.segment_title_placeholder);
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    65
            },
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
    66
            message: "Le segment doit avoir un titre"
39
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    67
        }
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    68
    ];
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    69
    var segmentwarning = [
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    70
        {
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    71
            validate: function(_s) {
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
    72
                return (!!_s.description);
39
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    73
            },
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    74
            message: "Il est recommandé de donner une description au segment"
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
    75
        },
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
    76
        {
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
    77
            validate: function(_s) {
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
    78
                return (!!_s.keywords.length);
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
    79
            },
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
    80
            message: "Il est recommandé de tagguer le segment"
39
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    81
        }
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    82
    ];
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    83
    
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    84
    var mashupcritical = [
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    85
        {
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    86
            validate: function(_m) {
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    87
                return _m.segments.length > 2;
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    88
            },
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    89
            message: "Un hashcut doit être composé d'au moins trois segments"
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    90
        },
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    91
        {
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    92
            validate: function(_m) {
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    93
                return (!!_m.title && _m.title !== IriSP.hc_messages.mashup_title_placeholder);
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    94
            },
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    95
            message: "Un titre doit être donné au hashcut"
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    96
        }
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    97
    ];
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    98
    var mashupwarning = [
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    99
        {
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   100
            validate: function(_m) {
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   101
                return !!_m.description
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   102
            },
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   103
            message: "Il est recommandé de donner une description au hashcut"
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   104
        }
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   105
    ];
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   106
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   107
    /* Fill left column with Media List */
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   108
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   109
    project.onLoad(function() {
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   110
        var html = '';
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   111
        project.getMedias().forEach(function(_m) {
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   112
            html += mediatemplate(_m);
13
42c59d09670e display media list
veltr
parents: 12
diff changeset
   113
        });
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   114
        $(".col-left .list-video").html(html);
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   115
    });
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   116
    
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   117
    /* Search Media with left column form */
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   118
    
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   119
    $(".col-left input").on("keyup change input paste", function() {
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   120
        var val = $(this).val();
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   121
        if (val) {
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   122
            var find = IriSP.Model.regexpFromTextOrArray(val, true),
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   123
                replace = IriSP.Model.regexpFromTextOrArray(val, false);
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   124
        }
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   125
        $(".col-left .item-video").each(function() {
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   126
            var li = $(this),
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   127
                title = $(this).find(".title-video"),
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   128
                titletext = title.text();
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   129
            if (val && find.test(titletext)) {
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   130
                title.html(titletext.replace(replace, '<span style="background: yellow;">$1</span>'));
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   131
                li.show();
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   132
            } else {
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   133
                title.text(titletext);
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   134
                if (val) {
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   135
                    li.hide();
13
42c59d09670e display media list
veltr
parents: 12
diff changeset
   136
                } else {
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   137
                    li.show();
13
42c59d09670e display media list
veltr
parents: 12
diff changeset
   138
                }
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   139
            }
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   140
        })
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   141
    });
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   142
    
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   143
    /* Fill right column when mashup is updated */
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   144
    
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   145
    function updateMashupUI() {
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   146
        var listhtml = '', critical = false, warning = false, messages = [];
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   147
        mashup.segments.forEach(function(_s) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   148
            listhtml += segmenttemplate(_s);
39
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   149
            if (_s.annotation.status === "critical") {
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   150
                critical = true;
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   151
            }
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   152
        });
39
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   153
        if (critical) {
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   154
            messages.push("Certains segments ne sont pas valides");
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   155
        }
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   156
        
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   157
        _(mashupcritical).each(function(sc) {
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   158
            if (!sc.validate(mashup)) {
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   159
                critical = true;
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   160
                messages.push(sc.message);
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   161
            }
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   162
        });
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   163
        _(mashupwarning).each(function(sc) {
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   164
            if (!sc.validate(mashup)) {
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   165
                warning = true;
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   166
                messages.push(sc.message);
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   167
            }
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   168
        });
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   169
        mashup.status = critical ? "critical" : (warning ? "warning" : "valid");
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   170
        if (!messages.length) {
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   171
            messages.push("Le hashcut est valide !");
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   172
        }
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   173
        $(".publier-button").toggleClass("disable", critical);
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   174
        
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   175
        $(".liste-segment .validate").removeClass("critical warning valid").addClass(mashup.status);
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   176
        $(".liste-segment .validate-tooltip").html("<ul><li>" + messages.join("</li><li>")+"</li></ul>");
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   177
        
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   178
        $(".col-right .list-video").html(listhtml).find(".item-video:last-child .bottom, .item-video:first-child .top").addClass("disable");
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   179
        
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   180
        project.trigger("mouseout-annotation");
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   181
    }
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   182
    
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   183
    mashup.on("setcurrent", function() {
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   184
        currentMedia = mashup;
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   185
    });
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   186
    
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   187
    mashup.on("change",updateMashupUI);
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   188
    
23
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   189
    /* Slice Widget */
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   190
   
23
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   191
    var sliceSlider = $(".Ldt-Slice"),
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   192
        sliceStartTime,
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   193
        slidersRange = 920;
23
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   194
    
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   195
    sliceSlider.slider({
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   196
        range: true,
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   197
        values: [0, slidersRange],
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   198
        min: 0,
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   199
        max: slidersRange,
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   200
        start: function() {
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   201
            if (currentMedia) {
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   202
                if (!currentMedia.getPaused()) {
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   203
                    currentMedia.pause();
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   204
                }
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   205
            }
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   206
        },
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   207
        slide: function(event, ui) {
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   208
            if (currentMedia && currentSegment) {
23
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   209
                var t = currentMedia.duration * ui.value / slidersRange;
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   210
                if (ui.value === ui.values[0]) {
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   211
                    currentSegment.setBegin(t);
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   212
                } else {
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   213
                    currentSegment.setEnd(t);
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   214
                }
23
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   215
            }
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   216
        }
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   217
    });
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   218
    
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   219
    sliceSlider.find(".ui-slider-handle:first")
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   220
        .addClass("Ldt-Slice-left-handle")
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   221
        .click(function() {
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   222
            if (currentMedia && currentSegment) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   223
                currentMedia.setCurrentTime(currentSegment.begin);
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   224
            }
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   225
        });
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   226
    sliceSlider.find(".ui-slider-handle:last")
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   227
        .addClass("Ldt-Slice-right-handle")
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   228
        .click(function() {
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   229
            if (currentMedia && currentSegment) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   230
                currentMedia.setCurrentTime(currentSegment.end);
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   231
            }
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   232
        });
23
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   233
    
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   234
    
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   235
    /* Update Segment UI */
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   236
    
39
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   237
    function updateSegmentUI() {
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   238
        if (currentMedia && currentSegment) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   239
            var start = currentSegment.begin,
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   240
                end = currentSegment.end,
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   241
                dur = currentSegment.getDuration(),
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   242
                f = slidersRange / currentMedia.duration,
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   243
                tangleStart = $(".tangle-start"),
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   244
                tangleEnd = $(".tangle-end"),
29
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   245
                tangleDuration = $(".tangle-duration"),
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   246
                k = 100 / currentMedia.duration,
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   247
                p = k * (start + end) / 2;
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   248
            sliceSlider.slider( "values", [ f * start, f * end ] );
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   249
            tangleStart.text(start.toString(tangleStart.hasClass("active"))).attr("data-milliseconds",start.milliseconds);
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   250
            tangleEnd.text(end.toString(tangleEnd.hasClass("active"))).attr("data-milliseconds",end.milliseconds);
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   251
            tangleDuration.text(dur.toString(tangleDuration.hasClass("active"))).attr("data-milliseconds",dur.milliseconds);
39
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   252
            $(".segmentation .pointer").css("left", p + "%");
29
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   253
            $(".media-current-section").css({
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   254
                left: (k * start) + "%",
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   255
                width: (k * dur) + "%"
39
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   256
            });
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   257
            var messages = [],
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   258
                critical = false,
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   259
                warning = false;
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   260
            _(segmentcritical).each(function(sc) {
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   261
                if (!sc.validate(currentSegment)) {
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   262
                    critical = true;
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   263
                    messages.push(sc.message);
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   264
                }
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   265
            });
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   266
            _(segmentwarning).each(function(sc) {
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   267
                if (!sc.validate(currentSegment)) {
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   268
                    warning = true;
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   269
                    messages.push(sc.message);
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   270
                }
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   271
            });
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   272
            currentSegment.status = critical ? "critical" : (warning ? "warning" : "valid");
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   273
            if (!messages.length) {
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   274
                messages.push("Le segment est valide !")
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   275
            }
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   276
            currentSegment.status_messages = messages;
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   277
            
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   278
            $(".segmentation .validate").removeClass("critical warning valid").addClass(currentSegment.status);
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   279
            $(".segmentation .validate-tooltip").html("<ul><li>" + currentSegment.status_messages.join("</li><li>")+"</li></ul>");
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   280
        }
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   281
    }
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   282
    
42
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   283
    var mediasegmentscache = {};
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   284
    
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   285
    function setMedia(media) {
23
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   286
        if (currentMedia) {
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   287
            currentMedia.pause();
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   288
        }
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   289
        currentMedia = media;
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   290
        project.trigger("set-current", media);
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   291
        if (currentMedia.elementType == "media") {
23
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   292
            showSegmentation();
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   293
            $(".tab-media-title").text(currentMedia.title);
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   294
            
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   295
            addMode = !(currentSegment && mashup.hasAnnotation(currentSegment));
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   296
            
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   297
            if (!currentSegment) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   298
                currentSegment = new IriSP.Model.Annotation(false, project);
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   299
                currentSegment.setMedia(currentMedia.id);
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   300
                currentSegment.setBegin(0);
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   301
                currentSegment.setEnd(currentMedia.duration);
39
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   302
                currentSegment.title = IriSP.hc_messages.segment_title_placeholder;
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   303
                currentSegment.color = currentMedia.color;
42
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   304
                currentSegment.created = new Date();
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   305
                currentSegment.keywords = [];
39
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   306
                currentSegment.description = "";
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   307
                currentSegment.on("change-begin", function() {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   308
                    if (currentMedia && currentSegment === this) {
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   309
                        currentMedia.setCurrentTime(this.begin);
39
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   310
                        updateSegmentUI();
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   311
                    }
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   312
                });
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   313
                currentSegment.on("change-end", function() {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   314
                    if (currentMedia && currentSegment === this) {
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   315
                        currentMedia.setCurrentTime(this.end);
39
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   316
                        updateSegmentUI();
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   317
                    }
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   318
                });
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   319
            }
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   320
            if (currentMedia.loaded) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   321
                currentMedia.setCurrentTime(currentSegment.begin);
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   322
            }
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   323
            $(".add-segment").val(addMode ? "Ajouter au Hashcut" : "Sauvegarder");
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   324
            $(".create-or-edit").text(addMode ? "Créer un nouveau segment" : "Modifier le segment");
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   325
            media.show();
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   326
            $("#segment-title").val(currentSegment.title);
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   327
            $("#segment-description").val(currentSegment.description);
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   328
            var segment_tags = $("#segment-tags");
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   329
            segment_tags.tagit("option","onTagRemoved",function(){});
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   330
            segment_tags.tagit("option","onTagAdded",function(){});
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   331
            segment_tags.tagit("removeAll");
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   332
            _(currentSegment.keywords).each(function(tag) {
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   333
                segment_tags.tagit("createTag",tag);
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   334
            });
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   335
            segment_tags.tagit("option","onTagRemoved",updateSegmentTags);
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   336
            segment_tags.tagit("option","onTagAdded",updateSegmentTags);
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   337
            updateSegmentUI();
29
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   338
            var relatedSegments = mashup.segments.filter(function(_s) {
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   339
                return _s.getMedia() === currentMedia && _s.annotation !== currentSegment;
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   340
            });
42
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   341
            var html = "",
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   342
                k = $(".Ldt-Slider").width() / currentSegment.getMedia().duration,
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   343
                currentleft = k * currentSegment.begin,
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   344
                currentwidth = k * currentSegment.getDuration();
29
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   345
            if (relatedSegments.length) {
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   346
                relatedSegments.forEach(function(_s) {
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   347
                    var pos = k * (_s.annotation.begin + _s.annotation.end) / 2,
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   348
                        corrpos = Math.max(145, Math.min(305, pos));
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   349
                    vizdata = {
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   350
                        annotation : _s.annotation,
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   351
                        currentleft : currentleft,
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   352
                        currentwidth : currentwidth,
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   353
                        popleft : corrpos,
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   354
                        left : k * _s.annotation.begin,
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   355
                        width : k * _s.annotation.getDuration(),
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   356
                        pointerpos : (pos - corrpos)
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   357
                    }
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   358
                    html += mediasegmenttemplate(vizdata);
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   359
                });
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   360
                $(".self-media-segments").show();
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   361
            } else {
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   362
                $(".self-media-segments").hide();
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   363
            }
42
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   364
            $(".self-media-segments .media-segments-list").html(html);
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   365
            
42
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   366
            $(".other-media-segments").hide();
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   367
            apidirectory.remoteSource({
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   368
                url: options.segment_api_endpoint + currentMedia.id + "/0/" + currentMedia.duration.milliseconds + "?format=json",
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   369
                serializer:  IriSP.serializers.ldt
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   370
            }).onLoad(function() {
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   371
                var medias = this.getMedias(),
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   372
                    annotations = this.getAnnotations();
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   373
                if (medias && medias.length && medias[0].id === currentMedia.id && annotations && annotations.length ) {
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   374
                    var html = "";
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   375
                    annotations.forEach(function(_a) {
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   376
                        var pos = k * (_a.begin + _a.end) / 2,
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   377
                            corrpos = Math.max(145, Math.min(305, pos));
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   378
                        vizdata = {
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   379
                            annotation : _a,
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   380
                            currentleft : currentleft,
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   381
                            currentwidth : currentwidth,
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   382
                            popleft : corrpos,
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   383
                            left : k * _a.begin,
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   384
                            width : k * _a.getDuration(),
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   385
                            pointerpos : (pos - corrpos)
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   386
                        }
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   387
                        html += mediasegmenttemplate(vizdata);
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   388
                    });
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   389
                    $(".other-media-segments").show();
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   390
                    $(".other-media-segments .media-segments-list").html(html);
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   391
                }
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   392
            });
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   393
        }
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   394
        if (currentMedia.elementType === "mashup") {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   395
            showPreview();
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   396
        }
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   397
    }
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   398
        
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   399
    /* Segment Form interaction */
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   400
   
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   401
    $("#segment-title").on("keyup change input paste", function() {
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   402
        if (currentMedia && currentSegment) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   403
            currentSegment.title = $(this).val();
39
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   404
            updateSegmentUI();
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   405
            mashup.trigger("change");
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   406
        }
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   407
    });
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   408
    $("#segment-description").on("keyup change input paste", function() {
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   409
        if (currentMedia && currentSegment) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   410
            currentSegment.description = $(this).val();
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   411
            mashup.trigger("change");
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   412
        }
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   413
    });
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   414
    $("#segment-form").submit(function() {
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   415
        if (addMode) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   416
            mashup.addAnnotation(currentSegment);
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   417
        } else {
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   418
            mashup.trigger("change");
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   419
        }
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   420
        var segment = mashup.getAnnotation(currentSegment);
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   421
        currentSegment = undefined;
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   422
        setMedia(mashup);
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   423
        if (segment) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   424
            mashup.setCurrentTime(segment.begin);
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   425
            mashup.trigger("enter-annotation",segment);
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   426
        }
29
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   427
        return false;
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   428
    });
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   429
    
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   430
    $("#segment-tags").tagit();
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   431
    
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   432
    
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   433
    /* We have to defer this function because the tagit events
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   434
     * are triggered before the data are updated */
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   435
    function updateSegmentTags() {
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   436
        window.setTimeout(function() {
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   437
            if (currentMedia && currentSegment) {
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   438
                currentSegment.keywords = $("#segment-tags").tagit("assignedTags");
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   439
            }
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   440
        }, 0);
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   441
    }
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   442
    
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   443
    /* Click on media items */
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   444
   
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   445
    $(".col-left").on("click", ".item-video", function() {
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   446
        currentSegment = undefined;
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   447
        setMedia(project.getElement($(this).attr("data-media-id")));
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   448
    });
12
8a8b6097d382 Starting 'editorjs' branch
veltr
parents:
diff changeset
   449
    
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   450
    /* Click on Tabs */
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   451
    
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   452
    function showSegmentation() {
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   453
        $(".col-middle").removeClass("empty-mode pvw-mode").addClass("segment-mode");
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   454
        return false;
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   455
    }
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   456
    function showPreview() {
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   457
        $(".col-middle").removeClass("empty-mode segment-mode").addClass("pvw-mode");
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   458
        return false;
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   459
    }
32
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   460
    function showEmpty() {
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   461
        $("video").hide();
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   462
        $(".col-middle").removeClass("pvw-mode segment-mode").addClass("empty-mode");
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   463
        return false;
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   464
    }
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   465
    
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   466
    $(".tab-pvw").click(function() {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   467
        if (mashup.segments.length) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   468
            setMedia(mashup);
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   469
        }
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   470
    });
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   471
    
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   472
    /* Click on segments */
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   473
    
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   474
    function reorganizeMashup() {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   475
        var ids = $(".organize-segments .item-video").map(function(){return $(this).attr("data-segment-id")});
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   476
        mashup.setAnnotationsById(ids);
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   477
    }
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   478
    
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   479
    project.on("mouseover-annotation", function(annotation) {
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   480
        var mediaid = annotation.getMedia().id;
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   481
        $(".media").removeClass("active");
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   482
        $(".media[data-media-id='" + mediaid + "']").addClass("active");
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   483
    });
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   484
    
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   485
    project.on("mouseout-annotation", function(annotation) {
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   486
        $(".media").removeClass("active");
32
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   487
        var mediaid = undefined;
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   488
        if (currentMedia && currentMedia.elementType === "media") {
32
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   489
            mediaid = currentMedia.id;
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   490
            if (currentSegment) {
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   491
                $(".annotation").removeClass("active");
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   492
                $(".annotation[data-segment-id='" + currentSegment.id + "']").addClass("active");
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   493
            }
32
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   494
        }
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   495
        if (currentMedia === mashup && mashup.currentMedia) {
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   496
            mediaid = mashup.currentMedia.id
32
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   497
        }
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   498
        $(".media[data-media-id='" + mediaid + "']").addClass("active");
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   499
    });
32
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   500
    
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   501
    $(".organize-segments")
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   502
    .sortable({
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   503
        stop : reorganizeMashup
32
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   504
    })
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   505
    .on("mouseover", ".item-video", function() {
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   506
        project.trigger("mouseover-annotation", project.getElement($(this).attr("data-segment-id")));
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   507
    })
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   508
    .on("mouseout", ".item-video", function() {
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   509
        project.trigger("mouseout-annotation");
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   510
    })
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   511
    .on("click", ".item-video", function() {
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   512
        project.trigger("click-annotation", project.getElement($(this).attr("data-segment-id")));
32
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   513
    })
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   514
    .on("click", ".edit", function(e) {
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   515
        var currentItem = $(this).parents(".item-video"),
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   516
            media = project.getElement(currentItem.attr("data-media-id")),
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   517
            segment = project.getElement(currentItem.attr("data-segment-id"));
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   518
        currentSegment = segment;
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   519
        setMedia(media);
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   520
        return false;
32
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   521
    })
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   522
    .on("click", ".top", function(e){
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   523
        var currentItem = $(this).parents(".item-video");
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   524
        currentItem.insertBefore(currentItem.prev());
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   525
		reorganizeMashup();
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   526
		return false;
32
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   527
    })
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   528
    .on("click", ".bottom", function(e){
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   529
        var currentItem = $(this).parents(".item-video");
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   530
        currentItem.insertAfter(currentItem.next());
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   531
		reorganizeMashup();
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   532
        return false;
32
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   533
    })
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   534
    .on("click", ".delete", function(e){
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   535
        var id = $(this).parents(".item-video").attr("data-segment-id");
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   536
        mashup.removeAnnotationById(id);
32
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   537
        if (!mashup.segments.length) {
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   538
            showEmpty();
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   539
        }
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   540
        return false;
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   541
    });
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   542
    
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   543
    /* Tangles */
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   544
    var tangleMsPerPixel = 100,
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   545
        activeTangle,
23
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   546
        tangleStartX,
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   547
        tangleStartVal,
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   548
        tangleHasMoved;
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   549
    
23
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   550
    $(".time-tangle").mousedown(function(evt) {
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   551
        activeTangle = $(this);
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   552
        activeTangle.addClass("active");
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   553
        tangleStartVal = +activeTangle.attr("data-milliseconds");
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   554
        tangleStartX = evt.pageX;
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   555
        tangleHasMoved = false;
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   556
        $(this).siblings(".time-tangle").addClass("deactivate");
23
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   557
        return false;
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   558
    });
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   559
    $(document)
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   560
        .mousemove(function(evt) {
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   561
            if (activeTangle) {
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   562
                tangleHasMoved = true;
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   563
                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
   564
                activeTangle.trigger("valuechange", newval);
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   565
                return false;
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   566
            }
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   567
        })
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   568
        .mouseup(function() {
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   569
            if (activeTangle) {
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   570
                activeTangle.text(activeTangle.text().replace(/\.\d+$/,''));
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   571
                $(".time-tangle").removeClass("active deactivate");
23
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   572
                activeTangle = undefined;
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   573
            }
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   574
        });
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   575
        
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   576
    $(".tangle-start")
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   577
        .mouseup(function(evt) {
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   578
            if (!tangleHasMoved && currentMedia && currentSegment) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   579
                currentMedia.setCurrentTime(currentSegment.begin);
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   580
            }
23
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   581
        })
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   582
        .on("valuechange", function(evt, val) {
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   583
            if (currentMedia && currentSegment) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   584
                currentSegment.setBegin(val);
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   585
            }
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   586
        });
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   587
    $(".tangle-end")
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   588
        .mouseup(function(evt) {
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   589
            if (!tangleHasMoved && currentMedia && currentSegment) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   590
                currentMedia.setCurrentTime(currentSegment.end);
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   591
            }
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   592
        })
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   593
        .on("valuechange", function(evt, val) {
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   594
            if (currentMedia && currentSegment) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   595
                currentSegment.setEnd(val);
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   596
            }
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   597
        });
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   598
    $(".tangle-duration").on("valuechange", function(evt, val) {
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   599
        if (currentMedia && currentSegment) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   600
            currentSegment.setDuration(val);
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   601
        }
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   602
    });
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   603
    
29
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   604
    /* Click on current segment in Preview */
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   605
    
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   606
    $(".mashup-description .edit").click(function() {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   607
        if (mashupCurrentAnnotation) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   608
            currentSegment = mashupCurrentAnnotation.annotation;
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   609
            setMedia(mashupCurrentAnnotation.getMedia());
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   610
        }
29
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   611
    });
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   612
    
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   613
    /* Handling related segments */
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   614
   
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   615
    $(".media-segments-list").on("mouseover", ".media-segment", function() {
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   616
        $(this).find(".media-segment-popin").show();
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   617
    }).on("mouseout", ".media-segment", function() {
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   618
        $(this).find(".media-segment-popin").hide();
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   619
    }).on("click", ".reprendre-segment", function() {
42
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   620
        var sid = $(this).attr("data-segment-id"),
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   621
            s = directory.getElement(sid) || apidirectory.getElement(sid);
29
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   622
        currentSegment.title = s.title;
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   623
        currentSegment.description = s.description;
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   624
        $("#segment-title").val(s.title);
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   625
        $("#segment-description").val(s.description);
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   626
        currentSegment.setBegin(s.begin);
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   627
        currentSegment.setEnd(s.end);
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   628
        return false;
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   629
    });
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   630
    
32
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   631
    /* Changing Hashcut Title and description */
39
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   632
    
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   633
    $("#hashcut-tags").tagit({
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   634
        onTagRemoved: updateSegmentTags,
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   635
        onTagAdded: updateSegmentTags
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   636
    });
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   637
    
39
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   638
    mashup.title = IriSP.hc_messages.mashup_title_placeholder;
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   639
    $(".title-video-wrap a").text(mashup.title);
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   640
    $("#hashcut-title").val(mashup.title);
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   641
    
32
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   642
    $("#hashcut-title").on("keyup change input paste", function() {
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   643
        mashup.title = $(this).val();
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   644
        $(".title-video-wrap a").text(mashup.title);
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   645
        mashup.trigger("change");
32
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   646
    });
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   647
    
39
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   648
    $("#hashcut-description").on("keyup change input paste", function() {
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   649
        mashup.description = $(this).val();
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   650
        mashup.trigger("change");
39
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   651
    });
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   652
    
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   653
    function updateMashupTags() {
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   654
        window.setTimeout(function() {
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   655
            mashup.keywords = $("#segment-tags").tagit("assignedTags");
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   656
        }, 0);
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   657
    }
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   658
    
42
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   659
    /* Publication */
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   660
   
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   661
    $(".publier-button").click(function() {
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   662
        var postproject = directory.newLocalSource(),
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   663
            anntype = new IriSP.Model.AnnotationType(false, postproject),
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   664
            annotations = mashup.getOriginalAnnotations();
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   665
        anntype.title = "hashcut-segments";
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   666
        annotations.forEach(function(_a) {
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   667
            _a.setAnnotationType(anntype.id);
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   668
        });
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   669
        postproject.addList("media",mashup.getMedias());
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   670
        postproject.addList("annotationType",[anntype]);
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   671
        postproject.addList("annotation",annotations);
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   672
        postproject.addList("mashup",[mashup]);
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   673
        postproject.addList("tag");
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   674
        postproject.creator = "IRI";
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   675
        postproject.title = mashup.title;
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   676
        postproject.description = mashup.description;
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   677
        console.log(IriSP.serializers.ldt.serialize(postproject));
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   678
        $.ajax({
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   679
            type: "POST",
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   680
            url: options.project_api_endpoint,
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   681
            data: IriSP.serializers.ldt.serialize(postproject),
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   682
            contentType: "application/cinelab",
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   683
//            headers: {"X-CSRFToken": "{{csrf_token}}"},
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   684
            success: function(data, status, request){
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   685
                    alert("api post success");
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   686
            },
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   687
            error: function(jqXHR, textStatus, errorThrown){
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   688
                alert(errorThrown);
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   689
            }
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   690
        });
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   691
    });
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   692
    
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   693
    mashup.trigger("change");
13
42c59d09670e display media list
veltr
parents: 12
diff changeset
   694
}