web/res/metadataplayer/MultiSegments.js
author Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
Fri, 17 Jan 2014 17:01:30 +0100
changeset 1052 31bcc09b375c
parent 955 5171f8825985
child 1198 ff4b567d51f2
permissions -rw-r--r--
Added tag V02.63 for changeset c9453d474261
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
729
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
     1
IriSP.Widgets.MultiSegments = function(player, config) {
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
     2
    IriSP.Widgets.Widget.call(this, player, config);
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
     3
};
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
     4
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
     5
IriSP.Widgets.MultiSegments.prototype = new IriSP.Widgets.Widget();
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
     6
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
     7
IriSP.Widgets.MultiSegments.prototype.defaults = {
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
     8
    annotation_show_arrow: true,
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
     9
    annotation_start_minimized: true,
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    10
    annotation_show_annotation_type: true,
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    11
    show_all: false
955
5171f8825985 Updated Metadataplayer
Raphael Velt <raph.velt@gmail.com>
parents: 778
diff changeset
    12
};
729
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    13
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    14
IriSP.Widgets.MultiSegments.prototype.draw = function() {
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    15
    var _this = this,
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    16
        lines = [],
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    17
        currentLine = null,
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    18
        segmentsopts = {},
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    19
        annotationopts = {};
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    20
    IriSP._(this).each(function(_v,_k) {
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    21
        if (/^segments_/.test(_k)) {
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    22
            segmentsopts[_k.replace(/^segments_/,"")] = _v;
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    23
        }
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    24
        if (/^annotation_/.test(_k)) {
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    25
            annotationopts[_k.replace(/^annotation_/,"")] = _v;
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    26
        }
955
5171f8825985 Updated Metadataplayer
Raphael Velt <raph.velt@gmail.com>
parents: 778
diff changeset
    27
    });
729
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    28
    this.source.getAnnotationTypes().forEach(function(_anntype) {
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    29
        var segments = _anntype.getAnnotations().filter(function(_ann) {
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    30
            return _ann.getDuration() > 0;
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    31
        });
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    32
        if (segments.length) {
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    33
            
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    34
            var visible = false;
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    35
            
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    36
            var line = {
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    37
                segmentWidget: IriSP.jQuery("<div>"),
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    38
                annotationWidget: IriSP.jQuery("<div>"),
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    39
                hasSegmentsNow: function() {
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    40
                    var _time = _this.media.getCurrentTime();
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    41
                    return !!segments.filter(function(_annotation) {
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    42
                        return _annotation.begin <= _time && _annotation.end > _time;
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    43
                    }).length;
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    44
                },
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    45
                hide: function() {
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    46
                    if (visible) {
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    47
                        visible = false;
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    48
                        this.annotationWidget.slideUp();
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    49
                    }
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    50
                },
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    51
                show: function() {
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    52
                    if (!visible) {
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    53
                        visible = true;
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    54
                        this.annotationWidget.slideDown();
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    55
                    }
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    56
                }
955
5171f8825985 Updated Metadataplayer
Raphael Velt <raph.velt@gmail.com>
parents: 778
diff changeset
    57
            };
729
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    58
                
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    59
                
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    60
            line.segmentWidget
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    61
                .addClass("Ldt-MultiSegments-Segment")
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    62
                .appendTo(_this.$);
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    63
                
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    64
            if (!_this.show_all) {
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    65
                line.segmentWidget.mouseenter(function() {
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    66
                    if (line.hasSegmentsNow()) {
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    67
                        currentLine = line;
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    68
                        checkVisibilities();
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    69
                    }
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    70
                });
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    71
            }
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    72
            
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    73
            line.annotationWidget
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    74
                .addClass("Ldt-MultiSegments-Annotation")
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    75
                .appendTo(_this.$)
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    76
                .hide();
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    77
                
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    78
            _this.insertSubwidget(
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    79
                line.segmentWidget,
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    80
                IriSP._({
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    81
                    type: "Segments",
778
525f00c2d6ac Metadataplayer bugfixes
Raphael Velt <raph.velt@gmail.com>
parents: 729
diff changeset
    82
                    annotation_type: _anntype,
525f00c2d6ac Metadataplayer bugfixes
Raphael Velt <raph.velt@gmail.com>
parents: 729
diff changeset
    83
                    width: _this.width
729
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    84
                }).extend(segmentsopts)
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    85
            );
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    86
            
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    87
            _this.insertSubwidget(
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    88
                line.annotationWidget,
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    89
                IriSP._({
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    90
                    type: "Annotation",
778
525f00c2d6ac Metadataplayer bugfixes
Raphael Velt <raph.velt@gmail.com>
parents: 729
diff changeset
    91
                    annotation_type: _anntype,
525f00c2d6ac Metadataplayer bugfixes
Raphael Velt <raph.velt@gmail.com>
parents: 729
diff changeset
    92
                    width: _this.width
729
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    93
                }).extend(annotationopts)
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    94
            );
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    95
            
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    96
            lines.push(line);
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    97
        }
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    98
    });
955
5171f8825985 Updated Metadataplayer
Raphael Velt <raph.velt@gmail.com>
parents: 778
diff changeset
    99
    var _annotationWidgets = _this.$.find(".Ldt-MultiSegments-Annotation");
729
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   100
    
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   101
    function checkVisibilities(_time) {
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   102
        if (!_this.show_all && currentLine && !currentLine.hasSegmentsNow()) {
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   103
            currentLine = undefined;
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   104
        }
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   105
        IriSP._(lines).each(function(line) {
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   106
            if (line.hasSegmentsNow()) {
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   107
                if (!_this.show_all && !currentLine) {
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   108
                    currentLine = line;
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   109
                }
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   110
                if (_this.show_all || line === currentLine) {
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   111
                    line.show();
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   112
                } else {
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   113
                    line.hide();
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   114
                }
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   115
            } else {
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   116
                line.hide();
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   117
            }
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   118
        });
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   119
    }
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   120
    
f411402f80e4 Mdp bugfix
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   121
    this.onMediaEvent("timeupdate", checkVisibilities);
955
5171f8825985 Updated Metadataplayer
Raphael Velt <raph.velt@gmail.com>
parents: 778
diff changeset
   122
};