cms/app-client/app/controllers/application.js
changeset 394 48458e099b05
parent 392 4fbe94af93e8
child 401 9ff56cc0c656
equal deleted inserted replaced
393:5ef3bfef0bff 394:48458e099b05
     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     }