--- 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'));