src/widgets/CurrentSegmentInfobox.js
changeset 1040 be314c4ea4ac
child 1046 eb77616c245f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/widgets/CurrentSegmentInfobox.js	Fri Jul 03 17:00:33 2015 +0200
@@ -0,0 +1,76 @@
+/* Widget displays info on the current segment, with possibility of config for editing description and tags */
+
+IriSP.Widgets.CurrentSegmentInfobox = function(player, config){
+    IriSP.Widgets.Widget.call(this, player, config);
+};
+
+IriSP.Widgets.CurrentSegmentInfobox.prototype = new IriSP.Widgets.Widget();
+
+IriSP.Widgets.CurrentSegmentInfobox.prototype.defaults = {
+    annotation_type: "chap",
+    readonly: true,
+    empty_message: false
+};
+
+IriSP.Widgets.CurrentSegmentInfobox.prototype.template = 
+    "<div class='Ldt-CurrentSegmentInfobox'>" 
+    + "    <div class='Ldt-CurrentSegmentInfobox-Element Ldt-CurrentSegmentInfobox-Title'>{{title}}</div>" 
+    + "    <div class='Ldt-CurrentSegmentInfobox-Element Ldt-CurrentSegmentInfobox-Description'>{{description}}</div>" 
+    + "    <div class='Ldt-CurrentSegmentInfobox-Element Ldt-CurrentSegmentInfobox-Tags'>"
+    + '        {{#tags.length}}'
+    + '        <ul class="Ldt-CurrentSegmentInfobox-Tags-Ul">'
+    + '        {{#tags}}'
+    + '            {{#.}}'
+    + '            <li class="Ldt-CurrentSegmentInfobox-Tags-Li">'
+    + '                <span>{{.}}</span>'
+    + '            </li>'
+    + '            {{/.}}'
+    + '        {{/tags}}'
+    + '        </ul>'
+    + '        {{/tags.length}}'
+    + "    </div>" 
+    + "</div>"
+
+IriSP.Widgets.CurrentSegmentInfobox.prototype.messages = {
+    fr : {
+        empty : "Le player vidéo ne lit actuellement aucun segment"
+    },
+    en: {
+        empty: "The player currently doesn't read any segment"
+    }
+}    
+    
+IriSP.Widgets.CurrentSegmentInfobox.prototype.draw = function() {
+    var _this = this;
+    this.segments = this.getWidgetAnnotations();
+    
+    this.renderTemplate();
+    this.refresh();
+    
+    this.onMediaEvent("timeupdate", "refresh");
+}
+
+IriSP.Widgets.CurrentSegmentInfobox.prototype.refresh = function() {
+    var _list = this.segments;
+    
+    _currentTime = this.media.getCurrentTime();
+    _list = _list.filter(function(_segment){
+        return (_segment.begin <= _currentTime && _segment.end >= _currentTime);
+    })
+    if (_list.length > 0){
+        _currentSegment = _list[0];
+        _data = {
+            title: _currentSegment.title,
+            description : _currentSegment.description,
+            tags : _currentSegment.getTagTexts()
+        }
+        this.$.html(Mustache.to_html(this.template, _data))
+    }
+    else {
+        var _empty_message = this.l10n.empty
+        if (this.empty_message) {
+            _empty_message = this.empty_message
+        }
+        this.$.find(".Ldt-CurrentSegmentInfobox").html("<div class='Ldt-CurrentSegmentInfobox-Element Ldt-CurrentSegmentInfobox-NoSegment'>"+_empty_message+"</div>");
+    }
+}
\ No newline at end of file