diff -r 74ac0be7655c -r c20df1c080e6 src/widgets/Highlighter.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/widgets/Highlighter.js Fri Feb 13 16:57:53 2015 +0100 @@ -0,0 +1,43 @@ +IriSP.Widgets.Highlighter = function(player, config) { + var _this = this; + IriSP.Widgets.Widget.call(this, player, config); + this.throttledRefresh = IriSP._.throttle(function() { + console.log("highlighter Refresh"); + _this.update(); + }, 800); +}; + +/** + * Highlighter widget + * This widgets highlights the current annotations by setting the + * .activeAnnotation class on appropriate .Ldt-Highlighter-Annotation + * elements. These elements *must* have data-begin and data-end properties specifying their bounds (in ms) (and data-media specifying the media-id) + */ +IriSP.Widgets.Highlighter.prototype = new IriSP.Widgets.Widget(); + +IriSP.Widgets.Highlighter.prototype.defaults = { +} + +IriSP.Widgets.Highlighter.prototype.update = function() { + var _this = this; + var _currentTime = _this.media.getCurrentTime(); + _this.$.find(".Ldt-Highlighter-Annotation", document).toggleClass("currentAnnotation", function () { + return (this.dataset.media === _this.media.id && this.dataset.begin <= _currentTime && _currentTime < this.dataset.end); + }); + console.log(_this.$.find(".currentAnnotation")); + return false; +}; + +IriSP.Widgets.Highlighter.prototype.draw = function() { + var _this = this; + + var _events = [ + "timeupdate", + "seeked", + "loadedmetadata" + ]; + for (var _i = 0; _i < _events.length; _i++) { + _this.onMediaEvent(_events[_i], _this.throttledRefresh); + } + _this.throttledRefresh(); +};