metadataplayer edwin/metadataplayer/Polemic.js
changeset 17 ec4f33084f8d
parent 16 5135ccbf5a5f
child 18 f6232b308fbd
--- 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('<div>');
-    this.$zone.addClass("Ldt-Polemic");
-    this.$.append(this.$zone);
-    
-    this.$elapsed = IriSP.jQuery('<div>')
-        .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(
-                    '<div class="Ldt-Polemic-TweetDiv Ldt-TraceMe" trace-info="annotation-id:{{id}}" annotation-id="{{id}}" tweet-title="{{title}}" pos-x="{{posx}}" pos-y="{{top}}" polemic-color="{{color}}"'
-                    + ' style="width: {{width}}px; height: {{height}}px; top: {{top}}px; left: {{left}}px; background: {{color}}"></div>',
-                {
-                    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(
-                '<div class="Ldt-Polemic-TweetDiv Ldt-TraceMe" trace-info="annotation-block,time:{{begin}}" pos-x="{{posx}}" pos-y="{{top}}" annotation-counts="{{nums}}" begin-time="{{begin}}" end-time="{{end}}"'
-                + ' style="width: {{width}}px; height: {{height}}px; top: {{top}}px; left: {{left}}px; background: {{color}}"></div>',
-            {
-                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 = '<p>' + _this.l10n.from_ + _el.attr("begin-time") + _this.l10n._to_ + _el.attr("end-time") + '</p>';
-                for (var _i = 0; _i <= _this.polemics.length; _i++) {
-                    var _color = _i ? _this.polemics[_i - 1].color : _this.defaultcolor;
-                    _html += '<div class="Ldt-Tooltip-Color" style="background: ' + _color + '"></div><p>' + _nums[_i] + _this.l10n._annotations + '</p>'
-                }
-                _this.tooltip.show(_el.attr("pos-x"), _el.attr("pos-y"), _html);
-            })
-            .mouseout(function() {
-                _this.tooltip.hide();
-            })
-            
-    }
-    
-    this.$position = IriSP.jQuery('<div>').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"
-    })
-}