diff -r 7c67caaafdeb -r 761ba7426984 web/res/metadataplayer/Transcript.js --- a/web/res/metadataplayer/Transcript.js Mon Nov 20 18:10:58 2023 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,79 +0,0 @@ -/* This widget displays annotations as a transcript */ - -IriSP.Widgets.Transcript = function(player, config) { - IriSP.Widgets.Widget.call(this, player, config); -} - -IriSP.Widgets.Transcript.prototype = new IriSP.Widgets.Widget(); - -IriSP.Widgets.Transcript.prototype.defaults = { - annotation_type: "Caption", - use_vtt_track: false -} - -IriSP.Widgets.Transcript.prototype.template = '
'; - -IriSP.Widgets.Transcript.prototype.annotationTemplate = '{{ content }} '; - -IriSP.Widgets.Transcript.prototype.draw = function() { - var _annotations = this.getWidgetAnnotations(); - var _this = this; - var content; - - _this.renderTemplate(); - content = _this.$.find('.Ldt-TranscriptWidget'); - - if (_this.use_vtt_track) { - // Use webvtt track. It will only work with native video player. - var widgets = _this.player.widgets.filter(function (w) { return w.type == "HtmlPlayer"; }); - if (widgets) { - var v = widgets[0].$.find("video")[0]; - // FIXME: allow to specify the used track - v.addEventListener("loadedmetadata", function () { - var track = v.textTracks[0]; - var cues = track.cues; - var i = 1; - Array.prototype.forEach.apply(cues, [ function(_c) { - _c.id = "cue" + i; - var _html = Mustache.to_html(_this.annotationTemplate, { - id : _c.id, - content : _c.text, - begin : 1000 * _c.startTime, - end : 1000 * _c.endTime - }); - i += 1; - var _el = IriSP.jQuery(_html); - content.append(_el); - } ]); - track.addEventListener("cuechange", function () { - var acues = track.activeCues; - if (acues.length > 0) { - // Update attributes for active cues - _this.$.find(".Ldt-Transcript-Annotation.active").removeClass("active"); - Array.prototype.forEach.apply(acues, [ function(_c) { - _this.$.find("#" + _c.id).addClass("active"); - } ]); - } - }, false); - content.on("click", ".Ldt-Transcript-Annotation", function () { - _this.media.setCurrentTime(this.dataset.begin); - }); - }); - } else { - console.log("cannot find a video object"); - } - } else { - // Populate with annotation data - _annotations.forEach(function(_a) { - var _data = { - id : _a.id, - content : IriSP.textFieldHtml(_a.title), - begin : _a.begin.toString(), - end : _a.end.toString() - }; - var _html = Mustache.to_html(_this.annotationTemplate, _data); - var _el = IriSP.jQuery(_html); - content.append(_el); - }); - }; -};