diff -r e78b889a75e1 -r 4fddc765a716 src/widgets/AnnotationsController.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/widgets/AnnotationsController.js Fri Jul 03 16:59:29 2015 +0200 @@ -0,0 +1,109 @@ +/* + * Widget that ties AnnotationList and CreateAnnotation together + * using buttons to hide/show AnnotationList and CreateAnnotation widgets. + * + */ + +IriSP.Widgets.AnnotationsController = function(player, config){ + IriSP.Widgets.Widget.call(this, player, config); +}; + +IriSP.Widgets.AnnotationsController.prototype = new IriSP.Widgets.Widget(); + +IriSP.Widgets.AnnotationsController.prototype.defaults = { + // If true, displaying AnnotationList will hide CreateAnnotation and vice versa. + display_or_write: false, + starts_hidden: false, + hide_without_segment: false, + segments_annotation_type: "chap" +}; + +IriSP.Widgets.AnnotationsController.prototype.template = + "
" + + "
" + + "
{{l10n.display}}
" + + "
{{l10n.write}}
" + + "
" + + "
" + +IriSP.Widgets.AnnotationsController.prototype.messages = { + en : { + write : "Write", + display : "Display", + }, + fr : { + write : "Ecrire", + display : "Voir" + } +}; + +IriSP.Widgets.AnnotationsController.prototype.draw = function() { + this.renderTemplate(); + var _this = this; + this.element_$ = this.$.find(".Ldt-AnnotationsController") + + this.displayButton_$ = this.$.find(".Ldt-AnnotationsController-ShowAnnotationsListButton"); + this.writeButton_$ = this.$.find(".Ldt-AnnotationsController-ShowCreateAnnotationButton"); + + this.writeButton_$.click(function(){ + _this.player.trigger("CreateAnnotation.toggle"); + if (_this.display_or_write){ + _this.player.trigger("AnnotationsList.hide"); + } + }); + this.displayButton_$.click(function(){ + _this.player.trigger("AnnotationsList.toggle"); + if (_this.display_or_write){ + _this.player.trigger("CreateAnnotation.hide"); + } + }) + this.onMediaEvent("timeupdate", "onTimeUpdate") + + if (this.starts_hidden) { + this.visible = true + this.hide(); + } + else{ + this.visible = false + this.show(); + } + +}; + +IriSP.Widgets.AnnotationsController.prototype.onTimeUpdate = function(){ + if (this.hide_without_segment){ + _currentTime = this.media.getCurrentTime() + _segmentsAnnotations = this.source.getAnnotationsByTypeTitle(this.segments_annotation_type) + _currentSegments = _segmentsAnnotations.filter(function(_segment){ + return (_currentTime >= _segment.begin && _currentTime <= _segment.end) + }); + if (_currentSegments.length == 0){ + if (this.visible){ + this.hide(); + _this.player.trigger("CreateAnnotation.hide"); + _this.player.trigger("AnnotationsList.hide"); + } + } + else { + if (!this.visible){ + this.show(); + _this.player.trigger("CreateAnnotation.hide"); + _this.player.trigger("AnnotationsList.hide"); + } + } + } +} + +IriSP.Widgets.AnnotationsController.prototype.hide = function() { + if (this.visible){ + this.visible = false; + this.element_$.hide() + } +} + +IriSP.Widgets.AnnotationsController.prototype.show = function() { + if(!this.visible){ + this.visible = true; + this.element_$.show() + } +}