integration/js/editor.js
author cavaliet
Wed, 19 Dec 2012 13:23:34 +0100
changeset 139 ebaf7878c756
parent 131 e2d1478c843f
child 144 57f1d252b8f9
permissions -rw-r--r--
logout view and regexp for username creation.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
     1
IriSP.editor = function(options) {
32
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
     2
    
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
     3
    /* Load Media List */
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
     4
    
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
     5
    var directory = new IriSP.Model.Directory(),
42
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
     6
        apidirectory = new IriSP.Model.Directory(),
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
     7
        project = directory.remoteSource({
49
a21b851538b2 Added Media page
veltr
parents: 45
diff changeset
     8
            url: IriSP.endpoints.content,
a21b851538b2 Added Media page
veltr
parents: 45
diff changeset
     9
            url_params: _({}).extend(options.filter),
a21b851538b2 Added Media page
veltr
parents: 45
diff changeset
    10
            serializer: IriSP.serializers.content
a21b851538b2 Added Media page
veltr
parents: 45
diff changeset
    11
        }),
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
    12
        mashup = new IriSP.Model.Mashup(false, project),
45
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
    13
        mediatemplate = _.template(
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
    14
            '<li class="item-video media" data-media-id="<%= id %>"><div class="media-count-wrap"><span class="media-count"></span></div>'
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
    15
            + '<img class="thumbnail" src="<%= thumbnail %>" alt="<%= title %>" />'
43
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
    16
            + '<div class="video-info"><h3 class="title-video"><%= title %></h3><p class="description"><%= description %></p>'
104
1b84c7b2aeee Added Translations
veltr
parents: 97
diff changeset
    17
            + '<p class="time-length"><%= gettext("Duration:") %> <span><%= duration.toString() %></span></p></div><div class="media-found-segments"></div></li>'
45
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
    18
        ),
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
    19
        segmenttemplate = _.template(
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
    20
            '<li class="item-video annotation" data-segment-id="<%= annotation.id %>" data-media-id="<%= annotation.getMedia().id %>">'
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
    21
            + '<img class="thumbnail" src="<%= annotation.thumbnail %>" alt="<%= annotation.getMedia().title %>" />'
123
679809037606 Changes in video handling, displayed metadata and search results
veltr
parents: 118
diff changeset
    22
            + '<div class="validate <%= annotation.status %>"><div class="validate-tooltip"><ul><li><%= annotation.status_messages.join("</li><li>") %></li></ul></div></div><div class="video-info"><h3 class="segment-title"><%= annotation.title %></h3>'
679809037606 Changes in video handling, displayed metadata and search results
veltr
parents: 118
diff changeset
    23
            + '<p class="title-video"><%= annotation.getMedia().title %></p><p class="duration"><%= annotation.begin.toString() %> - <%= annotation.end.toString() %> (<%= annotation.getDuration().toString() %>)</p>'
104
1b84c7b2aeee Added Translations
veltr
parents: 97
diff changeset
    24
            + '<ul class="tools"><li><a class="edit" href="#" title="<%= gettext("Edit segment") %>"></a></li><li><a class="bottom" href="#" title="<%= gettext("Move segment down") %>"></a></li>'
1b84c7b2aeee Added Translations
veltr
parents: 97
diff changeset
    25
            + '<li><a class="top" href="#" title="<%= gettext("Move segment up") %>"></a></li><li><a class="delete" href="#" title="<%= gettext("Delete segment") %>"></a></li></ul></div></li>'
45
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
    26
        ),
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
    27
        mediasegmenttemplate = _.template(
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
    28
            '<div class="media-segment">'
49
a21b851538b2 Added Media page
veltr
parents: 45
diff changeset
    29
            + '<div class="media-segment-section" style="left:<%= left %>px; width:<%= width %>px; background:<%= color %>; top: <%= top %>px;" data-segment-id="<%= annotation.id %>"></div>'
65
60a1e58b0a08 Changed Pointer IMGs into DIVs
veltr
parents: 64
diff changeset
    30
            + '<div class="popin media-segment-popin" style="left:<%= popleft %>px; top: <%= 5+top %>px;"><div style="left:<%= pointerpos %>px;" class="pointer"></div><div class="popin-content">'
123
679809037606 Changes in video handling, displayed metadata and search results
veltr
parents: 118
diff changeset
    31
            + '<h3 class="segment-title"><%= annotation.title %></h3>'
131
e2d1478c843f removed Console.log
veltr
parents: 123
diff changeset
    32
            + '<p><%= annotation.description %></p><% if (annotation.keywords.length) { print("<p><strong>" + gettext("Tags:") + "</strong> " + annotation.keywords.join(", ") + "</p>"); } %>'
123
679809037606 Changes in video handling, displayed metadata and search results
veltr
parents: 118
diff changeset
    33
            + '<a href="#" class="button reprendre-segment" data-segment-id="<%= annotation.id %>"><%= gettext("Clone segment") %></a>'
104
1b84c7b2aeee Added Translations
veltr
parents: 97
diff changeset
    34
            + '<p><%= gettext("From:") %> <span><%= annotation.begin.toString() %></span> <%= gettext("to:") %> <span><%= annotation.end.toString() %></span> (<%= gettext("duration:") %> <span><%= annotation.getDuration().toString() %></span>)</p>'
45
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
    35
            + '</div></div></div>'
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
    36
        ),
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
    37
        mediasegmentlisttemplate = _.template(
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
    38
            '<div class="media-segment-list" style="height: <%= height %>px"><div class="media-current-section" style="left: <%= left %>px; width: <%= width %>px;"></div><div class="media-segment-list-inner"></div><%= segments %></div>'
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
    39
        ),
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
    40
        mediafoundtemplate = _.template(
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
    41
            '<div class="media-segment"><div class="media-segment-section" style="left:<%= left %>px; width:<%= width %>px; background:<%= color %>; top: <%= top %>px;"></div>'
65
60a1e58b0a08 Changed Pointer IMGs into DIVs
veltr
parents: 64
diff changeset
    42
            + '<div class="popin media-found-popin" style="left:<%= popleft %>px; top: <%= 5+top %>px;"><div style="left:<%= pointerpos %>px;" class="pointer"></div><div class="popin-content">'
123
679809037606 Changes in video handling, displayed metadata and search results
veltr
parents: 118
diff changeset
    43
            + '<h3 class="segment-title"><%= title %></h3>'
679809037606 Changes in video handling, displayed metadata and search results
veltr
parents: 118
diff changeset
    44
            + '<p><%= description %></p><% if (tags) { print("<p><strong>" + gettext("Tags:") + "</strong> " + tags + "</p>"); } %>'
679809037606 Changes in video handling, displayed metadata and search results
veltr
parents: 118
diff changeset
    45
            + '<a href="#" class="button clone-segment" data-segment-id="<%= annotation.id %>"><%= gettext("Clone segment") %></a>'
45
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
    46
            + '</div></div></div>'
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
    47
        ),
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
    48
        mediafoundlisttemplate = _.template(
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
    49
            '<div class="media-found-list" style="height: <%= height %>px"><div class="media-segment-list-inner"></div><%= segments %></div>'
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
    50
        ),
43
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
    51
        mashupstatus = '',
92
54cd42adea33 Minor changes
veltr
parents: 73
diff changeset
    52
        mediasegmentscache = {},
97
213e81430f7a Removed Duration while we don't have it
veltr
parents: 92
diff changeset
    53
        mashupModeAfterSave = false,
213e81430f7a Removed Duration while we don't have it
veltr
parents: 92
diff changeset
    54
        addMode = false,
213e81430f7a Removed Duration while we don't have it
veltr
parents: 92
diff changeset
    55
        currentMedia, currentSegment;
45
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
    56
        
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
    57
    IriSP.mashupcore(project, mashup);
39
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    58
    
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    59
    /* Validation of segments and mashup */
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    60
    
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    61
    var segmentcritical = [
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) {
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
    64
                return (_s.getDuration() >= 1000);
39
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    65
            },
104
1b84c7b2aeee Added Translations
veltr
parents: 97
diff changeset
    66
            message: gettext("A segment must be at least one second long")
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
    67
        },
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
    68
        {
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
    69
            validate: function(_s) {
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
    70
                return (_s.getDuration() < 180000);
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
    71
            },
104
1b84c7b2aeee Added Translations
veltr
parents: 97
diff changeset
    72
            message: gettext("A segment must be at most three minutes long")
39
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    73
        },
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    74
        {
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    75
            validate: function(_s) {
104
1b84c7b2aeee Added Translations
veltr
parents: 97
diff changeset
    76
                return (!!_s.title && _s.title !== gettext("Untitled segment"));
39
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    77
            },
104
1b84c7b2aeee Added Translations
veltr
parents: 97
diff changeset
    78
            message: gettext("A segment must have a title")
39
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    79
        }
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    80
    ];
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    81
    var segmentwarning = [
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    82
        {
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    83
            validate: function(_s) {
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
    84
                return (!!_s.description);
39
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    85
            },
104
1b84c7b2aeee Added Translations
veltr
parents: 97
diff changeset
    86
            message: gettext("A segment should have a description")
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
    87
        },
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
    88
        {
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
    89
            validate: function(_s) {
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
    90
                return (!!_s.keywords.length);
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
    91
            },
104
1b84c7b2aeee Added Translations
veltr
parents: 97
diff changeset
    92
            message: gettext("A segment should have tags")
39
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    93
        }
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    94
    ];
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    95
    
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    96
    var mashupcritical = [
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    97
        {
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    98
            validate: function(_m) {
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
    99
                return _m.segments.length > 2;
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   100
            },
104
1b84c7b2aeee Added Translations
veltr
parents: 97
diff changeset
   101
            message: gettext("A hashcut must be made from at least three segments")
39
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   102
        },
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   103
        {
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   104
            validate: function(_m) {
104
1b84c7b2aeee Added Translations
veltr
parents: 97
diff changeset
   105
                return (!!_m.title && _m.title !== gettext("Untitled Hashcut"));
39
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   106
            },
104
1b84c7b2aeee Added Translations
veltr
parents: 97
diff changeset
   107
            message: gettext("A hashcut must have a title")
39
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   108
        }
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   109
    ];
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   110
    var mashupwarning = [
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   111
        {
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   112
            validate: function(_m) {
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   113
                return !!_m.description
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   114
            },
104
1b84c7b2aeee Added Translations
veltr
parents: 97
diff changeset
   115
            message: gettext("A hashcut should have a description")
39
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   116
        }
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   117
    ];
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   118
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   119
    /* Fill left column with Media List */
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   120
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   121
    project.onLoad(function() {
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   122
        var html = '';
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   123
        project.getMedias().forEach(function(_m) {
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   124
            html += mediatemplate(_m);
13
42c59d09670e display media list
veltr
parents: 12
diff changeset
   125
        });
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   126
        $(".col-left .list-video").html(html);
43
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   127
        project.getMedias().forEach(function(_m) {
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   128
            apidirectory.remoteSource({
49
a21b851538b2 Added Media page
veltr
parents: 45
diff changeset
   129
                url: IriSP.endpoints.segment,
43
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   130
                url_params: {
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   131
                    iri_id: _m.id,
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   132
                    limit: 0
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   133
                },
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   134
                serializer: IriSP.serializers.segmentapi
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   135
            }).onLoad(function() {
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   136
                var medias = this.getMedias(),
92
54cd42adea33 Minor changes
veltr
parents: 73
diff changeset
   137
                    annotations = this.getAnnotations().filter(function(annotation) {
54cd42adea33 Minor changes
veltr
parents: 73
diff changeset
   138
                        return annotation.getDuration() > 0;
54cd42adea33 Minor changes
veltr
parents: 73
diff changeset
   139
                    });;
43
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   140
                if (medias && medias.length) {
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   141
                    var mediaid = medias[0].id;
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   142
                    el = $(".item-video[data-media-id='" + mediaid + "'] .media-count");
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   143
                    el.text(annotations.length).parent().show();
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   144
                    mediasegmentscache[mediaid] = annotations;
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   145
                    if (currentMedia && mediaid === currentMedia.id && currentSegment) {
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   146
                        showOtherSegments();
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   147
                    }
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   148
                }
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   149
            });
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   150
        });
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   151
    });
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   152
    
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   153
    /* Search Media with left column form */
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   154
    
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   155
    $(".col-left input").on("keyup change input paste", function() {
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   156
        var val = $(this).val();
123
679809037606 Changes in video handling, displayed metadata and search results
veltr
parents: 118
diff changeset
   157
        if (val.length < 2) {
679809037606 Changes in video handling, displayed metadata and search results
veltr
parents: 118
diff changeset
   158
            val = false;
679809037606 Changes in video handling, displayed metadata and search results
veltr
parents: 118
diff changeset
   159
        }
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   160
        if (val) {
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   161
            var find = IriSP.Model.regexpFromTextOrArray(val, true),
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   162
                replace = IriSP.Model.regexpFromTextOrArray(val, false);
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   163
        }
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   164
        $(".col-left .item-video").each(function() {
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   165
            var li = $(this),
45
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   166
                mediaid = li.attr("data-media-id"),
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   167
                media = directory.getElement(mediaid);
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   168
            if (!val) {
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   169
                li.find(".title-video").text(media.title);
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   170
                li.find(".description").text(media.description);
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   171
                li.find(".media-found-segments").html("");
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   172
                li.show();
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   173
            } else {
45
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   174
                var apimedia = apidirectory.getElement(mediaid);
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   175
                if (apimedia) {
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   176
                    var annotations = apimedia.getAnnotations().searchByTextFields(val);
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   177
                } else {
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   178
                    var annotations = [];
123
679809037606 Changes in video handling, displayed metadata and search results
veltr
parents: 118
diff changeset
   179
                }
45
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   180
                var found = find.test(media.title) || find.test(media.description) || annotations.length;
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   181
                if (found) {
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   182
                    li.find(".title-video").html(media.title.replace(replace, '<span style="background: #fc00ff; color: #ffffff;">$1</span>'));
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   183
                    li.find(".description").html(media.description.replace(replace, '<span style="background: #fc00ff; color: #ffffff;">$1</span>'));
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   184
                    var html = '',
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   185
                        k = 230 / media.duration,
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   186
                        lines = [];
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   187
                    _(annotations).each(function(_a, i) {
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   188
                        var pos = k * (_a.begin + _a.end) / 2,
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   189
                            corrpos = Math.max(76, Math.min(156, pos)),
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   190
                            line = IriSP._(lines).find(function(line) {
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   191
                                return !IriSP._(line.annotations).find(function(ann) {
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   192
                                    return ann.begin < _a.end && ann.end > _a.begin
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   193
                                });
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   194
                            });
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   195
                        if (!line) {
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   196
                            line = { index: lines.length, annotations: []};
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   197
                            lines.push(line); 
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   198
                        }
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   199
                        line.annotations.push(_a);
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   200
                        vizdata = {
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   201
                            annotation : _a,
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   202
                            left : k * _a.begin,
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   203
                            width : k * _a.getDuration(),
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   204
                            top: 8 * line.index,
50
89e152523cb6 Improving media page
veltr
parents: 49
diff changeset
   205
                            color: IriSP.vizcolors[i % IriSP.vizcolors.length],
45
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   206
                            title: _a.title.replace(replace, '<span style="background: #fc00ff; color: #ffffff;">$1</span>'),
123
679809037606 Changes in video handling, displayed metadata and search results
veltr
parents: 118
diff changeset
   207
                            description: _a.description.replace(replace, '<span style="background: #fc00ff; color: #ffffff;">$1</span>'),
679809037606 Changes in video handling, displayed metadata and search results
veltr
parents: 118
diff changeset
   208
                            tags: _a.keywords.join(", ").replace(replace, '<span style="background: #fc00ff; color: #ffffff;">$1</span>'),
45
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   209
                            popleft : corrpos,
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   210
                            pointerpos : (pos - corrpos),
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   211
                        }
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   212
                        html += mediafoundtemplate(vizdata);
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   213
                    });
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   214
                    html = mediafoundlisttemplate({
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   215
                        height: 8 * lines.length,
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   216
                        segments: html
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   217
                    });
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   218
                    li.find(".media-found-segments").html(html);
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   219
                    li.show();
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   220
                } else {
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   221
                    li.hide();
13
42c59d09670e display media list
veltr
parents: 12
diff changeset
   222
                }
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   223
            }
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   224
        })
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   225
    });
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   226
    
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   227
    /* Fill right column when mashup is updated */
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   228
    
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   229
    function updateMashupUI() {
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   230
        var listhtml = '', critical = false, warning = false, messages = [];
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   231
        mashup.segments.forEach(function(_s) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   232
            listhtml += segmenttemplate(_s);
39
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   233
            if (_s.annotation.status === "critical") {
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   234
                critical = true;
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   235
            }
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   236
        });
39
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   237
        if (critical) {
123
679809037606 Changes in video handling, displayed metadata and search results
veltr
parents: 118
diff changeset
   238
            messages.push(gettext("One or more segments are invalid"));
39
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   239
        }
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   240
        
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   241
        _(mashupcritical).each(function(sc) {
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   242
            if (!sc.validate(mashup)) {
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   243
                critical = true;
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   244
                messages.push(sc.message);
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   245
            }
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   246
        });
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   247
        _(mashupwarning).each(function(sc) {
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   248
            if (!sc.validate(mashup)) {
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   249
                warning = true;
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   250
                messages.push(sc.message);
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   251
            }
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   252
        });
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   253
        mashup.status = critical ? "critical" : (warning ? "warning" : "valid");
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   254
        if (!messages.length) {
123
679809037606 Changes in video handling, displayed metadata and search results
veltr
parents: 118
diff changeset
   255
            messages.push(gettext("Your hashcut is valid!"));
39
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   256
        }
104
1b84c7b2aeee Added Translations
veltr
parents: 97
diff changeset
   257
        mashupstatus = ' - ' + _(messages).join('\n - ');
43
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   258
        
39
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   259
        $(".publier-button").toggleClass("disable", critical);
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   260
        
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   261
        $(".liste-segment .validate").removeClass("critical warning valid").addClass(mashup.status);
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   262
        $(".liste-segment .validate-tooltip").html("<ul><li>" + messages.join("</li><li>")+"</li></ul>");
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   263
        
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   264
        $(".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
   265
        
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   266
        project.trigger("mouseout-annotation");
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   267
    }
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   268
    
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   269
    mashup.on("setcurrent", function() {
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   270
        currentMedia = mashup;
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   271
    });
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   272
    
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   273
    mashup.on("change",updateMashupUI);
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   274
    
23
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   275
    /* Slice Widget */
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   276
   
23
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   277
    var sliceSlider = $(".Ldt-Slice"),
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   278
        sliceStartTime,
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   279
        slidersRange = 920;
23
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   280
    
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   281
    sliceSlider.slider({
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   282
        range: true,
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   283
        values: [0, slidersRange],
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   284
        min: 0,
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   285
        max: slidersRange,
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   286
        start: function() {
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   287
            if (currentMedia) {
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   288
                if (!currentMedia.getPaused()) {
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   289
                    currentMedia.pause();
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   290
                }
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   291
            }
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   292
        },
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   293
        slide: function(event, ui) {
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   294
            if (currentMedia && currentSegment) {
23
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   295
                var t = currentMedia.duration * ui.value / slidersRange;
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   296
                if (ui.value === ui.values[0]) {
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   297
                    currentSegment.setBegin(t);
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   298
                } else {
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   299
                    currentSegment.setEnd(t);
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   300
                }
23
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   301
            }
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   302
        }
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   303
    });
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   304
    
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   305
    sliceSlider.find(".ui-slider-handle:first")
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   306
        .addClass("Ldt-Slice-left-handle")
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   307
        .click(function() {
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   308
            if (currentMedia && currentSegment) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   309
                currentMedia.setCurrentTime(currentSegment.begin);
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   310
            }
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   311
        });
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   312
    sliceSlider.find(".ui-slider-handle:last")
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   313
        .addClass("Ldt-Slice-right-handle")
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   314
        .click(function() {
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   315
            if (currentMedia && currentSegment) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   316
                currentMedia.setCurrentTime(currentSegment.end);
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   317
            }
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   318
        });
23
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   319
    
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   320
    
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   321
    /* Update Segment UI */
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   322
    
39
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   323
    function updateSegmentUI() {
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   324
        if (currentMedia && currentSegment) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   325
            var start = currentSegment.begin,
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   326
                end = currentSegment.end,
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   327
                dur = currentSegment.getDuration(),
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   328
                f = slidersRange / currentMedia.duration,
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   329
                tangleStart = $(".tangle-start"),
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   330
                tangleEnd = $(".tangle-end"),
29
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   331
                tangleDuration = $(".tangle-duration"),
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   332
                k = 100 / currentMedia.duration,
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   333
                p = k * (start + end) / 2;
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   334
            sliceSlider.slider( "values", [ f * start, f * end ] );
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   335
            tangleStart.text(start.toString(tangleStart.hasClass("active"))).attr("data-milliseconds",start.milliseconds);
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   336
            tangleEnd.text(end.toString(tangleEnd.hasClass("active"))).attr("data-milliseconds",end.milliseconds);
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   337
            tangleDuration.text(dur.toString(tangleDuration.hasClass("active"))).attr("data-milliseconds",dur.milliseconds);
39
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   338
            $(".segmentation .pointer").css("left", p + "%");
29
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   339
            $(".media-current-section").css({
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   340
                left: (k * start) + "%",
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   341
                width: (k * dur) + "%"
39
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   342
            });
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   343
            var messages = [],
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   344
                critical = false,
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   345
                warning = false;
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   346
            _(segmentcritical).each(function(sc) {
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   347
                if (!sc.validate(currentSegment)) {
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   348
                    critical = true;
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   349
                    messages.push(sc.message);
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   350
                }
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   351
            });
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   352
            _(segmentwarning).each(function(sc) {
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   353
                if (!sc.validate(currentSegment)) {
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   354
                    warning = true;
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   355
                    messages.push(sc.message);
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   356
                }
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   357
            });
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   358
            currentSegment.status = critical ? "critical" : (warning ? "warning" : "valid");
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   359
            if (!messages.length) {
123
679809037606 Changes in video handling, displayed metadata and search results
veltr
parents: 118
diff changeset
   360
                messages.push(gettext("This segment is valid!"))
39
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   361
            }
104
1b84c7b2aeee Added Translations
veltr
parents: 97
diff changeset
   362
            currentSegment.status_messages = _(messages);
39
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   363
            
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   364
            $(".segmentation .validate").removeClass("critical warning valid").addClass(currentSegment.status);
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   365
            $(".segmentation .validate-tooltip").html("<ul><li>" + currentSegment.status_messages.join("</li><li>")+"</li></ul>");
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   366
        }
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   367
    }
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   368
    
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   369
    function setMedia(media) {
23
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   370
        if (currentMedia) {
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   371
            currentMedia.pause();
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   372
        }
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   373
        currentMedia = media;
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   374
        project.trigger("set-current", media);
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   375
        if (currentMedia.elementType == "media") {
23
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   376
            showSegmentation();
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   377
            $(".tab-media-title").text(currentMedia.title);
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   378
            
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   379
            addMode = !(currentSegment && mashup.hasAnnotation(currentSegment));
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   380
            
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   381
            if (!currentSegment) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   382
                currentSegment = new IriSP.Model.Annotation(false, project);
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   383
                currentSegment.setMedia(currentMedia.id);
45
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   384
                currentSegment.setBegin(currentMedia.getCurrentTime());
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   385
                currentSegment.setEnd(Math.min(currentMedia.getCurrentTime() +  180000, currentMedia.duration));
104
1b84c7b2aeee Added Translations
veltr
parents: 97
diff changeset
   386
                currentSegment.title = gettext("Untitled segment");
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   387
                currentSegment.color = currentMedia.color;
43
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   388
                currentSegment.thumbnail = currentMedia.thumbnail;
42
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   389
                currentSegment.created = new Date();
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   390
                currentSegment.keywords = [];
39
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   391
                currentSegment.description = "";
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   392
                currentSegment.on("change-begin", function() {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   393
                    if (currentMedia && currentSegment === this) {
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   394
                        currentMedia.setCurrentTime(this.begin);
39
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   395
                        updateSegmentUI();
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   396
                    }
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   397
                });
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   398
                currentSegment.on("change-end", function() {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   399
                    if (currentMedia && currentSegment === this) {
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   400
                        currentMedia.setCurrentTime(this.end);
39
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   401
                        updateSegmentUI();
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   402
                    }
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   403
                });
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   404
            }
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   405
            if (currentMedia.loaded) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   406
                currentMedia.setCurrentTime(currentSegment.begin);
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   407
            }
104
1b84c7b2aeee Added Translations
veltr
parents: 97
diff changeset
   408
            $(".add-segment").val(addMode ? gettext("Add segment to hashcut") : gettext("Save segment"));
1b84c7b2aeee Added Translations
veltr
parents: 97
diff changeset
   409
            $(".create-or-edit").text(addMode ? gettext("Create new segment") : gettext("Edit existing segment"));
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   410
            $("#segment-title").val(currentSegment.title);
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   411
            $("#segment-description").val(currentSegment.description);
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   412
            var segment_tags = $("#segment-tags");
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   413
            segment_tags.tagit("option","onTagRemoved",function(){});
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   414
            segment_tags.tagit("option","onTagAdded",function(){});
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   415
            segment_tags.tagit("removeAll");
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   416
            _(currentSegment.keywords).each(function(tag) {
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   417
                segment_tags.tagit("createTag",tag);
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   418
            });
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   419
            segment_tags.tagit("option","onTagRemoved",updateSegmentTags);
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   420
            segment_tags.tagit("option","onTagAdded",updateSegmentTags);
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   421
            updateSegmentUI();
29
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   422
            var relatedSegments = mashup.segments.filter(function(_s) {
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   423
                return _s.getMedia() === currentMedia && _s.annotation !== currentSegment;
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   424
            });
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   425
            if (relatedSegments.length) {
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   426
                $(".self-media-segments").show();
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   427
            } else {
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   428
                $(".self-media-segments").hide();
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   429
            }
45
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   430
            $(".self-media-segments .media-segments-list").html(mediaSegmentList(_(relatedSegments).pluck("annotation")));
43
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   431
            showOtherSegments();
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   432
            project.trigger("mouseout-annotation");
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   433
        }
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   434
        if (currentMedia.elementType === "mashup") {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   435
            showPreview();
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   436
        }
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   437
    }
43
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   438
    
45
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   439
    function mediaSegmentList(_annotations) {
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   440
        var html = '',
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   441
            k = $(".Ldt-Slider").width() / currentMedia.duration,
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   442
            lines = [];
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   443
        _(_annotations).each(function(_a, i) {
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   444
            var pos = k * (_a.begin + _a.end) / 2,
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   445
                corrpos = Math.max(145, Math.min(305, pos)),
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   446
                line = IriSP._(lines).find(function(line) {
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   447
                    return !IriSP._(line.annotations).find(function(ann) {
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   448
                        return ann.begin < _a.end && ann.end > _a.begin
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   449
                    });
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   450
                });
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   451
            if (!line) {
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   452
                line = { index: lines.length, annotations: []};
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   453
                lines.push(line); 
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   454
            }
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   455
            line.annotations.push(_a);
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   456
            vizdata = {
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   457
                annotation : _a,
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   458
                popleft : corrpos,
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   459
                left : k * _a.begin,
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   460
                width : k * _a.getDuration(),
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   461
                height: 8,
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   462
                top: 8 * line.index,
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   463
                pointerpos : (pos - corrpos),
50
89e152523cb6 Improving media page
veltr
parents: 49
diff changeset
   464
                color: IriSP.vizcolors[i % IriSP.vizcolors.length]
45
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   465
            }
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   466
            html += mediasegmenttemplate(vizdata);
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   467
        });
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   468
        return mediasegmentlisttemplate({
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   469
            height: 8 * lines.length,
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   470
            left: k * currentSegment.begin,
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   471
            width: k * currentSegment.getDuration(),
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   472
            segments: html
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   473
        });
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   474
    }
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   475
    
43
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   476
    /* Show Related Segments */
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   477
    
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   478
    function showOtherSegments() {
45
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   479
        var annotations = mediasegmentscache[currentMedia.id];
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   480
        $(".other-media-segments .media-segments-list").html(mediaSegmentList(annotations));
43
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   481
        if (annotations && annotations.length) {
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   482
            $(".other-media-segments").show();
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   483
        }
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   484
        else {
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   485
            $(".other-media-segments").hide();
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   486
        }
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   487
     }
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   488
    /* Set In, Out */
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   489
   
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   490
    $(".Ldt-Ctrl-SetIn").click(function() {
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   491
        if (currentMedia && currentSegment) {
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   492
            currentSegment.setBegin(currentMedia.getCurrentTime());
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   493
        }
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   494
    });
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   495
    $(".Ldt-Ctrl-SetOut").click(function() {
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   496
        if (currentMedia && currentSegment) {
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   497
            currentSegment.setEnd(currentMedia.getCurrentTime());
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   498
        }
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   499
    });
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   500
       
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   501
    /* Segment Form interaction */
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   502
   
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   503
    $("#segment-title").on("keyup change input paste", function() {
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   504
        if (currentMedia && currentSegment) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   505
            currentSegment.title = $(this).val();
39
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   506
            updateSegmentUI();
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   507
            mashup.trigger("change");
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   508
        }
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   509
    });
43
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   510
    $("#segment-title").on("focus click", function() {
104
1b84c7b2aeee Added Translations
veltr
parents: 97
diff changeset
   511
        if ($(this).val() === gettext("Untitled segment")) {
43
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   512
            $(this).val("");
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   513
        }
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   514
    });
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   515
    $("#segment-description").on("keyup change input paste", function() {
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   516
        if (currentMedia && currentSegment) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   517
            currentSegment.description = $(this).val();
64
2de3ca9542ed Corrections
veltr
parents: 50
diff changeset
   518
            updateSegmentUI();
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   519
            mashup.trigger("change");
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   520
        }
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   521
    });
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   522
    $("#segment-form").submit(function() {
64
2de3ca9542ed Corrections
veltr
parents: 50
diff changeset
   523
        currentSegment.title = $("#segment-title").val();
2de3ca9542ed Corrections
veltr
parents: 50
diff changeset
   524
        currentSegment.description = $("#segment-description").val();
2de3ca9542ed Corrections
veltr
parents: 50
diff changeset
   525
        currentSegment.keywords = $("#segment-tags").tagit("assignedTags");
2de3ca9542ed Corrections
veltr
parents: 50
diff changeset
   526
        updateSegmentUI();
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   527
        if (addMode) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   528
            mashup.addAnnotation(currentSegment);
45
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   529
            currentSegment = undefined;
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   530
            setMedia(currentMedia);
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   531
        } else {
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   532
            mashup.trigger("change");
49
a21b851538b2 Added Media page
veltr
parents: 45
diff changeset
   533
            var segment = mashup.getAnnotation(currentSegment);
45
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   534
            currentSegment = undefined;
97
213e81430f7a Removed Duration while we don't have it
veltr
parents: 92
diff changeset
   535
            if (mashupModeAfterSave) {
213e81430f7a Removed Duration while we don't have it
veltr
parents: 92
diff changeset
   536
                setMedia(mashup);
213e81430f7a Removed Duration while we don't have it
veltr
parents: 92
diff changeset
   537
                if (segment) {
213e81430f7a Removed Duration while we don't have it
veltr
parents: 92
diff changeset
   538
                    mashup.setCurrentTime(segment.begin);
213e81430f7a Removed Duration while we don't have it
veltr
parents: 92
diff changeset
   539
                    mashup.trigger("enter-annotation",segment);
213e81430f7a Removed Duration while we don't have it
veltr
parents: 92
diff changeset
   540
                }
213e81430f7a Removed Duration while we don't have it
veltr
parents: 92
diff changeset
   541
            } else {
118
7ad8b85dbd57 correct setmedia on hashcut
ymh <ymh.work@gmail.com>
parents: 109
diff changeset
   542
                setMedia(currentMedia);
45
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   543
            }
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   544
        }
29
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   545
        return false;
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   546
    });
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   547
    
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   548
    $("#segment-tags").tagit();
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   549
    
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   550
    
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   551
    /* 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
   552
     * are triggered before the data are updated */
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   553
    function updateSegmentTags() {
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   554
        window.setTimeout(function() {
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   555
            if (currentMedia && currentSegment) {
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   556
                currentSegment.keywords = $("#segment-tags").tagit("assignedTags");
64
2de3ca9542ed Corrections
veltr
parents: 50
diff changeset
   557
                updateSegmentUI();
2de3ca9542ed Corrections
veltr
parents: 50
diff changeset
   558
                mashup.trigger("change");
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   559
            }
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   560
        }, 0);
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   561
    }
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   562
    
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   563
    /* Click on media items */
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   564
   
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   565
    $(".col-left").on("click", ".item-video", function() {
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   566
        currentSegment = undefined;
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   567
        setMedia(project.getElement($(this).attr("data-media-id")));
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   568
    });
12
8a8b6097d382 Starting 'editorjs' branch
veltr
parents:
diff changeset
   569
    
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   570
    /* Click on Tabs */
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   571
    
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   572
    function showSegmentation() {
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   573
        $(".col-middle").removeClass("empty-mode pvw-mode").addClass("segment-mode");
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   574
        return false;
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   575
    }
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   576
    function showPreview() {
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   577
        $(".col-middle").removeClass("empty-mode segment-mode").addClass("pvw-mode");
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   578
        return false;
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   579
    }
32
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   580
    function showEmpty() {
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   581
        $("video").hide();
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   582
        $(".col-middle").removeClass("pvw-mode segment-mode").addClass("empty-mode");
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   583
        return false;
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   584
    }
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   585
    
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   586
    $(".tab-pvw").click(function() {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   587
        if (mashup.segments.length) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   588
            setMedia(mashup);
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   589
        }
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   590
    });
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   591
    
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   592
    /* Click on segments */
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   593
    
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   594
    function reorganizeMashup() {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   595
        var ids = $(".organize-segments .item-video").map(function(){return $(this).attr("data-segment-id")});
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   596
        mashup.setAnnotationsById(ids);
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   597
    }
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   598
    
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   599
    project.on("mouseover-annotation", function(annotation) {
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   600
        var mediaid = annotation.getMedia().id;
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   601
        $(".media").removeClass("active");
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   602
        $(".media[data-media-id='" + mediaid + "']").addClass("active");
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   603
    });
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   604
    
43
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   605
    project.on("mouseout-annotation", function() {
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   606
        $(".media").removeClass("active");
32
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   607
        var mediaid = undefined;
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   608
        if (currentMedia && currentMedia.elementType === "media") {
32
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   609
            mediaid = currentMedia.id;
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   610
            if (currentSegment) {
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   611
                $(".annotation").removeClass("active");
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   612
                $(".annotation[data-segment-id='" + currentSegment.id + "']").addClass("active");
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   613
            }
32
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   614
        }
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   615
        if (currentMedia === mashup && mashup.currentMedia) {
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   616
            mediaid = mashup.currentMedia.id
32
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   617
        }
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   618
        $(".media[data-media-id='" + mediaid + "']").addClass("active");
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   619
    });
32
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   620
    
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   621
    $(".organize-segments")
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   622
    .sortable({
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   623
        stop : reorganizeMashup
32
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   624
    })
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   625
    .on("mouseover", ".item-video", function() {
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   626
        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
   627
    })
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   628
    .on("mouseout", ".item-video", function() {
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   629
        project.trigger("mouseout-annotation");
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   630
    })
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   631
    .on("click", ".item-video", function() {
69
e56b4456668f Added CSRF Token and Username Option
veltr
parents: 65
diff changeset
   632
        var segment = project.getElement($(this).attr("data-segment-id"));
e56b4456668f Added CSRF Token and Username Option
veltr
parents: 65
diff changeset
   633
        if (currentMedia === mashup) {
e56b4456668f Added CSRF Token and Username Option
veltr
parents: 65
diff changeset
   634
            project.trigger("click-annotation", segment);
e56b4456668f Added CSRF Token and Username Option
veltr
parents: 65
diff changeset
   635
        } else {
e56b4456668f Added CSRF Token and Username Option
veltr
parents: 65
diff changeset
   636
            currentSegment = segment;
e56b4456668f Added CSRF Token and Username Option
veltr
parents: 65
diff changeset
   637
            setMedia(segment.getMedia());
e56b4456668f Added CSRF Token and Username Option
veltr
parents: 65
diff changeset
   638
        }
32
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   639
    })
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   640
    .on("click", ".edit", function(e) {
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   641
        var currentItem = $(this).parents(".item-video"),
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   642
            media = project.getElement(currentItem.attr("data-media-id")),
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   643
            segment = project.getElement(currentItem.attr("data-segment-id"));
97
213e81430f7a Removed Duration while we don't have it
veltr
parents: 92
diff changeset
   644
        mashupModeAfterSave = !!(currentMedia === mashup);
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   645
        currentSegment = segment;
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   646
        setMedia(media);
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   647
        return false;
32
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   648
    })
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   649
    .on("click", ".top", function(e){
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   650
        var currentItem = $(this).parents(".item-video");
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   651
        currentItem.insertBefore(currentItem.prev());
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   652
		reorganizeMashup();
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   653
		return false;
32
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   654
    })
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   655
    .on("click", ".bottom", function(e){
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   656
        var currentItem = $(this).parents(".item-video");
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   657
        currentItem.insertAfter(currentItem.next());
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   658
		reorganizeMashup();
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   659
        return false;
32
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   660
    })
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   661
    .on("click", ".delete", function(e){
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   662
        var id = $(this).parents(".item-video").attr("data-segment-id");
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   663
        mashup.removeAnnotationById(id);
32
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   664
        if (!mashup.segments.length) {
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   665
            showEmpty();
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   666
        }
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   667
        return false;
22
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   668
    });
bd904d592881 Started player integration
veltr
parents: 18
diff changeset
   669
    
73
475e5fb0ea2b Cleaned imgs, corrected some bugs
veltr
parents: 69
diff changeset
   670
    $(".mashup-frise").click(function(evt) {
475e5fb0ea2b Cleaned imgs, corrected some bugs
veltr
parents: 69
diff changeset
   671
        if (!mashup.duration.milliseconds) {
475e5fb0ea2b Cleaned imgs, corrected some bugs
veltr
parents: 69
diff changeset
   672
            return;
475e5fb0ea2b Cleaned imgs, corrected some bugs
veltr
parents: 69
diff changeset
   673
        }
475e5fb0ea2b Cleaned imgs, corrected some bugs
veltr
parents: 69
diff changeset
   674
        var el = $(this), t = ( evt.pageX - el.offset().left ) * mashup.duration / el.width(), segment = mashup.getAnnotationAtTime(t);
475e5fb0ea2b Cleaned imgs, corrected some bugs
veltr
parents: 69
diff changeset
   675
        if (segment) {
475e5fb0ea2b Cleaned imgs, corrected some bugs
veltr
parents: 69
diff changeset
   676
            if (currentMedia === mashup) {
475e5fb0ea2b Cleaned imgs, corrected some bugs
veltr
parents: 69
diff changeset
   677
                project.trigger("click-annotation", segment.annotation);
475e5fb0ea2b Cleaned imgs, corrected some bugs
veltr
parents: 69
diff changeset
   678
            } else {
475e5fb0ea2b Cleaned imgs, corrected some bugs
veltr
parents: 69
diff changeset
   679
                currentSegment = segment.annotation;
475e5fb0ea2b Cleaned imgs, corrected some bugs
veltr
parents: 69
diff changeset
   680
                setMedia(currentSegment.getMedia());
475e5fb0ea2b Cleaned imgs, corrected some bugs
veltr
parents: 69
diff changeset
   681
            }
475e5fb0ea2b Cleaned imgs, corrected some bugs
veltr
parents: 69
diff changeset
   682
        }
475e5fb0ea2b Cleaned imgs, corrected some bugs
veltr
parents: 69
diff changeset
   683
    });
475e5fb0ea2b Cleaned imgs, corrected some bugs
veltr
parents: 69
diff changeset
   684
    
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   685
    /* Tangles */
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   686
    var tangleMsPerPixel = 100,
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   687
        activeTangle,
23
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   688
        tangleStartX,
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   689
        tangleStartVal,
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   690
        tangleHasMoved;
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   691
    
23
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   692
    $(".time-tangle").mousedown(function(evt) {
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   693
        activeTangle = $(this);
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   694
        activeTangle.addClass("active");
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   695
        tangleStartVal = +activeTangle.attr("data-milliseconds");
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   696
        tangleStartX = evt.pageX;
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   697
        tangleHasMoved = false;
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   698
        $(this).siblings(".time-tangle").addClass("deactivate");
23
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   699
        return false;
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   700
    });
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   701
    $(document)
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   702
        .mousemove(function(evt) {
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   703
            if (activeTangle) {
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   704
                tangleHasMoved = true;
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   705
                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
   706
                activeTangle.trigger("valuechange", newval);
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   707
                return false;
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   708
            }
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
        .mouseup(function() {
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   711
            if (activeTangle) {
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   712
                activeTangle.text(activeTangle.text().replace(/\.\d+$/,''));
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   713
                $(".time-tangle").removeClass("active deactivate");
23
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   714
                activeTangle = undefined;
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   715
            }
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   716
        });
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   717
        
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   718
    $(".tangle-start")
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   719
        .mouseup(function(evt) {
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   720
            if (!tangleHasMoved && currentMedia && currentSegment) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   721
                currentMedia.setCurrentTime(currentSegment.begin);
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   722
            }
23
c9dc489913af Work on video loading - Commit before weekend
veltr
parents: 22
diff changeset
   723
        })
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   724
        .on("valuechange", function(evt, val) {
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   725
            if (currentMedia && currentSegment) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   726
                currentSegment.setBegin(val);
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   727
            }
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   728
        });
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   729
    $(".tangle-end")
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   730
        .mouseup(function(evt) {
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   731
            if (!tangleHasMoved && currentMedia && currentSegment) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   732
                currentMedia.setCurrentTime(currentSegment.end);
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   733
            }
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   734
        })
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   735
        .on("valuechange", function(evt, val) {
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   736
            if (currentMedia && currentSegment) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   737
                currentSegment.setEnd(val);
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   738
            }
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   739
        });
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   740
    $(".tangle-duration").on("valuechange", function(evt, val) {
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   741
        if (currentMedia && currentSegment) {
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   742
            currentSegment.setDuration(val);
25
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   743
        }
eea45f9b124b commit before merge
veltr
parents: 23
diff changeset
   744
    });
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   745
    
29
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   746
    /* Click on current segment in Preview */
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   747
    
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   748
    $(".mashup-description .edit").click(function() {
43
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   749
        if (mashup.currentAnnotation) {
97
213e81430f7a Removed Duration while we don't have it
veltr
parents: 92
diff changeset
   750
            mashupModeAfterSave = !!(currentMedia === mashup);
43
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   751
            currentSegment = mashup.currentAnnotation.annotation;
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   752
            setMedia(mashup.currentAnnotation.getMedia());
27
b2d068afdbd8 Mashup editing and preview
veltr
parents: 26
diff changeset
   753
        }
43
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   754
        return false;
29
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   755
    });
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   756
    
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   757
    /* Handling related segments */
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   758
   
45
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   759
    function cloneSegment(sid) {
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   760
        var s = directory.getElement(sid) || apidirectory.getElement(sid),
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   761
            media = directory.getElement(s.getMedia().id);
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   762
        
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   763
        currentSegment = new IriSP.Model.Annotation(false, project);
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   764
        currentSegment.setMedia(media.id);
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   765
        currentSegment.setBegin(s.begin);
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   766
        currentSegment.setEnd(s.end);
104
1b84c7b2aeee Added Translations
veltr
parents: 97
diff changeset
   767
        currentSegment.title = gettext("Copy of ") + s.title;
45
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   768
        currentSegment.description = s.description;
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   769
        currentSegment.keywords = s.keywords;
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   770
        currentSegment.color = media.color;
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   771
        currentSegment.thumbnail = media.thumbnail;
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   772
        currentSegment.created = new Date();
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   773
        currentSegment.on("change-begin", function() {
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   774
            if (currentMedia && currentSegment === this) {
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   775
                currentMedia.setCurrentTime(this.begin);
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   776
                updateSegmentUI();
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   777
            }
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   778
        });
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   779
        currentSegment.on("change-end", function() {
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   780
            if (currentMedia && currentSegment === this) {
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   781
                currentMedia.setCurrentTime(this.end);
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   782
                updateSegmentUI();
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   783
            }
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   784
        });
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   785
        setMedia(media);
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   786
    }
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   787
    
29
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   788
    $(".media-segments-list").on("mouseover", ".media-segment", function() {
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   789
        $(this).find(".media-segment-popin").show();
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   790
    }).on("mouseout", ".media-segment", function() {
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   791
        $(this).find(".media-segment-popin").hide();
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   792
    }).on("click", ".reprendre-segment", function() {
45
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   793
        cloneSegment($(this).attr("data-segment-id"));
29
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   794
        return false;
49
a21b851538b2 Added Media page
veltr
parents: 45
diff changeset
   795
    }).on("click", ".media-segment-section", function() {
a21b851538b2 Added Media page
veltr
parents: 45
diff changeset
   796
        var sid = $(this).attr("data-segment-id"),
a21b851538b2 Added Media page
veltr
parents: 45
diff changeset
   797
            s = directory.getElement(sid) || apidirectory.getElement(sid);
a21b851538b2 Added Media page
veltr
parents: 45
diff changeset
   798
        if (s.media.id === currentMedia.id) {
a21b851538b2 Added Media page
veltr
parents: 45
diff changeset
   799
            currentMedia.setCurrentTime(s.begin);
a21b851538b2 Added Media page
veltr
parents: 45
diff changeset
   800
        }
29
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   801
    });
5ce5e26091ea Various improvements
veltr
parents: 27
diff changeset
   802
    
45
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   803
    $(".col-left").on("mouseover", ".media-segment", function() {
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   804
        $(this).find(".media-found-popin").show();
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   805
    }).on("mouseout", ".media-segment", function() {
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   806
        $(this).find(".media-found-popin").hide();
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   807
    }).on("click", ".clone-segment", function() {
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   808
        cloneSegment($(this).attr("data-segment-id"));
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   809
        return false;
f39df810caab Segments show up in search engine
veltr
parents: 43
diff changeset
   810
    });
32
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   811
    /* Changing Hashcut Title and description */
39
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   812
    
104
1b84c7b2aeee Added Translations
veltr
parents: 97
diff changeset
   813
    mashup.title = gettext("Untitled Hashcut");
39
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   814
    $(".title-video-wrap a").text(mashup.title);
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   815
    $("#hashcut-title").val(mashup.title);
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   816
    
32
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   817
    $("#hashcut-title").on("keyup change input paste", function() {
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   818
        mashup.title = $(this).val();
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   819
        $(".title-video-wrap a").text(mashup.title);
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   820
        mashup.trigger("change");
32
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   821
    });
43
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   822
    $("#hashcut-title").on("focus click", function() {
104
1b84c7b2aeee Added Translations
veltr
parents: 97
diff changeset
   823
        if ($(this).val() === gettext("Untitled Hashcut")) {
43
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   824
            $(this).val("");
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   825
        }
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   826
    });
32
47f9a2d63a0a Various UI improvements
veltr
parents: 29
diff changeset
   827
    
39
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   828
    $("#hashcut-description").on("keyup change input paste", function() {
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   829
        mashup.description = $(this).val();
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   830
        mashup.trigger("change");
39
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   831
    });
d3d8a88878ed Added validation before publication
veltr
parents: 32
diff changeset
   832
    
43
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   833
    $("#hashcut-form").submit(function() {
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   834
        $(".update-title").hide();
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   835
        return false;
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   836
    })
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   837
    
42
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   838
    /* Publication */
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   839
   
49
a21b851538b2 Added Media page
veltr
parents: 45
diff changeset
   840
    function onLeave() {
104
1b84c7b2aeee Added Translations
veltr
parents: 97
diff changeset
   841
        return gettext("You haven't published your hashcut yet.\nIf you leave this page, it will be lost.");
49
a21b851538b2 Added Media page
veltr
parents: 45
diff changeset
   842
    }
a21b851538b2 Added Media page
veltr
parents: 45
diff changeset
   843
    
a21b851538b2 Added Media page
veltr
parents: 45
diff changeset
   844
    $(window).on("beforeunload", onLeave);
a21b851538b2 Added Media page
veltr
parents: 45
diff changeset
   845
   
42
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   846
    $(".publier-button").click(function() {
43
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   847
        if ($(this).hasClass("disable")) {
104
1b84c7b2aeee Added Translations
veltr
parents: 97
diff changeset
   848
            alert(gettext("The hashcut can't be published because:")+"\n\n"+mashupstatus);
43
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   849
            return false;
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   850
        }
42
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   851
        var postproject = directory.newLocalSource(),
43
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   852
            medias = mashup.getMedias()
42
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   853
            annotations = mashup.getOriginalAnnotations();
43
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   854
        postproject.addList("annotationType");
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   855
        postproject.addList("tag");
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   856
        medias.forEach(function(_m) {
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   857
            var anntype = new IriSP.Model.AnnotationType(false, postproject);
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   858
            anntype.title = "Segments from " + _m.title;
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   859
            anntype.media = _m;
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   860
            postproject.getAnnotationTypes().push(anntype);
42
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   861
        });
43
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   862
        annotations.forEach(function(_a) {
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   863
            _a.setAnnotationType(
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   864
                postproject.getAnnotationTypes().filter(
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   865
                    function(_at) { return _at.media === _a.getMedia() }
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   866
                )[0].id);
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   867
            var tagids = [];
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   868
            _(_a.keywords).each(function(keyword) {
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   869
                var tags = postproject.getTags().searchByTitle(keyword);
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   870
                if (tags.length) {
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   871
                    tagids.push(tags[0].id);
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   872
                } else {
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   873
                    var tag = new IriSP.Model.Tag(false, postproject);
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   874
                    tag.title = tag.description = keyword;
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   875
                    postproject.getTags().push(tag);
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   876
                    tagids.push(tag.id);
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   877
                }
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   878
            });
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   879
            _a.setTags(tagids);
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   880
        });
42
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   881
        postproject.addList("annotation",annotations);
43
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   882
        postproject.addList("media",medias);
42
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   883
        postproject.addList("mashup",[mashup]);
69
e56b4456668f Added CSRF Token and Username Option
veltr
parents: 65
diff changeset
   884
        postproject.creator = options.creator;
43
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   885
        postproject.created = new Date();
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   886
        postproject.modified = new Date();
42
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   887
        postproject.title = mashup.title;
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   888
        postproject.description = mashup.description;
73
475e5fb0ea2b Cleaned imgs, corrected some bugs
veltr
parents: 69
diff changeset
   889
        var waitscreen = $('<div class="full-wait">');
475e5fb0ea2b Cleaned imgs, corrected some bugs
veltr
parents: 69
diff changeset
   890
        waitscreen.appendTo('body');
42
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   891
        $.ajax({
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   892
            type: "POST",
49
a21b851538b2 Added Media page
veltr
parents: 45
diff changeset
   893
            url: IriSP.endpoints.project,
42
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   894
            data: IriSP.serializers.ldt.serialize(postproject),
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   895
            contentType: "application/cinelab",
69
e56b4456668f Added CSRF Token and Username Option
veltr
parents: 65
diff changeset
   896
            headers: {
e56b4456668f Added CSRF Token and Username Option
veltr
parents: 65
diff changeset
   897
                "X-CSRFToken": options.csrf_token
e56b4456668f Added CSRF Token and Username Option
veltr
parents: 65
diff changeset
   898
            },
42
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   899
            success: function(data, status, request){
49
a21b851538b2 Added Media page
veltr
parents: 45
diff changeset
   900
                var location = request.getResponseHeader("Location"),
a21b851538b2 Added Media page
veltr
parents: 45
diff changeset
   901
                    projid = location.match(/([^/]+)\/?$/)[1],
109
3034776c1f35 Templatize endpoint urls in JS
veltr
parents: 104
diff changeset
   902
                    destination = IriSP.endpoints.hashcut_page.replace('__PROJECT_ID__', projid);
49
a21b851538b2 Added Media page
veltr
parents: 45
diff changeset
   903
                $(window).off("beforeunload", onLeave);
a21b851538b2 Added Media page
veltr
parents: 45
diff changeset
   904
                document.location.href = destination;
42
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   905
            },
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   906
            error: function(jqXHR, textStatus, errorThrown){
104
1b84c7b2aeee Added Translations
veltr
parents: 97
diff changeset
   907
                alert(gettext("Server error\nYour hashcut couldn't be published"));
73
475e5fb0ea2b Cleaned imgs, corrected some bugs
veltr
parents: 69
diff changeset
   908
                waitscreen.remove();
42
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   909
            }
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   910
        });
49
a21b851538b2 Added Media page
veltr
parents: 45
diff changeset
   911
        
43
5a5024bc74e6 Save before weekend
veltr
parents: 42
diff changeset
   912
        return false;
42
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   913
    });
40909e8d6855 Commit before weekend
veltr
parents: 41
diff changeset
   914
    
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents: 39
diff changeset
   915
    mashup.trigger("change");
13
42c59d09670e display media list
veltr
parents: 12
diff changeset
   916
}
50
89e152523cb6 Improving media page
veltr
parents: 49
diff changeset
   917
89e152523cb6 Improving media page
veltr
parents: 49
diff changeset
   918
/* END editor.js */