author | Chloe Laisne <chloe.laisne@gmail.com> |
Sun, 21 Aug 2016 13:51:22 +0200 | |
changeset 257 | eba9edbd8f46 |
parent 254 | a7cf2887e993 |
child 301 | 29b425234094 |
permissions | -rw-r--r-- |
196 | 1 |
import Ember from 'ember'; |
2 |
||
3 |
export default Ember.Component.extend({ |
|
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 |
|
209
35cb7200bb0a
Separate playlist and player component with player service as bridge
Chloe Laisne <chloe.laisne@gmail.com>
parents:
201
diff
changeset
|
10 |
documents: Ember.computed('model', 'filter.location', 'filter.language', 'filter.discourse', 'filter.date', 'filter.theme', function() { |
201
9ae2cf79d167
Quickfix this is undefined
Chloe Laisne <chloe.laisne@gmail.com>
parents:
200
diff
changeset
|
11 |
var self = this; |
200
a441c40f9c5e
Fix playlist filtering
Chloe Laisne <chloe.laisne@gmail.com>
parents:
196
diff
changeset
|
12 |
var documents = this.get('model'); |
233
0ff47a9c5da2
Keyboard events on chronology
Chloe Laisne <chloe.laisne@gmail.com>
parents:
227
diff
changeset
|
13 |
if (this.get('filter').get('date').length > 0) { |
200
a441c40f9c5e
Fix playlist filtering
Chloe Laisne <chloe.laisne@gmail.com>
parents:
196
diff
changeset
|
14 |
var copy = documents; |
a441c40f9c5e
Fix playlist filtering
Chloe Laisne <chloe.laisne@gmail.com>
parents:
196
diff
changeset
|
15 |
documents.map(function(document) { |
233
0ff47a9c5da2
Keyboard events on chronology
Chloe Laisne <chloe.laisne@gmail.com>
parents:
227
diff
changeset
|
16 |
if (self.get('filter').get('date').indexOf(document.get('created')) === -1){ |
200
a441c40f9c5e
Fix playlist filtering
Chloe Laisne <chloe.laisne@gmail.com>
parents:
196
diff
changeset
|
17 |
copy = copy.without(document); |
a441c40f9c5e
Fix playlist filtering
Chloe Laisne <chloe.laisne@gmail.com>
parents:
196
diff
changeset
|
18 |
} |
a441c40f9c5e
Fix playlist filtering
Chloe Laisne <chloe.laisne@gmail.com>
parents:
196
diff
changeset
|
19 |
}); |
a441c40f9c5e
Fix playlist filtering
Chloe Laisne <chloe.laisne@gmail.com>
parents:
196
diff
changeset
|
20 |
documents = copy; |
a441c40f9c5e
Fix playlist filtering
Chloe Laisne <chloe.laisne@gmail.com>
parents:
196
diff
changeset
|
21 |
} |
233
0ff47a9c5da2
Keyboard events on chronology
Chloe Laisne <chloe.laisne@gmail.com>
parents:
227
diff
changeset
|
22 |
if (this.get('filter').get('discourse')) { |
0ff47a9c5da2
Keyboard events on chronology
Chloe Laisne <chloe.laisne@gmail.com>
parents:
227
diff
changeset
|
23 |
documents = documents.filterBy('type', this.get('filter').get('discourse')); |
200
a441c40f9c5e
Fix playlist filtering
Chloe Laisne <chloe.laisne@gmail.com>
parents:
196
diff
changeset
|
24 |
} |
233
0ff47a9c5da2
Keyboard events on chronology
Chloe Laisne <chloe.laisne@gmail.com>
parents:
227
diff
changeset
|
25 |
if (this.get('filter').get('language')) { |
0ff47a9c5da2
Keyboard events on chronology
Chloe Laisne <chloe.laisne@gmail.com>
parents:
227
diff
changeset
|
26 |
documents = documents.filterBy('language', this.get('filter').get('language')); |
200
a441c40f9c5e
Fix playlist filtering
Chloe Laisne <chloe.laisne@gmail.com>
parents:
196
diff
changeset
|
27 |
} |
233
0ff47a9c5da2
Keyboard events on chronology
Chloe Laisne <chloe.laisne@gmail.com>
parents:
227
diff
changeset
|
28 |
if (this.get('filter').get('location')) { |
0ff47a9c5da2
Keyboard events on chronology
Chloe Laisne <chloe.laisne@gmail.com>
parents:
227
diff
changeset
|
29 |
documents = documents.filterBy('spatial', this.get('filter').get('location')); |
200
a441c40f9c5e
Fix playlist filtering
Chloe Laisne <chloe.laisne@gmail.com>
parents:
196
diff
changeset
|
30 |
} |
233
0ff47a9c5da2
Keyboard events on chronology
Chloe Laisne <chloe.laisne@gmail.com>
parents:
227
diff
changeset
|
31 |
if (this.get('filter').get('theme')) { |
0ff47a9c5da2
Keyboard events on chronology
Chloe Laisne <chloe.laisne@gmail.com>
parents:
227
diff
changeset
|
32 |
documents = documents.filterBy('thematique', this.get('filter').get('theme')); |
200
a441c40f9c5e
Fix playlist filtering
Chloe Laisne <chloe.laisne@gmail.com>
parents:
196
diff
changeset
|
33 |
} |
a441c40f9c5e
Fix playlist filtering
Chloe Laisne <chloe.laisne@gmail.com>
parents:
196
diff
changeset
|
34 |
return documents; |
a441c40f9c5e
Fix playlist filtering
Chloe Laisne <chloe.laisne@gmail.com>
parents:
196
diff
changeset
|
35 |
}), |
a441c40f9c5e
Fix playlist filtering
Chloe Laisne <chloe.laisne@gmail.com>
parents:
196
diff
changeset
|
36 |
|
215
82878d132784
Play/Pause/Reset events from player/playlist-components
Chloe Laisne <chloe.laisne@gmail.com>
parents:
212
diff
changeset
|
37 |
documentsLoaded: Ember.observer('documents', function() { |
82878d132784
Play/Pause/Reset events from player/playlist-components
Chloe Laisne <chloe.laisne@gmail.com>
parents:
212
diff
changeset
|
38 |
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
|
39 |
return document.get('id'); |
82878d132784
Play/Pause/Reset events from player/playlist-components
Chloe Laisne <chloe.laisne@gmail.com>
parents:
212
diff
changeset
|
40 |
})); |
240
aa101458cd4e
Player forward and backward
Chloe Laisne <chloe.laisne@gmail.com>
parents:
233
diff
changeset
|
41 |
if(this.get('player').get('items').length && this.get('player').get('playing') === false) { |
216
c174124d1849
/discours and /chrono design changes
Chloe Laisne <chloe.laisne@gmail.com>
parents:
215
diff
changeset
|
42 |
this.get('player').set('item', this.get('player').get('items')[0]); |
c174124d1849
/discours and /chrono design changes
Chloe Laisne <chloe.laisne@gmail.com>
parents:
215
diff
changeset
|
43 |
} |
215
82878d132784
Play/Pause/Reset events from player/playlist-components
Chloe Laisne <chloe.laisne@gmail.com>
parents:
212
diff
changeset
|
44 |
}).on('init'), |
82878d132784
Play/Pause/Reset events from player/playlist-components
Chloe Laisne <chloe.laisne@gmail.com>
parents:
212
diff
changeset
|
45 |
|
82878d132784
Play/Pause/Reset events from player/playlist-components
Chloe Laisne <chloe.laisne@gmail.com>
parents:
212
diff
changeset
|
46 |
init: function() { |
82878d132784
Play/Pause/Reset events from player/playlist-components
Chloe Laisne <chloe.laisne@gmail.com>
parents:
212
diff
changeset
|
47 |
this._super(...arguments); |
82878d132784
Play/Pause/Reset events from player/playlist-components
Chloe Laisne <chloe.laisne@gmail.com>
parents:
212
diff
changeset
|
48 |
}, |
82878d132784
Play/Pause/Reset events from player/playlist-components
Chloe Laisne <chloe.laisne@gmail.com>
parents:
212
diff
changeset
|
49 |
|
209
35cb7200bb0a
Separate playlist and player component with player service as bridge
Chloe Laisne <chloe.laisne@gmail.com>
parents:
201
diff
changeset
|
50 |
didRender: function() { |
35cb7200bb0a
Separate playlist and player component with player service as bridge
Chloe Laisne <chloe.laisne@gmail.com>
parents:
201
diff
changeset
|
51 |
this._super(...arguments); |
35cb7200bb0a
Separate playlist and player component with player service as bridge
Chloe Laisne <chloe.laisne@gmail.com>
parents:
201
diff
changeset
|
52 |
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
|
53 |
}, |
35cb7200bb0a
Separate playlist and player component with player service as bridge
Chloe Laisne <chloe.laisne@gmail.com>
parents:
201
diff
changeset
|
54 |
|
35cb7200bb0a
Separate playlist and player component with player service as bridge
Chloe Laisne <chloe.laisne@gmail.com>
parents:
201
diff
changeset
|
55 |
actions: { |
35cb7200bb0a
Separate playlist and player component with player service as bridge
Chloe Laisne <chloe.laisne@gmail.com>
parents:
201
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); |
ba4fd614582a
Load player with selected row
Chloe Laisne <chloe.laisne@gmail.com>
parents:
251
diff
changeset
|
59 |
}, |
ba4fd614582a
Load player with selected row
Chloe Laisne <chloe.laisne@gmail.com>
parents:
251
diff
changeset
|
60 |
|
249 | 61 |
play: function(id) { |
62 |
this.get('player').play(id); |
|
63 |
}, |
|
64 |
||
257
eba9edbd8f46
Add title to annotation
Chloe Laisne <chloe.laisne@gmail.com>
parents:
254
diff
changeset
|
65 |
pause: function() { |
249 | 66 |
this.get('player').pause(); |
227
5c9250f55f4b
Basic notice logic from query parameters
Chloe Laisne <chloe.laisne@gmail.com>
parents:
216
diff
changeset
|
67 |
}, |
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 |
displayNotice: function(id) { |
5c9250f55f4b
Basic notice logic from query parameters
Chloe Laisne <chloe.laisne@gmail.com>
parents:
216
diff
changeset
|
70 |
if(this.get('player').get('item') === id) { |
254 | 71 |
this.get('player').displayMetadata('notice'); |
227
5c9250f55f4b
Basic notice logic from query parameters
Chloe Laisne <chloe.laisne@gmail.com>
parents:
216
diff
changeset
|
72 |
} else { |
5c9250f55f4b
Basic notice logic from query parameters
Chloe Laisne <chloe.laisne@gmail.com>
parents:
216
diff
changeset
|
73 |
if(this.get('notice') !== id) { |
5c9250f55f4b
Basic notice logic from query parameters
Chloe Laisne <chloe.laisne@gmail.com>
parents:
216
diff
changeset
|
74 |
this.set('notice', id); |
5c9250f55f4b
Basic notice logic from query parameters
Chloe Laisne <chloe.laisne@gmail.com>
parents:
216
diff
changeset
|
75 |
} else { |
5c9250f55f4b
Basic notice logic from query parameters
Chloe Laisne <chloe.laisne@gmail.com>
parents:
216
diff
changeset
|
76 |
this.set('notice', null); |
5c9250f55f4b
Basic notice logic from query parameters
Chloe Laisne <chloe.laisne@gmail.com>
parents:
216
diff
changeset
|
77 |
} |
5c9250f55f4b
Basic notice logic from query parameters
Chloe Laisne <chloe.laisne@gmail.com>
parents:
216
diff
changeset
|
78 |
} |
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 | 83 |
|
84 |
}); |