cms/app-client/app/services/player.js
author ymh <ymh.work@gmail.com>
Fri, 02 Dec 2016 15:30:16 +0100
changeset 459 6a296e92887f
parent 414 5c6c526a7fc1
child 462 ebd8269781fa
permissions -rw-r--r--
add a spinner when opening a transcript
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
209
35cb7200bb0a Separate playlist and player component with player service as bridge
Chloe Laisne <chloe.laisne@gmail.com>
parents:
diff changeset
     1
import Ember from 'ember';
35cb7200bb0a Separate playlist and player component with player service as bridge
Chloe Laisne <chloe.laisne@gmail.com>
parents:
diff changeset
     2
215
82878d132784 Play/Pause/Reset events from player/playlist-components
Chloe Laisne <chloe.laisne@gmail.com>
parents: 214
diff changeset
     3
export default Ember.Service.extend(Ember.Evented, {
209
35cb7200bb0a Separate playlist and player component with player service as bridge
Chloe Laisne <chloe.laisne@gmail.com>
parents:
diff changeset
     4
214
9bff007eb03c Reflect player-component actions on playlist-component
Chloe Laisne <chloe.laisne@gmail.com>
parents: 212
diff changeset
     5
    items: [],
9bff007eb03c Reflect player-component actions on playlist-component
Chloe Laisne <chloe.laisne@gmail.com>
parents: 212
diff changeset
     6
    item: null,
242
523ca6e73353 Add video player
Chloe Laisne <chloe.laisne@gmail.com>
parents: 218
diff changeset
     7
    model: null,
253
0be9770b09b4 Hide/show transcript button in the player - Do not request transscript when property is null in the document request
Chloe Laisne <chloe.laisne@gmail.com>
parents: 252
diff changeset
     8
    transcript: null,
459
6a296e92887f add a spinner when opening a transcript
ymh <ymh.work@gmail.com>
parents: 414
diff changeset
     9
    transcriptLoading: false,
212
f2c6080a73aa Player backward/forward design logic
Chloe Laisne <chloe.laisne@gmail.com>
parents: 209
diff changeset
    10
271
e234339fe8df Fix display notice error + Hide notice/transcript/video when changing route
Chloe Laisne <chloe.laisne@gmail.com>
parents: 254
diff changeset
    11
    window: false,
242
523ca6e73353 Add video player
Chloe Laisne <chloe.laisne@gmail.com>
parents: 218
diff changeset
    12
    playing: false,
247
7a5d729992b8 Design and animate transcript
Chloe Laisne <chloe.laisne@gmail.com>
parents: 246
diff changeset
    13
    progress: 0, // In Milliseconds
254
a7cf2887e993 Hide/Show video CSS
Chloe Laisne <chloe.laisne@gmail.com>
parents: 253
diff changeset
    14
    videoscreen: false,
a7cf2887e993 Hide/Show video CSS
Chloe Laisne <chloe.laisne@gmail.com>
parents: 253
diff changeset
    15
a7cf2887e993 Hide/Show video CSS
Chloe Laisne <chloe.laisne@gmail.com>
parents: 253
diff changeset
    16
    modelObserver: Ember.observer('model', function() {
a7cf2887e993 Hide/Show video CSS
Chloe Laisne <chloe.laisne@gmail.com>
parents: 253
diff changeset
    17
        this.toggleVideoscreen(this.get('model').get('video'));
a7cf2887e993 Hide/Show video CSS
Chloe Laisne <chloe.laisne@gmail.com>
parents: 253
diff changeset
    18
    }),
214
9bff007eb03c Reflect player-component actions on playlist-component
Chloe Laisne <chloe.laisne@gmail.com>
parents: 212
diff changeset
    19
254
a7cf2887e993 Hide/Show video CSS
Chloe Laisne <chloe.laisne@gmail.com>
parents: 253
diff changeset
    20
    displayAdditionalInformation: function(el) {
a7cf2887e993 Hide/Show video CSS
Chloe Laisne <chloe.laisne@gmail.com>
parents: 253
diff changeset
    21
        if(el === 'video') {
a7cf2887e993 Hide/Show video CSS
Chloe Laisne <chloe.laisne@gmail.com>
parents: 253
diff changeset
    22
            this.toggleVideoscreen();
a7cf2887e993 Hide/Show video CSS
Chloe Laisne <chloe.laisne@gmail.com>
parents: 253
diff changeset
    23
        } 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: 271
diff changeset
    24
            if(this.get('window') !== el) {
4a3899b6a7ed Fix notice/transcript display when adding filter from notice, switching from playlist, toolbar, and player
Chloe Laisne <chloe.laisne@gmail.com>
parents: 271
diff changeset
    25
                this.displayMetadata(el);
4a3899b6a7ed Fix notice/transcript display when adding filter from notice, switching from playlist, toolbar, and player
Chloe Laisne <chloe.laisne@gmail.com>
parents: 271
diff changeset
    26
            } else {
4a3899b6a7ed Fix notice/transcript display when adding filter from notice, switching from playlist, toolbar, and player
Chloe Laisne <chloe.laisne@gmail.com>
parents: 271
diff changeset
    27
                this.displayMetadata(false);
4a3899b6a7ed Fix notice/transcript display when adding filter from notice, switching from playlist, toolbar, and player
Chloe Laisne <chloe.laisne@gmail.com>
parents: 271
diff changeset
    28
            }
254
a7cf2887e993 Hide/Show video CSS
Chloe Laisne <chloe.laisne@gmail.com>
parents: 253
diff changeset
    29
        }
a7cf2887e993 Hide/Show video CSS
Chloe Laisne <chloe.laisne@gmail.com>
parents: 253
diff changeset
    30
    },
a7cf2887e993 Hide/Show video CSS
Chloe Laisne <chloe.laisne@gmail.com>
parents: 253
diff changeset
    31
a7cf2887e993 Hide/Show video CSS
Chloe Laisne <chloe.laisne@gmail.com>
parents: 253
diff changeset
    32
    displayMetadata: function(el) {
338
4a3899b6a7ed Fix notice/transcript display when adding filter from notice, switching from playlist, toolbar, and player
Chloe Laisne <chloe.laisne@gmail.com>
parents: 271
diff changeset
    33
         if(typeof el !== 'undefined') {
251
ac320de33ec7 Add transcript button to player-component
Chloe Laisne <chloe.laisne@gmail.com>
parents: 249
diff changeset
    34
            this.set('window', el);
459
6a296e92887f add a spinner when opening a transcript
ymh <ymh.work@gmail.com>
parents: 414
diff changeset
    35
            if(el==='transcript') {
6a296e92887f add a spinner when opening a transcript
ymh <ymh.work@gmail.com>
parents: 414
diff changeset
    36
              this.set('transcriptLoading', true);
6a296e92887f add a spinner when opening a transcript
ymh <ymh.work@gmail.com>
parents: 414
diff changeset
    37
            }
251
ac320de33ec7 Add transcript button to player-component
Chloe Laisne <chloe.laisne@gmail.com>
parents: 249
diff changeset
    38
        } else {
271
e234339fe8df Fix display notice error + Hide notice/transcript/video when changing route
Chloe Laisne <chloe.laisne@gmail.com>
parents: 254
diff changeset
    39
            this.set('window', false);
459
6a296e92887f add a spinner when opening a transcript
ymh <ymh.work@gmail.com>
parents: 414
diff changeset
    40
            this.set('transcriptLoading', false);
251
ac320de33ec7 Add transcript button to player-component
Chloe Laisne <chloe.laisne@gmail.com>
parents: 249
diff changeset
    41
        }
ac320de33ec7 Add transcript button to player-component
Chloe Laisne <chloe.laisne@gmail.com>
parents: 249
diff changeset
    42
    },
ac320de33ec7 Add transcript button to player-component
Chloe Laisne <chloe.laisne@gmail.com>
parents: 249
diff changeset
    43
254
a7cf2887e993 Hide/Show video CSS
Chloe Laisne <chloe.laisne@gmail.com>
parents: 253
diff changeset
    44
    toggleVideoscreen: function(state) {
a7cf2887e993 Hide/Show video CSS
Chloe Laisne <chloe.laisne@gmail.com>
parents: 253
diff changeset
    45
        if(typeof state === 'undefined') {
a7cf2887e993 Hide/Show video CSS
Chloe Laisne <chloe.laisne@gmail.com>
parents: 253
diff changeset
    46
            this.set('videoscreen', !this.get('videoscreen'));
a7cf2887e993 Hide/Show video CSS
Chloe Laisne <chloe.laisne@gmail.com>
parents: 253
diff changeset
    47
        } else {
a7cf2887e993 Hide/Show video CSS
Chloe Laisne <chloe.laisne@gmail.com>
parents: 253
diff changeset
    48
            this.set('videoscreen', state);
414
5c6c526a7fc1 Display for single notice, preparation for share link
ymh <ymh.work@gmail.com>
parents: 373
diff changeset
    49
        }
254
a7cf2887e993 Hide/Show video CSS
Chloe Laisne <chloe.laisne@gmail.com>
parents: 253
diff changeset
    50
    },
a7cf2887e993 Hide/Show video CSS
Chloe Laisne <chloe.laisne@gmail.com>
parents: 253
diff changeset
    51
215
82878d132784 Play/Pause/Reset events from player/playlist-components
Chloe Laisne <chloe.laisne@gmail.com>
parents: 214
diff changeset
    52
    init: function() {
82878d132784 Play/Pause/Reset events from player/playlist-components
Chloe Laisne <chloe.laisne@gmail.com>
parents: 214
diff changeset
    53
        this.on('reset', Ember.run.bind(this, this.get('reset')));
82878d132784 Play/Pause/Reset events from player/playlist-components
Chloe Laisne <chloe.laisne@gmail.com>
parents: 214
diff changeset
    54
    },
82878d132784 Play/Pause/Reset events from player/playlist-components
Chloe Laisne <chloe.laisne@gmail.com>
parents: 214
diff changeset
    55
249
e4204b1a579a Quickfix micro-cuts
Chloe Laisne <chloe.laisne@gmail.com>
parents: 248
diff changeset
    56
    setProgress: function(time) {
e4204b1a579a Quickfix micro-cuts
Chloe Laisne <chloe.laisne@gmail.com>
parents: 248
diff changeset
    57
        this.set('progress', time);
e4204b1a579a Quickfix micro-cuts
Chloe Laisne <chloe.laisne@gmail.com>
parents: 248
diff changeset
    58
    },
e4204b1a579a Quickfix micro-cuts
Chloe Laisne <chloe.laisne@gmail.com>
parents: 248
diff changeset
    59
252
ba4fd614582a Load player with selected row
Chloe Laisne <chloe.laisne@gmail.com>
parents: 251
diff changeset
    60
    select: function (id) {
ba4fd614582a Load player with selected row
Chloe Laisne <chloe.laisne@gmail.com>
parents: 251
diff changeset
    61
        this.set('item', id);
ba4fd614582a Load player with selected row
Chloe Laisne <chloe.laisne@gmail.com>
parents: 251
diff changeset
    62
    },
ba4fd614582a Load player with selected row
Chloe Laisne <chloe.laisne@gmail.com>
parents: 251
diff changeset
    63
249
e4204b1a579a Quickfix micro-cuts
Chloe Laisne <chloe.laisne@gmail.com>
parents: 248
diff changeset
    64
    play: function(id) {
252
ba4fd614582a Load player with selected row
Chloe Laisne <chloe.laisne@gmail.com>
parents: 251
diff changeset
    65
        this.select(id);
249
e4204b1a579a Quickfix micro-cuts
Chloe Laisne <chloe.laisne@gmail.com>
parents: 248
diff changeset
    66
        this.set('playing', true);
e4204b1a579a Quickfix micro-cuts
Chloe Laisne <chloe.laisne@gmail.com>
parents: 248
diff changeset
    67
    },
e4204b1a579a Quickfix micro-cuts
Chloe Laisne <chloe.laisne@gmail.com>
parents: 248
diff changeset
    68
e4204b1a579a Quickfix micro-cuts
Chloe Laisne <chloe.laisne@gmail.com>
parents: 248
diff changeset
    69
    pause: function() {
e4204b1a579a Quickfix micro-cuts
Chloe Laisne <chloe.laisne@gmail.com>
parents: 248
diff changeset
    70
        this.set('playing', false);
e4204b1a579a Quickfix micro-cuts
Chloe Laisne <chloe.laisne@gmail.com>
parents: 248
diff changeset
    71
    },
e4204b1a579a Quickfix micro-cuts
Chloe Laisne <chloe.laisne@gmail.com>
parents: 248
diff changeset
    72
215
82878d132784 Play/Pause/Reset events from player/playlist-components
Chloe Laisne <chloe.laisne@gmail.com>
parents: 214
diff changeset
    73
    reset: function(id) {
82878d132784 Play/Pause/Reset events from player/playlist-components
Chloe Laisne <chloe.laisne@gmail.com>
parents: 214
diff changeset
    74
        this.set('item', id);
242
523ca6e73353 Add video player
Chloe Laisne <chloe.laisne@gmail.com>
parents: 218
diff changeset
    75
    }
209
35cb7200bb0a Separate playlist and player component with player service as bridge
Chloe Laisne <chloe.laisne@gmail.com>
parents:
diff changeset
    76
});