cms/app-client/app/components/playlist-component.js
author ymh <ymh.work@gmail.com>
Thu, 03 Nov 2016 11:14:41 +0100
changeset 391 4f6118afabee
parent 347 9779512454af
child 404 0a5eef6ad2fe
permissions -rw-r--r--
Carto improvement: - add count on hover, - carto filter use geonames id resolution - geonames id in filter
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
196
7550cb541901 Filter as a service
Chloe Laisne <chloe.laisne@gmail.com>
parents:
diff changeset
     1
import Ember from 'ember';
7550cb541901 Filter as a service
Chloe Laisne <chloe.laisne@gmail.com>
parents:
diff changeset
     2
7550cb541901 Filter as a service
Chloe Laisne <chloe.laisne@gmail.com>
parents:
diff changeset
     3
export default Ember.Component.extend({
7550cb541901 Filter as a service
Chloe Laisne <chloe.laisne@gmail.com>
parents:
diff changeset
     4
209
35cb7200bb0a Separate playlist and player component with player service as bridge
Chloe Laisne <chloe.laisne@gmail.com>
parents: 201
diff changeset
     5
    classNames: ['playlist-component'],
200
a441c40f9c5e Fix playlist filtering
Chloe Laisne <chloe.laisne@gmail.com>
parents: 196
diff changeset
     6
209
35cb7200bb0a Separate playlist and player component with player service as bridge
Chloe Laisne <chloe.laisne@gmail.com>
parents: 201
diff changeset
     7
    filter: Ember.inject.service(),
35cb7200bb0a Separate playlist and player component with player service as bridge
Chloe Laisne <chloe.laisne@gmail.com>
parents: 201
diff changeset
     8
    player: Ember.inject.service(),
200
a441c40f9c5e Fix playlist filtering
Chloe Laisne <chloe.laisne@gmail.com>
parents: 196
diff changeset
     9
344
70451a4dc9ae Pagination playlist
Chloe Laisne <chloe.laisne@gmail.com>
parents: 342
diff changeset
    10
    model: [],
209
35cb7200bb0a Separate playlist and player component with player service as bridge
Chloe Laisne <chloe.laisne@gmail.com>
parents: 201
diff changeset
    11
    documents: Ember.computed('model', 'filter.location', 'filter.language', 'filter.discourse', 'filter.date', 'filter.theme', function() {
317
e653de66f252 Remove document filtering in playlist
Chloe Laisne <chloe.laisne@gmail.com>
parents: 301
diff changeset
    12
        return this.get('model');
200
a441c40f9c5e Fix playlist filtering
Chloe Laisne <chloe.laisne@gmail.com>
parents: 196
diff changeset
    13
    }),
a441c40f9c5e Fix playlist filtering
Chloe Laisne <chloe.laisne@gmail.com>
parents: 196
diff changeset
    14
215
82878d132784 Play/Pause/Reset events from player/playlist-components
Chloe Laisne <chloe.laisne@gmail.com>
parents: 212
diff changeset
    15
    documentsLoaded: Ember.observer('documents', function() {
82878d132784 Play/Pause/Reset events from player/playlist-components
Chloe Laisne <chloe.laisne@gmail.com>
parents: 212
diff changeset
    16
        this.get('player').set('items', this.get('documents').map(function(document) {
82878d132784 Play/Pause/Reset events from player/playlist-components
Chloe Laisne <chloe.laisne@gmail.com>
parents: 212
diff changeset
    17
            return document.get('id');
82878d132784 Play/Pause/Reset events from player/playlist-components
Chloe Laisne <chloe.laisne@gmail.com>
parents: 212
diff changeset
    18
        }));
240
aa101458cd4e Player forward and backward
Chloe Laisne <chloe.laisne@gmail.com>
parents: 233
diff changeset
    19
        if(this.get('player').get('items').length && this.get('player').get('playing') === false) {
347
9779512454af Correct jslint errors
ymh <ymh.work@gmail.com>
parents: 344
diff changeset
    20
            this.get('player').set('item', this.get('player').get('items')[0]);
216
c174124d1849 /discours and /chrono design changes
Chloe Laisne <chloe.laisne@gmail.com>
parents: 215
diff changeset
    21
        }
215
82878d132784 Play/Pause/Reset events from player/playlist-components
Chloe Laisne <chloe.laisne@gmail.com>
parents: 212
diff changeset
    22
    }).on('init'),
82878d132784 Play/Pause/Reset events from player/playlist-components
Chloe Laisne <chloe.laisne@gmail.com>
parents: 212
diff changeset
    23
336
f076ddd29e13 Playlist scroll to show playing track in view always
Chloe Laisne <chloe.laisne@gmail.com>
parents: 317
diff changeset
    24
    playerItemObserver: Ember.observer('player.item', function() {
f076ddd29e13 Playlist scroll to show playing track in view always
Chloe Laisne <chloe.laisne@gmail.com>
parents: 317
diff changeset
    25
        if(this.$() && this.get('player').get('item')) {
f076ddd29e13 Playlist scroll to show playing track in view always
Chloe Laisne <chloe.laisne@gmail.com>
parents: 317
diff changeset
    26
            var ul = this.$().find('ul');
f076ddd29e13 Playlist scroll to show playing track in view always
Chloe Laisne <chloe.laisne@gmail.com>
parents: 317
diff changeset
    27
            var li = this.$().find('li#' + this.get('player').get('item').replace('.', '\\.').replace('/', '\\/'));
344
70451a4dc9ae Pagination playlist
Chloe Laisne <chloe.laisne@gmail.com>
parents: 342
diff changeset
    28
            if(li.length) {
70451a4dc9ae Pagination playlist
Chloe Laisne <chloe.laisne@gmail.com>
parents: 342
diff changeset
    29
                if(li.offset().top - ul.offset().top < 0) {
70451a4dc9ae Pagination playlist
Chloe Laisne <chloe.laisne@gmail.com>
parents: 342
diff changeset
    30
                    ul.animate({
70451a4dc9ae Pagination playlist
Chloe Laisne <chloe.laisne@gmail.com>
parents: 342
diff changeset
    31
                        'scrollTop': ul.scrollTop() + li.offset().top - ul.offset().top
70451a4dc9ae Pagination playlist
Chloe Laisne <chloe.laisne@gmail.com>
parents: 342
diff changeset
    32
                    });
70451a4dc9ae Pagination playlist
Chloe Laisne <chloe.laisne@gmail.com>
parents: 342
diff changeset
    33
                } else if(li.offset().top + li.outerHeight() - ul.offset().top > ul.outerHeight()) {
70451a4dc9ae Pagination playlist
Chloe Laisne <chloe.laisne@gmail.com>
parents: 342
diff changeset
    34
                    ul.animate({
70451a4dc9ae Pagination playlist
Chloe Laisne <chloe.laisne@gmail.com>
parents: 342
diff changeset
    35
                        'scrollTop': ul.scrollTop() + li.offset().top  + li.outerHeight() - ul.offset().top  - ul.height()
70451a4dc9ae Pagination playlist
Chloe Laisne <chloe.laisne@gmail.com>
parents: 342
diff changeset
    36
                    });
70451a4dc9ae Pagination playlist
Chloe Laisne <chloe.laisne@gmail.com>
parents: 342
diff changeset
    37
                }
336
f076ddd29e13 Playlist scroll to show playing track in view always
Chloe Laisne <chloe.laisne@gmail.com>
parents: 317
diff changeset
    38
            }
f076ddd29e13 Playlist scroll to show playing track in view always
Chloe Laisne <chloe.laisne@gmail.com>
parents: 317
diff changeset
    39
        }
f076ddd29e13 Playlist scroll to show playing track in view always
Chloe Laisne <chloe.laisne@gmail.com>
parents: 317
diff changeset
    40
    }),
f076ddd29e13 Playlist scroll to show playing track in view always
Chloe Laisne <chloe.laisne@gmail.com>
parents: 317
diff changeset
    41
209
35cb7200bb0a Separate playlist and player component with player service as bridge
Chloe Laisne <chloe.laisne@gmail.com>
parents: 201
diff changeset
    42
    didRender: function() {
35cb7200bb0a Separate playlist and player component with player service as bridge
Chloe Laisne <chloe.laisne@gmail.com>
parents: 201
diff changeset
    43
        this._super(...arguments);
35cb7200bb0a Separate playlist and player component with player service as bridge
Chloe Laisne <chloe.laisne@gmail.com>
parents: 201
diff changeset
    44
        this.$().find('ul').height(Ember.$('.corpus-app-wrapper').outerHeight() - (Ember.$('.filter-component').outerHeight() + this.$().find('h2').outerHeight()));
35cb7200bb0a Separate playlist and player component with player service as bridge
Chloe Laisne <chloe.laisne@gmail.com>
parents: 201
diff changeset
    45
    },
35cb7200bb0a Separate playlist and player component with player service as bridge
Chloe Laisne <chloe.laisne@gmail.com>
parents: 201
diff changeset
    46
35cb7200bb0a Separate playlist and player component with player service as bridge
Chloe Laisne <chloe.laisne@gmail.com>
parents: 201
diff changeset
    47
    actions: {
35cb7200bb0a Separate playlist and player component with player service as bridge
Chloe Laisne <chloe.laisne@gmail.com>
parents: 201
diff changeset
    48
344
70451a4dc9ae Pagination playlist
Chloe Laisne <chloe.laisne@gmail.com>
parents: 342
diff changeset
    49
        previous: function() {
70451a4dc9ae Pagination playlist
Chloe Laisne <chloe.laisne@gmail.com>
parents: 342
diff changeset
    50
            this.sendAction('pageAction', 'previous');
70451a4dc9ae Pagination playlist
Chloe Laisne <chloe.laisne@gmail.com>
parents: 342
diff changeset
    51
        },
70451a4dc9ae Pagination playlist
Chloe Laisne <chloe.laisne@gmail.com>
parents: 342
diff changeset
    52
70451a4dc9ae Pagination playlist
Chloe Laisne <chloe.laisne@gmail.com>
parents: 342
diff changeset
    53
        next: function() {
70451a4dc9ae Pagination playlist
Chloe Laisne <chloe.laisne@gmail.com>
parents: 342
diff changeset
    54
            this.sendAction('pageAction', 'next');
70451a4dc9ae Pagination playlist
Chloe Laisne <chloe.laisne@gmail.com>
parents: 342
diff changeset
    55
        },
70451a4dc9ae Pagination playlist
Chloe Laisne <chloe.laisne@gmail.com>
parents: 342
diff changeset
    56
252
ba4fd614582a Load player with selected row
Chloe Laisne <chloe.laisne@gmail.com>
parents: 251
diff changeset
    57
        select: function(id) {
ba4fd614582a Load player with selected row
Chloe Laisne <chloe.laisne@gmail.com>
parents: 251
diff changeset
    58
            this.get('player').select(id);
342
9375b692ff22 Display transcript by default
Chloe Laisne <chloe.laisne@gmail.com>
parents: 338
diff changeset
    59
            this.get('player').displayMetadata('notice');
252
ba4fd614582a Load player with selected row
Chloe Laisne <chloe.laisne@gmail.com>
parents: 251
diff changeset
    60
        },
ba4fd614582a Load player with selected row
Chloe Laisne <chloe.laisne@gmail.com>
parents: 251
diff changeset
    61
249
e4204b1a579a Quickfix micro-cuts
Chloe Laisne <chloe.laisne@gmail.com>
parents: 240
diff changeset
    62
        play: function(id) {
e4204b1a579a Quickfix micro-cuts
Chloe Laisne <chloe.laisne@gmail.com>
parents: 240
diff changeset
    63
            this.get('player').play(id);
e4204b1a579a Quickfix micro-cuts
Chloe Laisne <chloe.laisne@gmail.com>
parents: 240
diff changeset
    64
        },
e4204b1a579a Quickfix micro-cuts
Chloe Laisne <chloe.laisne@gmail.com>
parents: 240
diff changeset
    65
257
eba9edbd8f46 Add title to annotation
Chloe Laisne <chloe.laisne@gmail.com>
parents: 254
diff changeset
    66
        pause: function() {
249
e4204b1a579a Quickfix micro-cuts
Chloe Laisne <chloe.laisne@gmail.com>
parents: 240
diff changeset
    67
            this.get('player').pause();
227
5c9250f55f4b Basic notice logic from query parameters
Chloe Laisne <chloe.laisne@gmail.com>
parents: 216
diff changeset
    68
        },
5c9250f55f4b Basic notice logic from query parameters
Chloe Laisne <chloe.laisne@gmail.com>
parents: 216
diff changeset
    69
301
29b425234094 Transcript icon in tool container + Toggle transcript action on click
Chloe Laisne <chloe.laisne@gmail.com>
parents: 257
diff changeset
    70
        displayTranscript: function() {
29b425234094 Transcript icon in tool container + Toggle transcript action on click
Chloe Laisne <chloe.laisne@gmail.com>
parents: 257
diff changeset
    71
            this.get('player').displayAdditionalInformation('transcript');
29b425234094 Transcript icon in tool container + Toggle transcript action on click
Chloe Laisne <chloe.laisne@gmail.com>
parents: 257
diff changeset
    72
        },
29b425234094 Transcript icon in tool container + Toggle transcript action on click
Chloe Laisne <chloe.laisne@gmail.com>
parents: 257
diff changeset
    73
347
9779512454af Correct jslint errors
ymh <ymh.work@gmail.com>
parents: 344
diff changeset
    74
        displayNotice: function() {
338
4a3899b6a7ed Fix notice/transcript display when adding filter from notice, switching from playlist, toolbar, and player
Chloe Laisne <chloe.laisne@gmail.com>
parents: 336
diff changeset
    75
            if(this.get('player').get('window') !== 'notice') {
254
a7cf2887e993 Hide/Show video CSS
Chloe Laisne <chloe.laisne@gmail.com>
parents: 252
diff changeset
    76
                this.get('player').displayMetadata('notice');
227
5c9250f55f4b Basic notice logic from query parameters
Chloe Laisne <chloe.laisne@gmail.com>
parents: 216
diff changeset
    77
            } else {
338
4a3899b6a7ed Fix notice/transcript display when adding filter from notice, switching from playlist, toolbar, and player
Chloe Laisne <chloe.laisne@gmail.com>
parents: 336
diff changeset
    78
                this.get('player').displayMetadata(false);
227
5c9250f55f4b Basic notice logic from query parameters
Chloe Laisne <chloe.laisne@gmail.com>
parents: 216
diff changeset
    79
            }
209
35cb7200bb0a Separate playlist and player component with player service as bridge
Chloe Laisne <chloe.laisne@gmail.com>
parents: 201
diff changeset
    80
        }
35cb7200bb0a Separate playlist and player component with player service as bridge
Chloe Laisne <chloe.laisne@gmail.com>
parents: 201
diff changeset
    81
35cb7200bb0a Separate playlist and player component with player service as bridge
Chloe Laisne <chloe.laisne@gmail.com>
parents: 201
diff changeset
    82
    }
196
7550cb541901 Filter as a service
Chloe Laisne <chloe.laisne@gmail.com>
parents:
diff changeset
    83
7550cb541901 Filter as a service
Chloe Laisne <chloe.laisne@gmail.com>
parents:
diff changeset
    84
});