src/widgets/MultiSegments.js
author durandn
Fri, 03 Jul 2015 16:58:49 +0200
changeset 1038 e78b889a75e1
parent 1033 c20df1c080e6
child 1068 7623f9af9272
permissions -rw-r--r--
CreateAnnotations new feature: hide/show functionality on signal trigger (tweaks), added config options to customize what is displayed more accurately
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
982
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
     1
IriSP.Widgets.MultiSegments = function(player, config) {
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
     2
    IriSP.Widgets.Widget.call(this, player, config);
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
     3
};
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
     4
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
     5
IriSP.Widgets.MultiSegments.prototype = new IriSP.Widgets.Widget();
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
     6
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
     7
IriSP.Widgets.MultiSegments.prototype.defaults = {
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
     8
    annotation_show_arrow: true,
1021
7253d4d06f0d update widgets after enhance in annotation platform.
cavaliet
parents: 1013
diff changeset
     9
    annotation_start_minimized: false,
982
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    10
    annotation_show_annotation_type: true,
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    11
    show_all: false
1013
392ddcd212d7 Throwed in a bunch of semicolons
veltr
parents: 988
diff changeset
    12
};
982
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    13
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    14
IriSP.Widgets.MultiSegments.prototype.draw = function() {
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    15
    var _this = this,
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    16
        lines = [],
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    17
        currentLine = null,
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    18
        segmentsopts = {},
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    19
        annotationopts = {};
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    20
    IriSP._(this).each(function(_v,_k) {
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    21
        if (/^segments_/.test(_k)) {
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    22
            segmentsopts[_k.replace(/^segments_/,"")] = _v;
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    23
        }
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    24
        if (/^annotation_/.test(_k)) {
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    25
            annotationopts[_k.replace(/^annotation_/,"")] = _v;
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    26
        }
1013
392ddcd212d7 Throwed in a bunch of semicolons
veltr
parents: 988
diff changeset
    27
    });
982
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    28
    this.source.getAnnotationTypes().forEach(function(_anntype) {
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    29
        var segments = _anntype.getAnnotations().filter(function(_ann) {
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    30
            return _ann.getDuration() > 0;
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    31
        });
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    32
        if (segments.length) {
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    33
            
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    34
            var visible = false;
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    35
            
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    36
            var line = {
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    37
                segmentWidget: IriSP.jQuery("<div>"),
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    38
                annotationWidget: IriSP.jQuery("<div>"),
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    39
                hasSegmentsNow: function() {
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    40
                    var _time = _this.media.getCurrentTime();
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    41
                    return !!segments.filter(function(_annotation) {
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    42
                        return _annotation.begin <= _time && _annotation.end > _time;
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    43
                    }).length;
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    44
                },
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    45
                hide: function() {
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    46
                    if (visible) {
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    47
                        visible = false;
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    48
                        this.annotationWidget.slideUp();
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    49
                    }
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    50
                },
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    51
                show: function() {
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    52
                    if (!visible) {
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    53
                        visible = true;
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    54
                        this.annotationWidget.slideDown();
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    55
                    }
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    56
                }
1013
392ddcd212d7 Throwed in a bunch of semicolons
veltr
parents: 988
diff changeset
    57
            };
982
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    58
                
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    59
                
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    60
            line.segmentWidget
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    61
                .addClass("Ldt-MultiSegments-Segment")
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    62
                .appendTo(_this.$);
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    63
                
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    64
            if (!_this.show_all) {
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    65
                line.segmentWidget.mouseenter(function() {
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    66
                    if (line.hasSegmentsNow()) {
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    67
                        currentLine = line;
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    68
                        checkVisibilities();
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    69
                    }
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    70
                });
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    71
            }
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    72
            
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    73
            line.annotationWidget
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    74
                .addClass("Ldt-MultiSegments-Annotation")
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    75
                .appendTo(_this.$)
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    76
                .hide();
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    77
                
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    78
            _this.insertSubwidget(
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    79
                line.segmentWidget,
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    80
                IriSP._({
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    81
                    type: "Segments",
988
eefd336335f9 Some improvements: Hashtags can be used, links are now clickable, ....
veltr
parents: 982
diff changeset
    82
                    annotation_type: _anntype,
eefd336335f9 Some improvements: Hashtags can be used, links are now clickable, ....
veltr
parents: 982
diff changeset
    83
                    width: _this.width
982
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    84
                }).extend(segmentsopts)
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    85
            );
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    86
            
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    87
            _this.insertSubwidget(
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    88
                line.annotationWidget,
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    89
                IriSP._({
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    90
                    type: "Annotation",
988
eefd336335f9 Some improvements: Hashtags can be used, links are now clickable, ....
veltr
parents: 982
diff changeset
    91
                    annotation_type: _anntype,
eefd336335f9 Some improvements: Hashtags can be used, links are now clickable, ....
veltr
parents: 982
diff changeset
    92
                    width: _this.width
982
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    93
                }).extend(annotationopts)
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    94
            );
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    95
            
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    96
            lines.push(line);
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    97
        }
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
    98
    });
1021
7253d4d06f0d update widgets after enhance in annotation platform.
cavaliet
parents: 1013
diff changeset
    99
    
7253d4d06f0d update widgets after enhance in annotation platform.
cavaliet
parents: 1013
diff changeset
   100
    // open line on segment click
1024
894079bece86 correct stage
cavaliet
parents: 1021
diff changeset
   101
    IriSP.jQuery(document).on("click",".Ldt-Segments-Segment",function(e){
1021
7253d4d06f0d update widgets after enhance in annotation platform.
cavaliet
parents: 1013
diff changeset
   102
    	if (!_this.show_all && currentLine && !currentLine.hasSegmentsNow()) {
7253d4d06f0d update widgets after enhance in annotation platform.
cavaliet
parents: 1013
diff changeset
   103
            currentLine = undefined;
7253d4d06f0d update widgets after enhance in annotation platform.
cavaliet
parents: 1013
diff changeset
   104
        }
7253d4d06f0d update widgets after enhance in annotation platform.
cavaliet
parents: 1013
diff changeset
   105
        IriSP._(lines).each(function(line) {
1029
9edcde420df2 multisegments correction
cavaliet
parents: 1024
diff changeset
   106
        	if(IriSP.jQuery(e.target).parent().parent()[0]==line.segmentWidget[0]){
1021
7253d4d06f0d update widgets after enhance in annotation platform.
cavaliet
parents: 1013
diff changeset
   107
        		currentLine = line;
7253d4d06f0d update widgets after enhance in annotation platform.
cavaliet
parents: 1013
diff changeset
   108
        		line.show();
7253d4d06f0d update widgets after enhance in annotation platform.
cavaliet
parents: 1013
diff changeset
   109
        	} else {
7253d4d06f0d update widgets after enhance in annotation platform.
cavaliet
parents: 1013
diff changeset
   110
                line.hide();
7253d4d06f0d update widgets after enhance in annotation platform.
cavaliet
parents: 1013
diff changeset
   111
            }
7253d4d06f0d update widgets after enhance in annotation platform.
cavaliet
parents: 1013
diff changeset
   112
        });
7253d4d06f0d update widgets after enhance in annotation platform.
cavaliet
parents: 1013
diff changeset
   113
    });
7253d4d06f0d update widgets after enhance in annotation platform.
cavaliet
parents: 1013
diff changeset
   114
    
7253d4d06f0d update widgets after enhance in annotation platform.
cavaliet
parents: 1013
diff changeset
   115
    //var _annotationWidgets = _this.$.find(".Ldt-MultiSegments-Annotation");
982
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
   116
    
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
   117
    function checkVisibilities(_time) {
1021
7253d4d06f0d update widgets after enhance in annotation platform.
cavaliet
parents: 1013
diff changeset
   118
        /*if (!_this.show_all && currentLine && !currentLine.hasSegmentsNow()) {
982
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
   119
            currentLine = undefined;
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
   120
        }
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
   121
        IriSP._(lines).each(function(line) {
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
   122
            if (line.hasSegmentsNow()) {
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
   123
                if (!_this.show_all && !currentLine) {
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
   124
                    currentLine = line;
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
   125
                }
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
   126
                if (_this.show_all || line === currentLine) {
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
   127
                    line.show();
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
   128
                } else {
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
   129
                    line.hide();
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
   130
                }
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
   131
            } else {
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
   132
                line.hide();
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
   133
            }
1021
7253d4d06f0d update widgets after enhance in annotation platform.
cavaliet
parents: 1013
diff changeset
   134
        });*/
982
cfcbac34d020 Added Multi Segments Widget
veltr
parents:
diff changeset
   135
    }
1033
c20df1c080e6 integrate changes from github
ymh <ymh.work@gmail.com>
parents: 1029
diff changeset
   136
};