diff -r 0446e07981db -r 2ee21302dc47 cms/app-client/app/controllers/application.js --- a/cms/app-client/app/controllers/application.js Thu Jun 23 23:21:02 2016 +0200 +++ b/cms/app-client/app/controllers/application.js Fri Jun 24 02:00:50 2016 +0200 @@ -15,33 +15,79 @@ theme: null, filter: Ember.inject.service(), - setFilter: Ember.observer('date', 'discourse', 'language', 'location', 'theme', function(sender, key) { + setFilter: Ember.observer('discourse', 'language', 'location', 'theme', function(sender, key) { + console.log('propertyDidChange', this.get('queryParams'), this.get('date'), this.get('filter.date')); this.get('filter').set(key, this.get(key)); }), - filterObserver: Ember.observer('filter.date', 'filter.discourse', 'filter.language', 'filter.location', 'filter.theme', function(sender, 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)); }), - detail: null, - - dateIntervals: Ember.computed('date', function() { + setDateFilter: Ember.observer('date', function(sender, key) { var intervals = []; - this.get('date').forEach(function(date) { - var intervalDate = false; + this.get(key).forEach(function(interval) { + var 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(key).forEach(function(date) { + var isInterval = false; intervals.forEach(function(interval) { if(interval.length && (interval.includes(date + 1) || interval.includes(date - 1))) { interval.push(date); - intervalDate = true; + isInterval = true; } }); - if (!intervalDate) { + if (!isInterval) { intervals.push([date]); } }); - return intervals; + 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(key).toArray(), intervals)) { + this.set(key, 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; + }, + + detail: null, + currentId: null, currentItem: Ember.computed('currentId', function() { Ember.$(".result-item").toggleClass("playing", false); @@ -58,32 +104,6 @@ actions: { - deleteTag: function(key, value){ - var newValue = null; - if (key === 'date'){ - newValue = []; - Ember.$.each(this.get('date'), function(index, date){ - if(!value.includes(date)) { - newValue.push(date); - } - }); - } - this.set(key, newValue); - }, - - /*deleteTag: function(query, item) { - var newParams = null; - if (query === 'date'){ - newParams = []; - Ember.$.each(this.get('date'), function(index, elt){ - if (elt !== item){ - newParams.push(elt); - } - }); - } - this.set(query, newParams); - }*/ - changeDocument: function(docDirection){ var direction = (docDirection === "next") ? 1 : -1; var currentObject = this.get("filteredDocuments").findBy('id', this.get("currentItem").get('id'));