3 |
3 |
4 export default Ember.Controller.extend({ |
4 export default Ember.Controller.extend({ |
5 |
5 |
6 player: Ember.inject.service(), |
6 player: Ember.inject.service(), |
7 filter: Ember.inject.service(), |
7 filter: Ember.inject.service(), |
|
8 constants: Ember.inject.service(), |
8 |
9 |
|
10 page: 1, |
|
11 limit: Ember.computed(function() { |
|
12 return this.get('constants').DOCUMENTS_PAGINATION_PERPAGE; |
|
13 }), |
9 |
14 |
10 playerVideoscreenObserver: Ember.observer('player.videoscreen', function() { |
15 playerVideoscreenObserver: Ember.observer('player.videoscreen', function() { |
11 Ember.$('body').toggleClass('videoscreen', this.get('player').get('videoscreen')); |
16 Ember.$('body').toggleClass('videoscreen', this.get('player').get('videoscreen')); |
12 }), |
17 }), |
13 |
18 |
14 // queryParams: ['location', 'date', 'notice', 'language', 'discourse', 'theme'], |
|
15 // queryParams: Ember.computed('filter.queryParams', 'notice', function() { |
|
16 // const queryParamsList = this.get('filter').get('queryParams'); |
|
17 // return _.merge(queryParamsList, {'notice' : this.get('notice')}); |
|
18 // }), |
|
19 queryParams : Ember.computed('filter.queryParams', function() { |
19 queryParams : Ember.computed('filter.queryParams', function() { |
20 var res = _.clone(this.get('filter').get('queryParams')); |
20 var res = _.clone(this.get('filter').get('queryParams')); |
21 res.push('notice'); |
21 res.push('notice'); |
|
22 res.push('page'); |
22 return res; |
23 return res; |
23 }), |
24 }), |
24 |
25 |
25 location: Ember.computed.alias('filter.location'), |
26 // this has to be done because queryParameters can not be computed properties... |
26 date: Ember.computed.alias('filter.date'), |
27 // Of course, we rather had computed properties. |
27 language: Ember.computed.alias('filter.language'), |
28 // c.f. : https://github.com/emberjs/ember.js/issues/11592 |
28 discourse: Ember.computed.alias('filter.discourse'), |
29 date: null, |
29 theme: Ember.computed.alias('filter.theme'), |
30 discourse: null, |
|
31 language: null, |
|
32 location: null, |
|
33 theme: null, |
|
34 |
|
35 languageObserver: Ember.observer('language', 'date', 'date.[]', 'discourse', 'discourse.[]', 'location', 'theme', 'theme.[]', function() { |
|
36 this.get('filter').setProperties(this.getProperties('language', 'date', 'discourse', 'theme', 'location')); |
|
37 }), |
|
38 filterObserver: Ember.observer('filter', 'filter.language', 'filter.date', 'filter.date.[]', 'filter.discourse', 'filter.discourse.[]', 'filter.location', 'filter.theme', 'filter.theme.[]', function() { |
|
39 this.set('language', this.get('filter').get('language')); |
|
40 this.setProperties(this.get('filter').getProperties('language', 'date', 'discourse', 'theme', 'location')); |
|
41 }), |
30 |
42 |
31 itemObserver: Ember.observer('player.item', function() { |
43 itemObserver: Ember.observer('player.item', function() { |
32 var self = this; |
44 var self = this; |
33 this.store.findRecord('document', this.get('player').get('item'), { reload: true }).then(function(model){ |
45 this.store.findRecord('document', this.get('player').get('item'), { reload: true }).then(function(model){ |
34 self.get('player').set('model', model); |
46 self.get('player').set('model', model); |
60 }), |
72 }), |
61 |
73 |
62 init: function() { |
74 init: function() { |
63 this._super(...arguments); |
75 this._super(...arguments); |
64 this.get('player'); |
76 this.get('player'); |
|
77 this.get('filter'); |
65 }, |
78 }, |
66 |
79 |
67 actions: { |
80 actions: { |
68 |
81 |
69 changeDocument: function(docDirection){ |
82 setPageQueryparams: function(type) { |
70 var direction = (docDirection === "next") ? 1 : -1; |
83 var page = this.get('page'); |
71 var currentObject = this.get("filteredDocuments").findBy('id', this.get("currentItem").get('id')); |
84 if(type === 'previous') { |
72 if ( currentObject !== 'undefined'){ |
85 page = page - 1; |
73 var index = this.get("filteredDocuments").indexOf(currentObject); |
86 } else if(type === 'next') { |
74 if ( typeof(this.get("filteredDocuments").objectAt(index+direction)) !== 'undefined'){ |
87 page = page + 1; |
75 return this.set('currentId', this.get("filteredDocuments").objectAt(index+direction).id); |
|
76 } |
|
77 } |
88 } |
78 return this.set('currentId', this.get('filteredDocuments').get('firstObject').id); |
89 this.propertyWillChange('page'); |
|
90 this.set('page', page); |
|
91 this.propertyDidChange('page'); |
79 }, |
92 }, |
|
93 |
80 play: function(item){ |
94 play: function(item){ |
81 this.set("currentId", item.id); |
95 this.set("currentId", item.id); |
82 } |
96 } |
83 |
97 |
84 } |
98 } |