diff -r 000000000000 -r 7f8907368bd5 web/lib/metadataplayer/Annotation.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/metadataplayer/Annotation.js Fri Oct 18 17:54:44 2013 +0200 @@ -0,0 +1,233 @@ +// TODO: Migrate Timeupdate functions to Extract + +IriSP.Widgets.Annotation = function(player, config) { + IriSP.Widgets.Widget.call(this, player, config); + this.lastAnnotation = false; + this.minimized = this.start_minimized || false; + this.bounds = [ 0, 0 ]; +}; + +IriSP.Widgets.Annotation.prototype = new IriSP.Widgets.Widget(); + +IriSP.Widgets.Annotation.prototype.messages = { + fr: { + watching: "Je regarde ", + on_site: " sur ", + tags_: "Mots-clés\u00a0:", + description_: "Description\u00a0:", + creator_: "Créé par\u00a0:", + excerpt_from: "Extrait de\u00a0:", + untitled: "Segment sans titre" + }, + en: { + watching: "I'm watching ", + on_site: " on ", + tags_: "Keywords:", + description_: "Description:", + creator_: "Created by\u00a0:", + excerpt_from: "Excerpt from:", + untitled: "Untitled segment" + } +}; + +IriSP.Widgets.Annotation.prototype.template = + '{{#show_arrow}}
{{/show_arrow}}' + + '
' + + '
' + + '
' + + '{{#show_social}}
{{/show_social}}' + + '

{{#show_annotation_type}} » {{/show_annotation_type}} ' + + '( - )

' + + '

{{l10n.excerpt_from}} ' + + '( - )

' + + '
{{l10n.creator_}}
' + + '{{#show_creator}}

' + + '
{{l10n.description_}}
{{/show_creator}}' + + '

' + + '
' + + '
{{l10n.tags_}}
    ' + + '
    '; + +IriSP.Widgets.Annotation.prototype.defaults = { + annotation_type : "chap", + start_minimized: false, + show_arrow : true, + show_creator: true, + arrow_position: .5, + site_name : "Lignes de Temps", + search_on_tag_click: true, + show_social: true, + show_annotation_type: false +}; + +IriSP.Widgets.Annotation.prototype.draw = function() { + + var _this = this, + currentAnnotation; + + function timeupdate(_time) { + var _list = _this.getWidgetAnnotationsAtTime(); + if (!_list.length) { + _this.$.find(".Ldt-Annotation-Inner").addClass("Ldt-Annotation-Empty"); + if (_this.arrow) { + _this.arrow.moveToTime(_time); + } + _this.bounds = [ _time, _time ]; + _this.sendBounds(); + } + } + + function highlightTitleAndDescription() { + if (!currentAnnotation) { + return; + } + var title = currentAnnotation.title, + description = currentAnnotation.description.replace(/(^\s+|\s+$)/g,''), + rx = (currentAnnotation.found ? (_this.source.getAnnotations().regexp || false) : false); + _this.$.find(".Ldt-Annotation-Title").html(IriSP.textFieldHtml(title,rx) || "(" + _this.l10n.untitled + ")"); + if (description) { + _this.$.find(".Ldt-Annotation-Description-Block").removeClass("Ldt-Annotation-EmptyBlock"); + _this.$.find(".Ldt-Annotation-Description").html(IriSP.textFieldHtml(description,rx)); + } else { + _this.$.find(".Ldt-Annotation-Description-Block").addClass("Ldt-Annotation-EmptyBlock"); + } + } + + function drawAnnotation(_annotation) { + currentAnnotation = _annotation; + var _url = (typeof _annotation.url !== "undefined" + ? _annotation.url + : (document.location.href.replace(/#.*$/,'') + '#id=' + _annotation.id)), + _text = _this.l10n.watching + _annotation.title + (_this.site_name ? _this.l10n.on_site + _this.site_name : ''), + _tags = _annotation.getTags(), + _tagblock = _this.$.find(".Ldt-Annotation-Tags"); + _tagblock.empty(); + if (_tags.length) { + _this.$.find(".Ldt-Annotation-Tags-Block").removeClass("Ldt-Annotation-EmptyBlock"); + _tags.forEach(function(_tag) { + var _trimmedTitle = _tag.title.replace(/(^\s+|\s+$)/g,''); + if (_trimmedTitle) { + var _el = IriSP.jQuery('
  • ').append(IriSP.jQuery('').text(_trimmedTitle)); + _el.click(function() { + if (_this.search_on_tag_click) { + _this.source.getAnnotations().search(_trimmedTitle); + } + _tag.trigger("click"); + }); + _tagblock.append(_el); + } + }); + } else { + _this.$.find(".Ldt-Annotation-Tags-Block").addClass("Ldt-Annotation-EmptyBlock"); + } + highlightTitleAndDescription(); + if (_this.show_creator) { + _this.$.find(".Ldt-Annotation-Creator").text(_annotation.creator); + } + if (_this.show_annotation_type) { + _this.$.find(".Ldt-Annotation-Type").text(_annotation.getAnnotationType().title); + } + _this.$.find(".Ldt-Annotation-Begin").text(_annotation.begin.toString()); + _this.$.find(".Ldt-Annotation-End").text(_annotation.end.toString()); + if (_annotation.elementType === "mashedAnnotation") { + _this.$.find('.Ldt-Annotation-Inner').addClass("Ldt-Annotation-isMashup"); + _this.$.find(".Ldt-Annotation-MashupMedia").text(_annotation.getMedia().title); + _this.$.find(".Ldt-Annotation-MashupBegin").text(_annotation.annotation.begin.toString()); + _this.$.find(".Ldt-Annotation-MashupEnd").text(_annotation.annotation.end.toString()); + } else { + _this.$.find('.Ldt-Annotation-Inner').removeClass("Ldt-Annotation-isMashup"); + } + if (typeof _this.socialWidget !== "undefined") { + _this.socialWidget.updateUrls(_url, _text); + } else { + setTimeout(function() { + if (typeof _this.socialWidget !== "undefined") { + _this.socialWidget.updateUrls(_url, _text); + } + },800); + } + _this.$.find(".Ldt-Annotation-Inner").removeClass("Ldt-Annotation-Empty"); + _this.bounds = [ _annotation.begin, _annotation.end ]; + if (_this.arrow) { + _this.arrow.moveToTime((1 - _this.arrow_position) * _annotation.begin + _this.arrow_position * _annotation.end); + } + _this.sendBounds(); + } + + this.renderTemplate(); + + this.$.find(".Ldt-Annotation-Title").click(function() { + if (currentAnnotation) { + _this.media.setCurrentTime(currentAnnotation.begin); + } + return false; + }); + + if (this.show_social) { + this.insertSubwidget(this.$.find(".Ldt-Annotation-Social"), { type: "Social" }, "socialWidget"); + } + + if (this.show_arrow) { + this.insertSubwidget(this.$.find(".Ldt-Annotation-Arrow"), { type: "Arrow", width: this.width }, "arrow"); + } + this.onMediaEvent("timeupdate",timeupdate); + this.onMdpEvent("Annotation.hide","hide"); + this.onMdpEvent("Annotation.show","show"); + this.onMdpEvent("Annotation.minimize","minimize"); + this.onMdpEvent("Annotation.maximize","maximize"); + this.onMdpEvent("Annotation.getBounds","sendBounds"); + this.$.find(".Ldt-Annotation-MaxMinButton").click(this.functionWrapper("toggleSize")); + this.getWidgetAnnotations().forEach(function(_a) { + _a.on("enter", function() { + drawAnnotation(_a); + }); + }); + this.source.getAnnotations().on("found", highlightTitleAndDescription); + this.source.getAnnotations().on("not-found", highlightTitleAndDescription); + this.source.getAnnotations().on("search-cleared", highlightTitleAndDescription); + IriSP.attachDndData(this.$.find("h3"), function() { + return { + title: currentAnnotation.title, + description: currentAnnotation.description, + image: currentAnnotation.thumbnail, + uri: (typeof currentAnnotation.url !== "undefined" + ? currentAnnotation.url + : (document.location.href.replace(/#.*$/,'') + '#id=' + currentAnnotation.id)) + }; + }); +}; + +IriSP.Widgets.Annotation.prototype.sendBounds = function() { + this.player.trigger("Annotation.boundsChanged",this.bounds); +}; + +IriSP.Widgets.Annotation.prototype.drawAnnotation = function(_annotation) { + this.lastAnnotation = _annotation.id; + +}; + +IriSP.Widgets.Annotation.prototype.hide = function() { + this.$.slideUp(); +}; + +IriSP.Widgets.Annotation.prototype.show = function() { + this.$.slideDown(); +}; + +IriSP.Widgets.Annotation.prototype.toggleSize = function() { + if (this.minimized) { + this.maximize(); + } else { + this.minimize(); + } +}; + +IriSP.Widgets.Annotation.prototype.minimize = function() { + this.minimized = true; + this.$.find('.Ldt-Annotation-Inner').addClass("Ldt-Annotation-Minimized"); +}; + +IriSP.Widgets.Annotation.prototype.maximize = function() { + this.minimized = false; + this.$.find('.Ldt-Annotation-Inner').removeClass("Ldt-Annotation-Minimized"); +}; \ No newline at end of file