crea/integration/metadataplayer/MusitagAnnotations.js
author ymh <ymh.work@gmail.com>
Mon, 29 Jul 2024 23:18:55 +0200
changeset 131 2a18dfe8bfc0
parent 60 c9c34daf1fe6
permissions -rw-r--r--
last change before install
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2
44deeff592e2 Added metadataplayer, "widgetized" the interface
veltr
parents:
diff changeset
     1
IriSP.Widgets.MusitagAnnotations = function(player, config) {
44deeff592e2 Added metadataplayer, "widgetized" the interface
veltr
parents:
diff changeset
     2
    IriSP.Widgets.Widget.call(this, player, config);
44deeff592e2 Added metadataplayer, "widgetized" the interface
veltr
parents:
diff changeset
     3
};
44deeff592e2 Added metadataplayer, "widgetized" the interface
veltr
parents:
diff changeset
     4
44deeff592e2 Added metadataplayer, "widgetized" the interface
veltr
parents:
diff changeset
     5
IriSP.Widgets.MusitagAnnotations.prototype = new IriSP.Widgets.Widget();
44deeff592e2 Added metadataplayer, "widgetized" the interface
veltr
parents:
diff changeset
     6
30
8cda6414d63e Added audio annotation playback. Corrected minor bugs
veltr
parents: 15
diff changeset
     7
IriSP.Widgets.MusitagAnnotations.prototype.template =
8cda6414d63e Added audio annotation playback. Corrected minor bugs
veltr
parents: 15
diff changeset
     8
    '<div class="Musitag-Annotations-Main"></div><div id="Musitag-Annotations-Audioplayer"></div>';
8cda6414d63e Added audio annotation playback. Corrected minor bugs
veltr
parents: 15
diff changeset
     9
    
8cda6414d63e Added audio annotation playback. Corrected minor bugs
veltr
parents: 15
diff changeset
    10
IriSP.Widgets.MusitagAnnotations.prototype.annotation_template =
56
af969d762e03 corrections
veltr
parents: 54
diff changeset
    11
    '<div class="Musitag-Annotations-tag" begin-time="{{annotation.begin.milliseconds}}" title="{{annotation.color.name}}, {{annotation.emoticon.name}} {{l10n.at_timecode}} {{annotation.begin}}">'
30
8cda6414d63e Added audio annotation playback. Corrected minor bugs
veltr
parents: 15
diff changeset
    12
    + '<div class="Musitag-container-50">'
8cda6414d63e Added audio annotation playback. Corrected minor bugs
veltr
parents: 15
diff changeset
    13
    + '<div class="Musitag-shadow"></div>'
56
af969d762e03 corrections
veltr
parents: 54
diff changeset
    14
    + '<div class="Musitag-color Musitag-{{annotation.color.tag}}"></div>'
af969d762e03 corrections
veltr
parents: 54
diff changeset
    15
    + '<div class="Musitag-emoticon Musitag-{{annotation.emoticon.tag}}"></div>'
59
1c68ad1ea60f Added div titles for rollover messages
veltr
parents: 56
diff changeset
    16
    + '</div>{{#annotation.audio}}<div class="Musitag-Annotations-Balloon" audio-url="{{annotation.audio.href}}" title="{{l10n.play_voice}}"></div>{{/annotation.audio}}'
30
8cda6414d63e Added audio annotation playback. Corrected minor bugs
veltr
parents: 15
diff changeset
    17
    + '</div>';
8cda6414d63e Added audio annotation playback. Corrected minor bugs
veltr
parents: 15
diff changeset
    18
56
af969d762e03 corrections
veltr
parents: 54
diff changeset
    19
IriSP.Widgets.MusitagAnnotations.prototype.messages = {
af969d762e03 corrections
veltr
parents: 54
diff changeset
    20
    fr: {
59
1c68ad1ea60f Added div titles for rollover messages
veltr
parents: 56
diff changeset
    21
        at_timecode: "à",
1c68ad1ea60f Added div titles for rollover messages
veltr
parents: 56
diff changeset
    22
        play_voice: "Lire l'annotation vocale"
56
af969d762e03 corrections
veltr
parents: 54
diff changeset
    23
    },
af969d762e03 corrections
veltr
parents: 54
diff changeset
    24
    en: {
59
1c68ad1ea60f Added div titles for rollover messages
veltr
parents: 56
diff changeset
    25
        at_timecode: "at",
1c68ad1ea60f Added div titles for rollover messages
veltr
parents: 56
diff changeset
    26
        play_voice: "Play voice annotation"
56
af969d762e03 corrections
veltr
parents: 54
diff changeset
    27
    }
af969d762e03 corrections
veltr
parents: 54
diff changeset
    28
}
af969d762e03 corrections
veltr
parents: 54
diff changeset
    29
2
44deeff592e2 Added metadataplayer, "widgetized" the interface
veltr
parents:
diff changeset
    30
IriSP.Widgets.MusitagAnnotations.prototype.defaults = {
40
02960e91525d JS corrections
veltr
parents: 38
diff changeset
    31
    annotation_type: false,
2
44deeff592e2 Added metadataplayer, "widgetized" the interface
veltr
parents:
diff changeset
    32
    columns: 15,
44deeff592e2 Added metadataplayer, "widgetized" the interface
veltr
parents:
diff changeset
    33
    max_by_column: 10,
54
402fad4d9495 Added logos
veltr
parents: 40
diff changeset
    34
    emoticons: [
402fad4d9495 Added logos
veltr
parents: 40
diff changeset
    35
        { tag: "happy", name: "content"},
402fad4d9495 Added logos
veltr
parents: 40
diff changeset
    36
        { tag: "unhappy", name: "mécontent"},
56
af969d762e03 corrections
veltr
parents: 54
diff changeset
    37
        { tag: "laughing", name: "rieur"},
54
402fad4d9495 Added logos
veltr
parents: 40
diff changeset
    38
        { tag: "surprised", name: "étonné"}
402fad4d9495 Added logos
veltr
parents: 40
diff changeset
    39
    ],
402fad4d9495 Added logos
veltr
parents: 40
diff changeset
    40
    colors: [
402fad4d9495 Added logos
veltr
parents: 40
diff changeset
    41
        { tag: "red", name: "rouge"},
402fad4d9495 Added logos
veltr
parents: 40
diff changeset
    42
        { tag: "yellow", name: "jaune"},
402fad4d9495 Added logos
veltr
parents: 40
diff changeset
    43
        { tag: "green", name: "vert"},
402fad4d9495 Added logos
veltr
parents: 40
diff changeset
    44
        { tag: "blue", name: "bleu"}
402fad4d9495 Added logos
veltr
parents: 40
diff changeset
    45
    ],
30
8cda6414d63e Added audio annotation playback. Corrected minor bugs
veltr
parents: 15
diff changeset
    46
    rtmp_streamer: "rtmp://media.iri.centrepompidou.fr/ddc_micro_record/"
2
44deeff592e2 Added metadataplayer, "widgetized" the interface
veltr
parents:
diff changeset
    47
};
44deeff592e2 Added metadataplayer, "widgetized" the interface
veltr
parents:
diff changeset
    48
44deeff592e2 Added metadataplayer, "widgetized" the interface
veltr
parents:
diff changeset
    49
IriSP.Widgets.MusitagAnnotations.prototype.draw = function() {
30
8cda6414d63e Added audio annotation playback. Corrected minor bugs
veltr
parents: 15
diff changeset
    50
    this.renderTemplate();
38
f19428838d3b Added Annotation pushing
veltr
parents: 30
diff changeset
    51
    this.bindPopcorn("IriSP.MusitagAnnotations.redraw","redraw");
30
8cda6414d63e Added audio annotation playback. Corrected minor bugs
veltr
parents: 15
diff changeset
    52
    this.$main = this.$.find(".Musitag-Annotations-Main");
8cda6414d63e Added audio annotation playback. Corrected minor bugs
veltr
parents: 15
diff changeset
    53
    var _this = this;
8cda6414d63e Added audio annotation playback. Corrected minor bugs
veltr
parents: 15
diff changeset
    54
    this.jwplayer = jwplayer("Musitag-Annotations-Audioplayer");
8cda6414d63e Added audio annotation playback. Corrected minor bugs
veltr
parents: 15
diff changeset
    55
    this.jwplayer.setup({
8cda6414d63e Added audio annotation playback. Corrected minor bugs
veltr
parents: 15
diff changeset
    56
        flashplayer: IriSP.getLib("jwPlayerSWF"),
8cda6414d63e Added audio annotation playback. Corrected minor bugs
veltr
parents: 15
diff changeset
    57
        width: 1,
8cda6414d63e Added audio annotation playback. Corrected minor bugs
veltr
parents: 15
diff changeset
    58
        height: 1,
8cda6414d63e Added audio annotation playback. Corrected minor bugs
veltr
parents: 15
diff changeset
    59
        provider: "rtmp",
8cda6414d63e Added audio annotation playback. Corrected minor bugs
veltr
parents: 15
diff changeset
    60
        events: {
8cda6414d63e Added audio annotation playback. Corrected minor bugs
veltr
parents: 15
diff changeset
    61
            onPause: function() {
8cda6414d63e Added audio annotation playback. Corrected minor bugs
veltr
parents: 15
diff changeset
    62
                _this.setPlayState(false);
8cda6414d63e Added audio annotation playback. Corrected minor bugs
veltr
parents: 15
diff changeset
    63
            },
8cda6414d63e Added audio annotation playback. Corrected minor bugs
veltr
parents: 15
diff changeset
    64
            onIdle: function() {
8cda6414d63e Added audio annotation playback. Corrected minor bugs
veltr
parents: 15
diff changeset
    65
                _this.setPlayState(false);
8cda6414d63e Added audio annotation playback. Corrected minor bugs
veltr
parents: 15
diff changeset
    66
            }
8cda6414d63e Added audio annotation playback. Corrected minor bugs
veltr
parents: 15
diff changeset
    67
        }
8cda6414d63e Added audio annotation playback. Corrected minor bugs
veltr
parents: 15
diff changeset
    68
    });
8cda6414d63e Added audio annotation playback. Corrected minor bugs
veltr
parents: 15
diff changeset
    69
    this.current_audio = false;
60
c9c34daf1fe6 improvements in interactions
veltr
parents: 59
diff changeset
    70
    this.annotation_playing = false;
c9c34daf1fe6 improvements in interactions
veltr
parents: 59
diff changeset
    71
    this.media_playing = !this.player.popcorn.media.paused;
30
8cda6414d63e Added audio annotation playback. Corrected minor bugs
veltr
parents: 15
diff changeset
    72
    this.redraw();
8cda6414d63e Added audio annotation playback. Corrected minor bugs
veltr
parents: 15
diff changeset
    73
}
8cda6414d63e Added audio annotation playback. Corrected minor bugs
veltr
parents: 15
diff changeset
    74
8cda6414d63e Added audio annotation playback. Corrected minor bugs
veltr
parents: 15
diff changeset
    75
IriSP.Widgets.MusitagAnnotations.prototype.setPlayState = function(_playState) {
60
c9c34daf1fe6 improvements in interactions
veltr
parents: 59
diff changeset
    76
    this.annotation_playing = _playState;
30
8cda6414d63e Added audio annotation playback. Corrected minor bugs
veltr
parents: 15
diff changeset
    77
    if (_playState) {
8cda6414d63e Added audio annotation playback. Corrected minor bugs
veltr
parents: 15
diff changeset
    78
        this.$main.find(".Musitag-Annotations-Balloon").addClass("pause");
8cda6414d63e Added audio annotation playback. Corrected minor bugs
veltr
parents: 15
diff changeset
    79
    } else {
8cda6414d63e Added audio annotation playback. Corrected minor bugs
veltr
parents: 15
diff changeset
    80
        this.$main.find(".Musitag-Annotations-Balloon").removeClass("pause");
60
c9c34daf1fe6 improvements in interactions
veltr
parents: 59
diff changeset
    81
        if (this.media_playing) {
c9c34daf1fe6 improvements in interactions
veltr
parents: 59
diff changeset
    82
            this.player.popcorn.play();
c9c34daf1fe6 improvements in interactions
veltr
parents: 59
diff changeset
    83
        }
30
8cda6414d63e Added audio annotation playback. Corrected minor bugs
veltr
parents: 15
diff changeset
    84
    }
8cda6414d63e Added audio annotation playback. Corrected minor bugs
veltr
parents: 15
diff changeset
    85
}
8cda6414d63e Added audio annotation playback. Corrected minor bugs
veltr
parents: 15
diff changeset
    86
8cda6414d63e Added audio annotation playback. Corrected minor bugs
veltr
parents: 15
diff changeset
    87
IriSP.Widgets.MusitagAnnotations.prototype.redraw = function() {
8cda6414d63e Added audio annotation playback. Corrected minor bugs
veltr
parents: 15
diff changeset
    88
    
2
44deeff592e2 Added metadataplayer, "widgetized" the interface
veltr
parents:
diff changeset
    89
    var _html = '',
44deeff592e2 Added metadataplayer, "widgetized" the interface
veltr
parents:
diff changeset
    90
        _annotations = this.getWidgetAnnotations(),
44deeff592e2 Added metadataplayer, "widgetized" the interface
veltr
parents:
diff changeset
    91
        _duration = this.source.getDuration().milliseconds,
44deeff592e2 Added metadataplayer, "widgetized" the interface
veltr
parents:
diff changeset
    92
        _sliceDuration = _duration/this.columns,
44deeff592e2 Added metadataplayer, "widgetized" the interface
veltr
parents:
diff changeset
    93
        _this = this;
44deeff592e2 Added metadataplayer, "widgetized" the interface
veltr
parents:
diff changeset
    94
    _annotations.forEach(function(_annotation) {
44deeff592e2 Added metadataplayer, "widgetized" the interface
veltr
parents:
diff changeset
    95
        var _tags = _annotation.getTagTexts();
54
402fad4d9495 Added logos
veltr
parents: 40
diff changeset
    96
        _annotation.emoticon = IriSP._(_this.emoticons).find(function(_emoticon) {
402fad4d9495 Added logos
veltr
parents: 40
diff changeset
    97
            return IriSP._(_tags).find(function(_tag) {
402fad4d9495 Added logos
veltr
parents: 40
diff changeset
    98
                return _tag == _emoticon.tag;
402fad4d9495 Added logos
veltr
parents: 40
diff changeset
    99
            });
402fad4d9495 Added logos
veltr
parents: 40
diff changeset
   100
        });
402fad4d9495 Added logos
veltr
parents: 40
diff changeset
   101
        _annotation.color = IriSP._(_this.colors).find(function(_color) {
402fad4d9495 Added logos
veltr
parents: 40
diff changeset
   102
            return IriSP._(_tags).find(function(_tag) {
402fad4d9495 Added logos
veltr
parents: 40
diff changeset
   103
                return _tag == _color.tag;
402fad4d9495 Added logos
veltr
parents: 40
diff changeset
   104
            });
2
44deeff592e2 Added metadataplayer, "widgetized" the interface
veltr
parents:
diff changeset
   105
        });
44deeff592e2 Added metadataplayer, "widgetized" the interface
veltr
parents:
diff changeset
   106
    });
44deeff592e2 Added metadataplayer, "widgetized" the interface
veltr
parents:
diff changeset
   107
    for (var i = 0; i < this.columns; i++) {
44deeff592e2 Added metadataplayer, "widgetized" the interface
veltr
parents:
diff changeset
   108
        var _sliceStart = i * _sliceDuration,
44deeff592e2 Added metadataplayer, "widgetized" the interface
veltr
parents:
diff changeset
   109
            _sliceEnd = (i+1) * _sliceDuration,
44deeff592e2 Added metadataplayer, "widgetized" the interface
veltr
parents:
diff changeset
   110
            _column = _annotations.filter(function(_annotation) {
44deeff592e2 Added metadataplayer, "widgetized" the interface
veltr
parents:
diff changeset
   111
                return _annotation.begin >= _sliceStart
44deeff592e2 Added metadataplayer, "widgetized" the interface
veltr
parents:
diff changeset
   112
                    && _annotation.begin < _sliceEnd
54
402fad4d9495 Added logos
veltr
parents: 40
diff changeset
   113
                    && _annotation.emoticon
402fad4d9495 Added logos
veltr
parents: 40
diff changeset
   114
                    && _annotation.color
2
44deeff592e2 Added metadataplayer, "widgetized" the interface
veltr
parents:
diff changeset
   115
            }).sortBy(function(_annotation) {
44deeff592e2 Added metadataplayer, "widgetized" the interface
veltr
parents:
diff changeset
   116
                return _annotation.created;
44deeff592e2 Added metadataplayer, "widgetized" the interface
veltr
parents:
diff changeset
   117
            });
44deeff592e2 Added metadataplayer, "widgetized" the interface
veltr
parents:
diff changeset
   118
        if (_column.length > this.max_by_column) {
44deeff592e2 Added metadataplayer, "widgetized" the interface
veltr
parents:
diff changeset
   119
            _column = _column.slice(_column.length - this.max_by_column, _column.length);
44deeff592e2 Added metadataplayer, "widgetized" the interface
veltr
parents:
diff changeset
   120
        }
44deeff592e2 Added metadataplayer, "widgetized" the interface
veltr
parents:
diff changeset
   121
        _html += '<div class="Musitag-Annotations-column">';
44deeff592e2 Added metadataplayer, "widgetized" the interface
veltr
parents:
diff changeset
   122
        _html += _column.map(function(_annotation) {
56
af969d762e03 corrections
veltr
parents: 54
diff changeset
   123
            return Mustache.to_html(_this.annotation_template, { annotation: _annotation, l10n: _this.l10n });
2
44deeff592e2 Added metadataplayer, "widgetized" the interface
veltr
parents:
diff changeset
   124
        }).join('');
44deeff592e2 Added metadataplayer, "widgetized" the interface
veltr
parents:
diff changeset
   125
        _html += '</div>';
44deeff592e2 Added metadataplayer, "widgetized" the interface
veltr
parents:
diff changeset
   126
    }
30
8cda6414d63e Added audio annotation playback. Corrected minor bugs
veltr
parents: 15
diff changeset
   127
    this.$main.html(_html);
8cda6414d63e Added audio annotation playback. Corrected minor bugs
veltr
parents: 15
diff changeset
   128
    this.$main.find('.Musitag-Annotations-tag .Musitag-container-50').click(function() {
4
4928ecd06b44 Added speech balloon to annotations
veltr
parents: 3
diff changeset
   129
        var _el = IriSP.jQuery(this).parent();
3
b9cf9835b5b9 added MP3 file
veltr
parents: 2
diff changeset
   130
        _this.player.popcorn.currentTime(_el.attr("begin-time") / 1000);
b9cf9835b5b9 added MP3 file
veltr
parents: 2
diff changeset
   131
    });
30
8cda6414d63e Added audio annotation playback. Corrected minor bugs
veltr
parents: 15
diff changeset
   132
    this.$main.find('.Musitag-Annotations-tag').mouseover(function() {
4
4928ecd06b44 Added speech balloon to annotations
veltr
parents: 3
diff changeset
   133
        var _el = IriSP.jQuery(this);
4928ecd06b44 Added speech balloon to annotations
veltr
parents: 3
diff changeset
   134
        _this.$.find('.Musitag-Annotations-Balloon').hide();
4928ecd06b44 Added speech balloon to annotations
veltr
parents: 3
diff changeset
   135
        _el.find('.Musitag-Annotations-Balloon').show();
4928ecd06b44 Added speech balloon to annotations
veltr
parents: 3
diff changeset
   136
    });
30
8cda6414d63e Added audio annotation playback. Corrected minor bugs
veltr
parents: 15
diff changeset
   137
    this.$main.find('.Musitag-Annotations-Balloon').click(function() {
8cda6414d63e Added audio annotation playback. Corrected minor bugs
veltr
parents: 15
diff changeset
   138
        var _el = IriSP.jQuery(this),
8cda6414d63e Added audio annotation playback. Corrected minor bugs
veltr
parents: 15
diff changeset
   139
            _audiofile = _el.attr("audio-url").replace(_this.rtmp_streamer,"");
60
c9c34daf1fe6 improvements in interactions
veltr
parents: 59
diff changeset
   140
        if (_this.annotation_playing) {
30
8cda6414d63e Added audio annotation playback. Corrected minor bugs
veltr
parents: 15
diff changeset
   141
            _this.jwplayer.pause();
8cda6414d63e Added audio annotation playback. Corrected minor bugs
veltr
parents: 15
diff changeset
   142
            _this.loadAudio(_audiofile);
8cda6414d63e Added audio annotation playback. Corrected minor bugs
veltr
parents: 15
diff changeset
   143
        } else {
8cda6414d63e Added audio annotation playback. Corrected minor bugs
veltr
parents: 15
diff changeset
   144
            _this.loadAudio(_audiofile);
8cda6414d63e Added audio annotation playback. Corrected minor bugs
veltr
parents: 15
diff changeset
   145
            _this.jwplayer.play();
8cda6414d63e Added audio annotation playback. Corrected minor bugs
veltr
parents: 15
diff changeset
   146
            _this.setPlayState(true);
60
c9c34daf1fe6 improvements in interactions
veltr
parents: 59
diff changeset
   147
            _this.media_playing = !_this.player.popcorn.media.paused;
c9c34daf1fe6 improvements in interactions
veltr
parents: 59
diff changeset
   148
            if (_this.media_playing) {
c9c34daf1fe6 improvements in interactions
veltr
parents: 59
diff changeset
   149
                _this.player.popcorn.pause();
c9c34daf1fe6 improvements in interactions
veltr
parents: 59
diff changeset
   150
            }
30
8cda6414d63e Added audio annotation playback. Corrected minor bugs
veltr
parents: 15
diff changeset
   151
        }
8cda6414d63e Added audio annotation playback. Corrected minor bugs
veltr
parents: 15
diff changeset
   152
    });
8cda6414d63e Added audio annotation playback. Corrected minor bugs
veltr
parents: 15
diff changeset
   153
}
8cda6414d63e Added audio annotation playback. Corrected minor bugs
veltr
parents: 15
diff changeset
   154
8cda6414d63e Added audio annotation playback. Corrected minor bugs
veltr
parents: 15
diff changeset
   155
IriSP.Widgets.MusitagAnnotations.prototype.loadAudio = function(_audiofile) {
8cda6414d63e Added audio annotation playback. Corrected minor bugs
veltr
parents: 15
diff changeset
   156
    if (this.current_audio !== _audiofile) {
8cda6414d63e Added audio annotation playback. Corrected minor bugs
veltr
parents: 15
diff changeset
   157
        this.jwplayer.load({
8cda6414d63e Added audio annotation playback. Corrected minor bugs
veltr
parents: 15
diff changeset
   158
            file: _audiofile,
8cda6414d63e Added audio annotation playback. Corrected minor bugs
veltr
parents: 15
diff changeset
   159
            streamer: this.rtmp_streamer
8cda6414d63e Added audio annotation playback. Corrected minor bugs
veltr
parents: 15
diff changeset
   160
        });
8cda6414d63e Added audio annotation playback. Corrected minor bugs
veltr
parents: 15
diff changeset
   161
        this.current_audio = _audiofile;
8cda6414d63e Added audio annotation playback. Corrected minor bugs
veltr
parents: 15
diff changeset
   162
    }
8cda6414d63e Added audio annotation playback. Corrected minor bugs
veltr
parents: 15
diff changeset
   163
}