cms/app-client/app/controllers/application.js
changeset 203 2ee21302dc47
parent 202 0446e07981db
child 204 dd969e178944
--- 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'));