diff -r 5135ccbf5a5f -r ec4f33084f8d metadataplayer edwin/metadataplayer/Polemic.js --- a/metadataplayer edwin/metadataplayer/Polemic.js Tue Oct 02 18:20:08 2012 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,300 +0,0 @@ -IriSP.Widgets.Polemic = function(player, config) { - IriSP.Widgets.Widget.call(this, player, config); -}; - -IriSP.Widgets.Polemic.prototype = new IriSP.Widgets.Widget(); - -IriSP.Widgets.Polemic.prototype.messages = { - fr: { - from_: "de ", - _to_: " à ", - _annotations: " annotation(s)" - }, - en: { - from_: "from ", - _to_: " to ", - _annotations: " annotation(s)" - } -} -IriSP.Widgets.Polemic.prototype.defaults = { - element_width : 5, - element_height : 5, - max_elements : 15, - annotation_type : "tweet", - defaultcolor : "#585858", - foundcolor : "#fc00ff", - polemics : [ - { - "keywords" : [ "++" ], - "color" : "#1D973D" - }, - { - "keywords" : [ "--" ], - "color" : "#CE0A15" - }, - { - "keywords" : [ "==", "http://" ], - "color" : "#C5A62D" - }, - { - "keywords" : [ "?" ], - "color" : "#036AAE" - } - ], - requires : [ - { - type: "Tooltip" - } - ] -}; - -IriSP.Widgets.Polemic.prototype.onSearch = function(searchString) { - this.searchString = typeof searchString !== "undefined" ? searchString : ''; - var _found = 0, - _re = IriSP.Model.regexpFromTextOrArray(searchString), - _this = this; - this.$tweets.each(function() { - var _el = IriSP.jQuery(this); - if (_this.searchString) { - if (_re.test(_el.attr("tweet-title"))) { - _el.css({ - "background" : _this.foundcolor, - "opacity" : 1 - }); - _found++; - } else { - _el.css({ - "background" : _el.attr("polemic-color"), - "opacity" : .5 - }); - } - } else { - _el.css({ - "background" : _el.attr("polemic-color"), - "opacity" : 1 - }); - } - }); - if (this.searchString) { - if (_found) { - this.player.popcorn.trigger("IriSP.search.matchFound"); - } else { - this.player.popcorn.trigger("IriSP.search.noMatchFound"); - } - } -} - -IriSP.Widgets.Polemic.prototype.draw = function() { - - this.bindPopcorn("timeupdate", "onTimeupdate"); - this.$zone = IriSP.jQuery('
'); - this.$zone.addClass("Ldt-Polemic"); - this.$.append(this.$zone); - - this.$elapsed = IriSP.jQuery('
') - .css({ - background: '#cccccc', - position: "absolute", - top: 0, - left: 0, - width: 0, - height: "100%" - }); - - this.$zone.append(this.$elapsed); - - var _slices = [], - _slice_count = Math.floor( this.width / this.element_width ), - _duration = this.source.getDuration(), - _max = 0, - _list = this.getWidgetAnnotations(), - _this = this; - - for (var _i = 0; _i < _slice_count; _i++) { - var _begin = new IriSP.Model.Time( _i * _duration / _slice_count ), - _end = new IriSP.Model.Time( ( _i + 1 ) * _duration / _slice_count ), - _count = 0, - _res = { - begin : _begin.toString(), - end : _end.toString(), - annotations : _list.filter(function(_annotation) { - return _annotation.begin >= _begin && _annotation.end < _end; - }), - polemicStacks : [] - } - - for (var _j = 0; _j < this.polemics.length; _j++) { - var _polemic = _res.annotations.searchByDescription(this.polemics[_j].keywords); - _count += _polemic.length; - _res.polemicStacks.push(_polemic); - } - for (var _j = 0; _j < this.polemics.length; _j++) { - _res.annotations.removeElements(_res.polemicStacks[_j]); - } - _count += _res.annotations.length; - _max = Math.max(_max, _count); - _slices.push(_res); - } - if (_max < this.max_elements) { - this.is_stackgraph = false; - if (_max) { - - this.height = (2 + _max) * this.element_height; - this.$zone.css({ - width: this.width + "px", - height: this.height + "px", - position: "relative" - }); - - var _x = 0, - _html = ''; - - function displayElement(_x, _y, _color, _id, _title) { - _html += Mustache.to_html( - '
', - { - id: _id, - title: _title, - posx: Math.floor(_x + (_this.element_width - 1) / 2), - left: _x, - top: _y, - color: _color, - width: (_this.element_width-1), - height: _this.element_height - }); - } - - IriSP._(_slices).forEach(function(_slice) { - var _y = _this.height; - _slice.annotations.forEach(function(_annotation) { - _y -= _this.element_height; - displayElement(_x, _y, _this.defaultcolor, _annotation.id, _annotation.title); - }); - IriSP._(_slice.polemicStacks).forEach(function(_annotations, _j) { - var _color = _this.polemics[_j].color; - _annotations.forEach(function(_annotation) { - _y -= _this.element_height; - displayElement(_x, _y, _color, _annotation.id, _annotation.title); - }); - }); - _x += _this.element_width; - }); - - this.$zone.append(_html); - - this.$tweets = this.$.find(".Ldt-Polemic-TweetDiv"); - - this.$tweets - .mouseover(function() { - var _el = IriSP.jQuery(this); - _this.tooltip.show(_el.attr("pos-x"), _el.attr("pos-y"), _el.attr("tweet-title"), _el.attr("polemic-color")); - }) - .mouseout(function() { - _this.tooltip.hide(); - }) - .click(function() { - var _id = IriSP.jQuery(this).attr("annotation-id"); - _this.player.popcorn.trigger("IriSP.Mediafragment.setHashToAnnotation", _id); - _this.player.popcorn.trigger("IriSP.Tweet.show", _id); - }); - - this.bindPopcorn("IriSP.search", "onSearch"); - this.bindPopcorn("IriSP.search.closed", "onSearch"); - this.bindPopcorn("IriSP.search.cleared", "onSearch"); - - } else { - this.$zone.hide(); - } - } else { - this.is_stackgraph = true; - - this.height = (2 + this.max_elements) * this.element_height; - this.$zone.css({ - width: this.width + "px", - height: this.height + "px", - position: "relative" - }); - - var _x = 0, - _html = '', - _scale = this.max_elements * this.element_height / _max; - - function displayStackElement(_x, _y, _h, _color, _nums, _begin, _end) { - _html += Mustache.to_html( - '
', - { - nums: _nums, - posx: Math.floor(_x + (_this.element_width - 1) / 2), - left: _x, - top: _y, - color: _color, - width: (_this.element_width-1), - height: _h, - begin: _begin, - end: _end - }); - } - - IriSP._(_slices).forEach(function(_slice) { - var _y = _this.height, - _nums = _slice.annotations.length + "," + IriSP._(_slice.polemicStacks).map(function(_annotations) { - return _annotations.length - }).join(","); - if (_slice.annotations.length) { - var _h = Math.ceil(_scale * _slice.annotations.length); - _y -= _h; - displayStackElement(_x, _y, _h, _this.defaultcolor, _nums, _slice.begin, _slice.end); - } - IriSP._(_slice.polemicStacks).forEach(function(_annotations, _j) { - if (_annotations.length) { - var _color = _this.polemics[_j].color, - _h = Math.ceil(_scale * _annotations.length); - _y -= _h; - displayStackElement(_x, _y, _h, _color, _nums, _slice.begin, _slice.end); - } - }); - _x += _this.element_width; - }); - - this.$zone.append(_html); - - this.$tweets = this.$.find(".Ldt-Polemic-TweetDiv"); - - this.$tweets - .mouseover(function() { - var _el = IriSP.jQuery(this), - _nums = _el.attr("annotation-counts").split(","), - _html = '

' + _this.l10n.from_ + _el.attr("begin-time") + _this.l10n._to_ + _el.attr("end-time") + '

'; - for (var _i = 0; _i <= _this.polemics.length; _i++) { - var _color = _i ? _this.polemics[_i - 1].color : _this.defaultcolor; - _html += '

' + _nums[_i] + _this.l10n._annotations + '

' - } - _this.tooltip.show(_el.attr("pos-x"), _el.attr("pos-y"), _html); - }) - .mouseout(function() { - _this.tooltip.hide(); - }) - - } - - this.$position = IriSP.jQuery('
').addClass("Ldt-Polemic-Position"); - - this.$zone.append(this.$position); - - this.$zone.click(function(_e) { - var _x = _e.pageX - _this.$zone.offset().left; - _this.player.popcorn.currentTime(_this.source.getDuration().getSeconds() * _x / _this.width); - }); -} - -IriSP.Widgets.Polemic.prototype.onTimeupdate = function() { - var _x = Math.floor( this.width * this.player.popcorn.currentTime() / this.source.getDuration().getSeconds()); - this.$elapsed.css({ - width: _x + "px" - }); - this.$position.css({ - left: _x + "px" - }) -}