crea/integration/metadataplayer/MusitagAnnotations.js
author ymh <ymh.work@gmail.com>
Wed, 06 Jun 2012 23:00:42 +0200
changeset 16 e37a29d23c86
parent 4 4928ecd06b44
child 15 f1d070549d94
permissions -rw-r--r--
First version of tralalere platform

IriSP.Widgets.MusitagAnnotations = function(player, config) {
    IriSP.Widgets.Widget.call(this, player, config);
};

IriSP.Widgets.MusitagAnnotations.prototype = new IriSP.Widgets.Widget();

IriSP.Widgets.MusitagAnnotations.prototype.defaults = {
    annotation_type: 'musitag',
    columns: 15,
    max_by_column: 10,
    emoticons: ['happy', 'unhappy', 'laughing', 'surprised'],
    colors: ['red', 'yellow', 'green', 'blue']
};

IriSP.Widgets.MusitagAnnotations.prototype.draw = function() {
    var _html = '',
        _annotations = this.getWidgetAnnotations(),
        _duration = this.source.getDuration().milliseconds,
        _sliceDuration = _duration/this.columns,
        _this = this;
    _annotations.forEach(function(_annotation) {
        var _tags = _annotation.getTagTexts();
        _annotation.color_tag = false;
        _annotation.emoticon_tag = false;
        _tags.forEach(function(_tag) {
            if (_this.emoticons.indexOf(_tag) != -1) {
                _annotation.emoticon_tag = _tag;
            }
            if (_this.colors.indexOf(_tag) != -1) {
                _annotation.color_tag = _tag;
            }
        });
    });
    for (var i = 0; i < this.columns; i++) {
        var _sliceStart = i * _sliceDuration,
            _sliceEnd = (i+1) * _sliceDuration,
            _column = _annotations.filter(function(_annotation) {
                return _annotation.begin >= _sliceStart
                    && _annotation.begin < _sliceEnd
                    && _annotation.emoticon_tag
                    && _annotation.color_tag
            }).sortBy(function(_annotation) {
                return _annotation.created;
            });
        if (_column.length > this.max_by_column) {
            _column = _column.slice(_column.length - this.max_by_column, _column.length);
        }
        _html += '<div class="Musitag-Annotations-column">';
        _html += _column.map(function(_annotation) {
            return '<div class="Musitag-Annotations-tag" begin-time="' + _annotation.begin + '">'
                + '<div class="Musitag-container-50">'
                + '<div class="Musitag-shadow"></div>'
                + '<div class="Musitag-color Musitag-' + _annotation.color_tag + '"></div>'
                + '<div class="Musitag-emoticon Musitag-' + _annotation.emoticon_tag + '"></div>'
                + '</div><div class="Musitag-Annotations-Balloon"></div></div>';
        }).join('');
        _html += '</div>';
    }
    this.$.html(_html);
    this.$.find('.Musitag-Annotations-tag .Musitag-container-50').click(function() {
        var _el = IriSP.jQuery(this).parent();
        _this.player.popcorn.currentTime(_el.attr("begin-time") / 1000);
    });
    this.$.find('.Musitag-Annotations-tag').mouseover(function() {
        var _el = IriSP.jQuery(this);
        _this.$.find('.Musitag-Annotations-Balloon').hide();
        _el.find('.Musitag-Annotations-Balloon').show();
    });
}