diff -r 4f6118afabee -r 4fbe94af93e8 cms/app-client/app/controllers/application.js --- a/cms/app-client/app/controllers/application.js Thu Nov 03 11:14:41 2016 +0100 +++ b/cms/app-client/app/controllers/application.js Fri Nov 04 19:03:25 2016 +0100 @@ -1,99 +1,32 @@ import Ember from 'ember'; +import _ from 'lodash/lodash'; export default Ember.Controller.extend({ player: Ember.inject.service(), + filter: Ember.inject.service(), + playerVideoscreenObserver: Ember.observer('player.videoscreen', function() { Ember.$('body').toggleClass('videoscreen', this.get('player').get('videoscreen')); }), - queryParams: ['location', 'date', 'notice', { - language: 'language', - discourse: 'discourse', - theme: 'theme' - }], - - date: [], - discourse: null, - language: null, - location: null, - theme: null, - - filter: Ember.inject.service(), - setFilter: Ember.observer('discourse', 'language', 'location', 'theme', function(sender, key) { - if(this.get('filter').get(key) !== this.get(key)) { - this.get('filter').set(key, this.get(key)); - } - }), - filterObserver: Ember.observer('filter.discourse', 'filter.language', 'filter.location', 'filter.theme', function(sender, key) { - key = key.split('.').pop(); - this.set(key, this.get('filter').get(key)); + // queryParams: ['location', 'date', 'notice', 'language', 'discourse', 'theme'], + // queryParams: Ember.computed('filter.queryParams', 'notice', function() { + // const queryParamsList = this.get('filter').get('queryParams'); + // return _.merge(queryParamsList, {'notice' : this.get('notice')}); + // }), + queryParams : Ember.computed('filter.queryParams', function() { + var res = _.clone(this.get('filter').get('queryParams')); + res.push('notice'); + return res; }), - setDateFilter: Ember.observer('date', function(sender, key) { - var intervals = []; - this.get(key).forEach(function(interval) { - interval = interval.split('-'); - if(interval.length > 1) { - var array = []; - for(var i = interval[0]; i <= interval[1]; i++) { - array.push(parseInt(i)); - } - interval = array; - } else { - interval = parseInt(interval); - } - intervals = intervals.concat(interval); - }); - this.get('filter').set(key, intervals); - }), - dateFilterObserver: Ember.observer('filter.date', function(sender, key) { - key = key.split('.').pop(); - var intervals = []; - this.get('filter').get('date').forEach(function(date) { - var isInterval = false; - intervals.forEach(function(interval) { - if(interval.length && (interval.includes(date + 1) || interval.includes(date - 1))) { - interval.push(date); - isInterval = true; - } - }); - if (!isInterval) { - intervals.push([date]); - } - }); - intervals.forEach(function(interval, index) { - if(interval.length > 1) { - intervals[index] = interval.shift() + '-' + interval.pop(); - } else { - intervals[index] = interval.toString(); - } - }); - if(!this.arraysEqual(this.get('date').toArray(), intervals)) { - this.set('date', intervals); - } - }), - - arraysEqual: function(a, b) { - if (a === b) { - return true; - } - if (a == null || b == null) { - return false; - } - if (a.length !== b.length) { - return false; - } - for(var i = 0; i < a.length; ++i) { - if(a[i] !== b[i]) { - return false; - } - } - return true; - }, - - + location: Ember.computed.alias('filter.location'), + date: Ember.computed.alias('filter.date'), + language: Ember.computed.alias('filter.language'), + discourse: Ember.computed.alias('filter.discourse'), + theme: Ember.computed.alias('filter.theme'), itemObserver: Ember.observer('player.item', function() { var self = this;