integration/js/mashupplayer.js
author veltr
Fri, 30 Nov 2012 16:48:37 +0100
changeset 86 4857ac3892e3
parent 82 e36c35fb4468
child 109 3034776c1f35
permissions -rw-r--r--
Minor changes
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
49
a21b851538b2 Added Media page
veltr
parents: 45
diff changeset
     1
IriSP.mashupplayer = function(options) {
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents:
diff changeset
     2
    
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents:
diff changeset
     3
    var directory = new IriSP.Model.Directory(),
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents:
diff changeset
     4
        project = directory.remoteSource({
49
a21b851538b2 Added Media page
veltr
parents: 45
diff changeset
     5
            url: IriSP.endpoints.ldt + options.id,
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents:
diff changeset
     6
            serializer: IriSP.serializers.ldt
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents:
diff changeset
     7
        }),
49
a21b851538b2 Added Media page
veltr
parents: 45
diff changeset
     8
        apidirectory = new IriSP.Model.Directory(),
43
5a5024bc74e6 Save before weekend
veltr
parents: 41
diff changeset
     9
        mashup,
5a5024bc74e6 Save before weekend
veltr
parents: 41
diff changeset
    10
        mediatemplate = _.template('<li class="item-video media" data-media-id="<%= media.id %>">'
49
a21b851538b2 Added Media page
veltr
parents: 45
diff changeset
    11
            + '<a href="<%= IriSP.endpoints.media_page + media.id %>"><img class="thumbnail" alt="<%= media.title %>" src="<%= media.thumbnail %>"></a><div class="video-info">'
50
89e152523cb6 Improving media page
veltr
parents: 49
diff changeset
    12
            + '<h3 class="title-video"><a href="<%= IriSP.endpoints.media_page + media.id %>"><%= media.title %></a></h3><p class="description"><%= media.description %></p>'
43
5a5024bc74e6 Save before weekend
veltr
parents: 41
diff changeset
    13
            + '<p class="time-length">Durée : <span><%= media.duration.toString() %></span></p><div class="frise">'
5a5024bc74e6 Save before weekend
veltr
parents: 41
diff changeset
    14
            + '<div class="frise-overflow"><div class="frise-segments"><%= segments %></div></div></div></div></li>');
5a5024bc74e6 Save before weekend
veltr
parents: 41
diff changeset
    15
        segmenttemplate = _.template('<div style="background-color:<%= annotation.color %>; left:<%= left %>%; width: <%= width %>%;"'
5a5024bc74e6 Save before weekend
veltr
parents: 41
diff changeset
    16
            + ' class="frise-segment annotation" data-segment-id="<%= annotation.id %>" title="<%= annotation.title %>"></div>')
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents:
diff changeset
    17
    
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents:
diff changeset
    18
    project.onLoad(function() {
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents:
diff changeset
    19
        mashup = project.getMashups()[0];
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents:
diff changeset
    20
        IriSP.mashupcore(project, mashup);
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents:
diff changeset
    21
        project.trigger("set-current",mashup);
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents:
diff changeset
    22
        
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents:
diff changeset
    23
        $(".info-duration td").text(mashup.duration.toString());
86
4857ac3892e3 Minor changes
veltr
parents: 82
diff changeset
    24
        
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents:
diff changeset
    25
        $(".info-description td").text(mashup.description);
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents:
diff changeset
    26
        
43
5a5024bc74e6 Save before weekend
veltr
parents: 41
diff changeset
    27
        mashup.getMedias().forEach(function(media) {
49
a21b851538b2 Added Media page
veltr
parents: 45
diff changeset
    28
            apidirectory.remoteSource({
a21b851538b2 Added Media page
veltr
parents: 45
diff changeset
    29
                url: IriSP.endpoints.content + media.id,
a21b851538b2 Added Media page
veltr
parents: 45
diff changeset
    30
                serializer: IriSP.serializers.content
a21b851538b2 Added Media page
veltr
parents: 45
diff changeset
    31
            }).onLoad(function() {
a21b851538b2 Added Media page
veltr
parents: 45
diff changeset
    32
                var m = apidirectory.getElement(media.id);
a21b851538b2 Added Media page
veltr
parents: 45
diff changeset
    33
                if (m) {
a21b851538b2 Added Media page
veltr
parents: 45
diff changeset
    34
                    media.thumbnail = m.thumbnail;
a21b851538b2 Added Media page
veltr
parents: 45
diff changeset
    35
                }
a21b851538b2 Added Media page
veltr
parents: 45
diff changeset
    36
                var segments = mashup.segments.filter(function(segment) {
a21b851538b2 Added Media page
veltr
parents: 45
diff changeset
    37
                    return segment.getMedia() === media;
a21b851538b2 Added Media page
veltr
parents: 45
diff changeset
    38
                });
a21b851538b2 Added Media page
veltr
parents: 45
diff changeset
    39
                var segmentshtml = '', k = media.duration ? (100 / media.duration) : 0;
a21b851538b2 Added Media page
veltr
parents: 45
diff changeset
    40
                segments.forEach(function(segment) {
a21b851538b2 Added Media page
veltr
parents: 45
diff changeset
    41
                    var vizdata = {
a21b851538b2 Added Media page
veltr
parents: 45
diff changeset
    42
                        annotation: segment.annotation,
a21b851538b2 Added Media page
veltr
parents: 45
diff changeset
    43
                        left: k * segment.annotation.begin,
a21b851538b2 Added Media page
veltr
parents: 45
diff changeset
    44
                        width: k * segment.annotation.getDuration()
a21b851538b2 Added Media page
veltr
parents: 45
diff changeset
    45
                    }
a21b851538b2 Added Media page
veltr
parents: 45
diff changeset
    46
                    segmentshtml += segmenttemplate(vizdata);
a21b851538b2 Added Media page
veltr
parents: 45
diff changeset
    47
                });
a21b851538b2 Added Media page
veltr
parents: 45
diff changeset
    48
                var mediadata = {
a21b851538b2 Added Media page
veltr
parents: 45
diff changeset
    49
                    media: media,
a21b851538b2 Added Media page
veltr
parents: 45
diff changeset
    50
                    segments: segmentshtml
a21b851538b2 Added Media page
veltr
parents: 45
diff changeset
    51
                }
a21b851538b2 Added Media page
veltr
parents: 45
diff changeset
    52
                
a21b851538b2 Added Media page
veltr
parents: 45
diff changeset
    53
                $(".list-video").append(mediatemplate(mediadata));
43
5a5024bc74e6 Save before weekend
veltr
parents: 41
diff changeset
    54
            });
5a5024bc74e6 Save before weekend
veltr
parents: 41
diff changeset
    55
        });
5a5024bc74e6 Save before weekend
veltr
parents: 41
diff changeset
    56
        
5a5024bc74e6 Save before weekend
veltr
parents: 41
diff changeset
    57
        
5a5024bc74e6 Save before weekend
veltr
parents: 41
diff changeset
    58
        project.on("mouseover-annotation", function(annotation) {
5a5024bc74e6 Save before weekend
veltr
parents: 41
diff changeset
    59
            var mediaid = annotation.getMedia().id;
5a5024bc74e6 Save before weekend
veltr
parents: 41
diff changeset
    60
            $(".media").removeClass("active");
5a5024bc74e6 Save before weekend
veltr
parents: 41
diff changeset
    61
            $(".media[data-media-id='" + mediaid + "']").addClass("active");
5a5024bc74e6 Save before weekend
veltr
parents: 41
diff changeset
    62
        });
5a5024bc74e6 Save before weekend
veltr
parents: 41
diff changeset
    63
        
5a5024bc74e6 Save before weekend
veltr
parents: 41
diff changeset
    64
        project.on("mouseout-annotation", function(annotation) {
5a5024bc74e6 Save before weekend
veltr
parents: 41
diff changeset
    65
            $(".media").removeClass("active");
5a5024bc74e6 Save before weekend
veltr
parents: 41
diff changeset
    66
            var mediaid = mashup.currentMedia.id;
5a5024bc74e6 Save before weekend
veltr
parents: 41
diff changeset
    67
            $(".media[data-media-id='" + mediaid + "']").addClass("active");
5a5024bc74e6 Save before weekend
veltr
parents: 41
diff changeset
    68
        });
5a5024bc74e6 Save before weekend
veltr
parents: 41
diff changeset
    69
        
49
a21b851538b2 Added Media page
veltr
parents: 45
diff changeset
    70
        $(".list-video")
a21b851538b2 Added Media page
veltr
parents: 45
diff changeset
    71
        .on("mouseover", ".frise-segment", function() {
43
5a5024bc74e6 Save before weekend
veltr
parents: 41
diff changeset
    72
            project.trigger("mouseover-annotation", project.getElement($(this).attr("data-segment-id")));
5a5024bc74e6 Save before weekend
veltr
parents: 41
diff changeset
    73
        })
49
a21b851538b2 Added Media page
veltr
parents: 45
diff changeset
    74
        .on("click", ".frise-segment", function() {
43
5a5024bc74e6 Save before weekend
veltr
parents: 41
diff changeset
    75
            project.trigger("click-annotation", project.getElement($(this).attr("data-segment-id")));
49
a21b851538b2 Added Media page
veltr
parents: 45
diff changeset
    76
        })
a21b851538b2 Added Media page
veltr
parents: 45
diff changeset
    77
        .on("mouseover", ".item-video", function() {
43
5a5024bc74e6 Save before weekend
veltr
parents: 41
diff changeset
    78
            $(".media").removeClass("active");
5a5024bc74e6 Save before weekend
veltr
parents: 41
diff changeset
    79
        })
49
a21b851538b2 Added Media page
veltr
parents: 45
diff changeset
    80
        .on("mouseout", ".item-video", function() {
43
5a5024bc74e6 Save before weekend
veltr
parents: 41
diff changeset
    81
            project.trigger("mouseout-annotation");
73
475e5fb0ea2b Cleaned imgs, corrected some bugs
veltr
parents: 50
diff changeset
    82
        });
475e5fb0ea2b Cleaned imgs, corrected some bugs
veltr
parents: 50
diff changeset
    83
        
475e5fb0ea2b Cleaned imgs, corrected some bugs
veltr
parents: 50
diff changeset
    84
        $(".mashup-frise")
475e5fb0ea2b Cleaned imgs, corrected some bugs
veltr
parents: 50
diff changeset
    85
        .click(function(evt) {
475e5fb0ea2b Cleaned imgs, corrected some bugs
veltr
parents: 50
diff changeset
    86
            if (!mashup.duration.milliseconds) {
475e5fb0ea2b Cleaned imgs, corrected some bugs
veltr
parents: 50
diff changeset
    87
                return;
475e5fb0ea2b Cleaned imgs, corrected some bugs
veltr
parents: 50
diff changeset
    88
            }
475e5fb0ea2b Cleaned imgs, corrected some bugs
veltr
parents: 50
diff changeset
    89
            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: 50
diff changeset
    90
            if (segment) {
475e5fb0ea2b Cleaned imgs, corrected some bugs
veltr
parents: 50
diff changeset
    91
                project.trigger("click-annotation", segment.annotation);
475e5fb0ea2b Cleaned imgs, corrected some bugs
veltr
parents: 50
diff changeset
    92
            }
475e5fb0ea2b Cleaned imgs, corrected some bugs
veltr
parents: 50
diff changeset
    93
        });
43
5a5024bc74e6 Save before weekend
veltr
parents: 41
diff changeset
    94
        
5a5024bc74e6 Save before weekend
veltr
parents: 41
diff changeset
    95
        
41
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents:
diff changeset
    96
    });
3ec2343f2b85 Refactoring to have common code between editor and player
veltr
parents:
diff changeset
    97
}
50
89e152523cb6 Improving media page
veltr
parents: 49
diff changeset
    98
89e152523cb6 Improving media page
veltr
parents: 49
diff changeset
    99
/* END mashupplayer.js */