src/widgets/Sparkline.js
author cavaliet
Thu, 02 Jan 2014 16:49:20 +0100
branchnew-model
changeset 1020 198c2b79f5e1
parent 1019 3ab36f402b0c
permissions -rw-r--r--
oups (last commit in bad branch)
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
875
43629caa77bc Big refactoring of widget files + started migration of segmentwidget
veltr
parents:
diff changeset
     1
IriSP.Widgets.Sparkline = function(player, config) {
43629caa77bc Big refactoring of widget files + started migration of segmentwidget
veltr
parents:
diff changeset
     2
    IriSP.Widgets.Widget.call(this, player, config);
1020
198c2b79f5e1 oups (last commit in bad branch)
cavaliet
parents: 1019
diff changeset
     3
    //this.bindPopcorn("timeupdate", "onTimeupdate");
875
43629caa77bc Big refactoring of widget files + started migration of segmentwidget
veltr
parents:
diff changeset
     4
};
43629caa77bc Big refactoring of widget files + started migration of segmentwidget
veltr
parents:
diff changeset
     5
43629caa77bc Big refactoring of widget files + started migration of segmentwidget
veltr
parents:
diff changeset
     6
IriSP.Widgets.Sparkline.prototype = new IriSP.Widgets.Widget();
43629caa77bc Big refactoring of widget files + started migration of segmentwidget
veltr
parents:
diff changeset
     7
43629caa77bc Big refactoring of widget files + started migration of segmentwidget
veltr
parents:
diff changeset
     8
IriSP.Widgets.Sparkline.prototype.defaults = {
43629caa77bc Big refactoring of widget files + started migration of segmentwidget
veltr
parents:
diff changeset
     9
   lineColor : "#7492b4",
43629caa77bc Big refactoring of widget files + started migration of segmentwidget
veltr
parents:
diff changeset
    10
   fillColor : "#aeaeb8",
43629caa77bc Big refactoring of widget files + started migration of segmentwidget
veltr
parents:
diff changeset
    11
   lineWidth : 2,
43629caa77bc Big refactoring of widget files + started migration of segmentwidget
veltr
parents:
diff changeset
    12
   slice_count : 20,
43629caa77bc Big refactoring of widget files + started migration of segmentwidget
veltr
parents:
diff changeset
    13
   height : 50,
43629caa77bc Big refactoring of widget files + started migration of segmentwidget
veltr
parents:
diff changeset
    14
   margin : 5
43629caa77bc Big refactoring of widget files + started migration of segmentwidget
veltr
parents:
diff changeset
    15
};
43629caa77bc Big refactoring of widget files + started migration of segmentwidget
veltr
parents:
diff changeset
    16
43629caa77bc Big refactoring of widget files + started migration of segmentwidget
veltr
parents:
diff changeset
    17
IriSP.Widgets.Sparkline.prototype.draw = function() {
43629caa77bc Big refactoring of widget files + started migration of segmentwidget
veltr
parents:
diff changeset
    18
    var _slices = [],
43629caa77bc Big refactoring of widget files + started migration of segmentwidget
veltr
parents:
diff changeset
    19
        _duration = this.source.getDuration(),
43629caa77bc Big refactoring of widget files + started migration of segmentwidget
veltr
parents:
diff changeset
    20
        _max = 0,
876
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents: 875
diff changeset
    21
        _list = this.getWidgetAnnotations();
1020
198c2b79f5e1 oups (last commit in bad branch)
cavaliet
parents: 1019
diff changeset
    22
    
875
43629caa77bc Big refactoring of widget files + started migration of segmentwidget
veltr
parents:
diff changeset
    23
    for (var _i = 0; _i < this.slice_count; _i++) {
1020
198c2b79f5e1 oups (last commit in bad branch)
cavaliet
parents: 1019
diff changeset
    24
        var _begin = new IriSP.Model.Time(_i*_duration/this.slice_count),
198c2b79f5e1 oups (last commit in bad branch)
cavaliet
parents: 1019
diff changeset
    25
            _end = new IriSP.Model.Time((_i+1)*_duration/this.slice_count),
198c2b79f5e1 oups (last commit in bad branch)
cavaliet
parents: 1019
diff changeset
    26
            _annotations = _list.filter(function(_annotation) {
198c2b79f5e1 oups (last commit in bad branch)
cavaliet
parents: 1019
diff changeset
    27
                return _annotation.begin >= _begin && _annotation.end < _end;
198c2b79f5e1 oups (last commit in bad branch)
cavaliet
parents: 1019
diff changeset
    28
            }).length;
198c2b79f5e1 oups (last commit in bad branch)
cavaliet
parents: 1019
diff changeset
    29
        _max = Math.max(_max, _annotations);
198c2b79f5e1 oups (last commit in bad branch)
cavaliet
parents: 1019
diff changeset
    30
        _slices.push(_annotations);
875
43629caa77bc Big refactoring of widget files + started migration of segmentwidget
veltr
parents:
diff changeset
    31
    }
43629caa77bc Big refactoring of widget files + started migration of segmentwidget
veltr
parents:
diff changeset
    32
    if (!_max) {
43629caa77bc Big refactoring of widget files + started migration of segmentwidget
veltr
parents:
diff changeset
    33
        return;
43629caa77bc Big refactoring of widget files + started migration of segmentwidget
veltr
parents:
diff changeset
    34
    }
43629caa77bc Big refactoring of widget files + started migration of segmentwidget
veltr
parents:
diff changeset
    35
    this.paper = new Raphael(this.$[0], this.width, this.height);
43629caa77bc Big refactoring of widget files + started migration of segmentwidget
veltr
parents:
diff changeset
    36
    var _scale = (this.height - this.margin) / _max,
43629caa77bc Big refactoring of widget files + started migration of segmentwidget
veltr
parents:
diff changeset
    37
        _width = this.width / this.slice_count,
43629caa77bc Big refactoring of widget files + started migration of segmentwidget
veltr
parents:
diff changeset
    38
        _this = this,
43629caa77bc Big refactoring of widget files + started migration of segmentwidget
veltr
parents:
diff changeset
    39
        _y = IriSP._(_slices).map(function(_v) {
43629caa77bc Big refactoring of widget files + started migration of segmentwidget
veltr
parents:
diff changeset
    40
            return _this.margin + _this.height - (_scale * _v);
43629caa77bc Big refactoring of widget files + started migration of segmentwidget
veltr
parents:
diff changeset
    41
        }),
43629caa77bc Big refactoring of widget files + started migration of segmentwidget
veltr
parents:
diff changeset
    42
        _d = IriSP._(_y).reduce(function(_memo, _v, _k) {
43629caa77bc Big refactoring of widget files + started migration of segmentwidget
veltr
parents:
diff changeset
    43
               return _memo + ( _k
43629caa77bc Big refactoring of widget files + started migration of segmentwidget
veltr
parents:
diff changeset
    44
                   ? 'C' + (_k * _width) + ' ' + _y[_k - 1] + ' ' + (_k * _width) + ' ' + _v + ' ' + ((_k + .5) * _width) + ' ' + _v
1020
198c2b79f5e1 oups (last commit in bad branch)
cavaliet
parents: 1019
diff changeset
    45
                   : 'M0 ' + _v + 'L' + (.5*_width) + ' ' + _v )
875
43629caa77bc Big refactoring of widget files + started migration of segmentwidget
veltr
parents:
diff changeset
    46
            },'') + 'L' + this.width + ' ' + _y[_y.length - 1],
43629caa77bc Big refactoring of widget files + started migration of segmentwidget
veltr
parents:
diff changeset
    47
        _d2 = _d + 'L' + this.width + ' ' + this.height + 'L0 ' + this.height;
43629caa77bc Big refactoring of widget files + started migration of segmentwidget
veltr
parents:
diff changeset
    48
    
43629caa77bc Big refactoring of widget files + started migration of segmentwidget
veltr
parents:
diff changeset
    49
    this.paper.path(_d2).attr({
43629caa77bc Big refactoring of widget files + started migration of segmentwidget
veltr
parents:
diff changeset
    50
        "stroke" : "none",
43629caa77bc Big refactoring of widget files + started migration of segmentwidget
veltr
parents:
diff changeset
    51
        "fill" : this.fillColor
43629caa77bc Big refactoring of widget files + started migration of segmentwidget
veltr
parents:
diff changeset
    52
    });
43629caa77bc Big refactoring of widget files + started migration of segmentwidget
veltr
parents:
diff changeset
    53
         
43629caa77bc Big refactoring of widget files + started migration of segmentwidget
veltr
parents:
diff changeset
    54
    this.paper.path(_d).attr({
43629caa77bc Big refactoring of widget files + started migration of segmentwidget
veltr
parents:
diff changeset
    55
        "fill" : "none",
43629caa77bc Big refactoring of widget files + started migration of segmentwidget
veltr
parents:
diff changeset
    56
        "stroke" : this.lineColor,
43629caa77bc Big refactoring of widget files + started migration of segmentwidget
veltr
parents:
diff changeset
    57
        "stroke-width" : this.lineWidth
43629caa77bc Big refactoring of widget files + started migration of segmentwidget
veltr
parents:
diff changeset
    58
    });
43629caa77bc Big refactoring of widget files + started migration of segmentwidget
veltr
parents:
diff changeset
    59
    
43629caa77bc Big refactoring of widget files + started migration of segmentwidget
veltr
parents:
diff changeset
    60
    this.rectangleProgress = this.paper.rect(0,0,0,this.height)
43629caa77bc Big refactoring of widget files + started migration of segmentwidget
veltr
parents:
diff changeset
    61
        .attr({
43629caa77bc Big refactoring of widget files + started migration of segmentwidget
veltr
parents:
diff changeset
    62
            "stroke" : "none",
43629caa77bc Big refactoring of widget files + started migration of segmentwidget
veltr
parents:
diff changeset
    63
            "fill" : "#808080",
43629caa77bc Big refactoring of widget files + started migration of segmentwidget
veltr
parents:
diff changeset
    64
            "opacity" : .3
43629caa77bc Big refactoring of widget files + started migration of segmentwidget
veltr
parents:
diff changeset
    65
        });
43629caa77bc Big refactoring of widget files + started migration of segmentwidget
veltr
parents:
diff changeset
    66
        
43629caa77bc Big refactoring of widget files + started migration of segmentwidget
veltr
parents:
diff changeset
    67
    this.ligneProgress = this.paper.path("M0 0L0 "+this.height).attr({"stroke":"#ff00ff", "line-width" : 2});
43629caa77bc Big refactoring of widget files + started migration of segmentwidget
veltr
parents:
diff changeset
    68
   
43629caa77bc Big refactoring of widget files + started migration of segmentwidget
veltr
parents:
diff changeset
    69
    this.$.click(function(_e) {
43629caa77bc Big refactoring of widget files + started migration of segmentwidget
veltr
parents:
diff changeset
    70
        var _x = _e.pageX - _this.$.offset().left;
1020
198c2b79f5e1 oups (last commit in bad branch)
cavaliet
parents: 1019
diff changeset
    71
        _this.player.popcorn.currentTime(_this.source.getDuration().getSeconds() * _x / _this.width);
875
43629caa77bc Big refactoring of widget files + started migration of segmentwidget
veltr
parents:
diff changeset
    72
    });
43629caa77bc Big refactoring of widget files + started migration of segmentwidget
veltr
parents:
diff changeset
    73
    
1020
198c2b79f5e1 oups (last commit in bad branch)
cavaliet
parents: 1019
diff changeset
    74
    this.bindPopcorn("timeupdate","onTimeupdate");
198c2b79f5e1 oups (last commit in bad branch)
cavaliet
parents: 1019
diff changeset
    75
}
875
43629caa77bc Big refactoring of widget files + started migration of segmentwidget
veltr
parents:
diff changeset
    76
1020
198c2b79f5e1 oups (last commit in bad branch)
cavaliet
parents: 1019
diff changeset
    77
IriSP.Widgets.Sparkline.prototype.onTimeupdate = function() {
198c2b79f5e1 oups (last commit in bad branch)
cavaliet
parents: 1019
diff changeset
    78
    var _x = Math.floor( this.width * this.player.popcorn.currentTime() / this.source.getDuration().getSeconds());
875
43629caa77bc Big refactoring of widget files + started migration of segmentwidget
veltr
parents:
diff changeset
    79
    this.rectangleProgress.attr({
43629caa77bc Big refactoring of widget files + started migration of segmentwidget
veltr
parents:
diff changeset
    80
        "width" : _x
43629caa77bc Big refactoring of widget files + started migration of segmentwidget
veltr
parents:
diff changeset
    81
    });
43629caa77bc Big refactoring of widget files + started migration of segmentwidget
veltr
parents:
diff changeset
    82
    this.ligneProgress.attr({
43629caa77bc Big refactoring of widget files + started migration of segmentwidget
veltr
parents:
diff changeset
    83
        "path" : "M" + _x + " 0L" + _x + " " + this.height
43629caa77bc Big refactoring of widget files + started migration of segmentwidget
veltr
parents:
diff changeset
    84
    });
1020
198c2b79f5e1 oups (last commit in bad branch)
cavaliet
parents: 1019
diff changeset
    85
}