cms/app-client/app/controllers/application.js
changeset 203 2ee21302dc47
parent 202 0446e07981db
child 204 dd969e178944
equal deleted inserted replaced
202:0446e07981db 203:2ee21302dc47
    13     language: null,
    13     language: null,
    14     location: null,
    14     location: null,
    15     theme: null,
    15     theme: null,
    16 
    16 
    17     filter: Ember.inject.service(),
    17     filter: Ember.inject.service(),
    18     setFilter: Ember.observer('date', 'discourse', 'language', 'location', 'theme', function(sender, key) {
    18     setFilter: Ember.observer('discourse', 'language', 'location', 'theme', function(sender, key) {
       
    19         console.log('propertyDidChange', this.get('queryParams'), this.get('date'), this.get('filter.date'));
    19         this.get('filter').set(key, this.get(key));
    20         this.get('filter').set(key, this.get(key));
    20     }),
    21     }),
    21     filterObserver: Ember.observer('filter.date', 'filter.discourse', 'filter.language', 'filter.location', 'filter.theme', function(sender, key) {
    22     filterObserver: Ember.observer('filter.discourse', 'filter.language', 'filter.location', 'filter.theme', function(sender, key) {
    22         key = key.split('.').pop();
    23         key = key.split('.').pop();
    23         this.set(key, this.get('filter').get(key));
    24         this.set(key, this.get('filter').get(key));
    24     }),
    25     }),
    25 
    26 
    26     detail: null,
    27     setDateFilter: Ember.observer('date', function(sender, key) {
    27 
       
    28     dateIntervals: Ember.computed('date', function() {
       
    29         var intervals = [];
    28         var intervals = [];
    30         this.get('date').forEach(function(date) {
    29         this.get(key).forEach(function(interval) {
    31             var intervalDate = false;
    30             var interval = interval.split('-');
       
    31             if(interval.length > 1) {
       
    32                 var array = [];
       
    33                 for(var i = interval[0]; i <= interval[1]; i++) {
       
    34                     array.push(parseInt(i));
       
    35                 }
       
    36                 interval = array;
       
    37             } else {
       
    38                 interval = parseInt(interval);
       
    39             }
       
    40             intervals = intervals.concat(interval);
       
    41         });
       
    42         this.get('filter').set(key, intervals);
       
    43     }),
       
    44     dateFilterObserver: Ember.observer('filter.date', function(sender, key) {
       
    45         key = key.split('.').pop();
       
    46         var intervals = [];
       
    47         this.get('filter').get(key).forEach(function(date) {
       
    48             var isInterval = false;
    32             intervals.forEach(function(interval) {
    49             intervals.forEach(function(interval) {
    33                 if(interval.length && (interval.includes(date + 1) || interval.includes(date - 1))) {
    50                 if(interval.length && (interval.includes(date + 1) || interval.includes(date - 1))) {
    34                     interval.push(date);
    51                     interval.push(date);
    35                     intervalDate = true;
    52                     isInterval = true;
    36                 }
    53                 }
    37             });
    54             });
    38             if (!intervalDate) {
    55             if (!isInterval) {
    39                 intervals.push([date]);
    56                 intervals.push([date]);
    40             }
    57             }
    41         });
    58         });
    42         return intervals;
    59         intervals.forEach(function(interval, index) {
       
    60             if(interval.length > 1) {
       
    61                intervals[index] =  interval.shift() + '-' + interval.pop()
       
    62             } else {
       
    63                intervals[index] =  interval.toString();
       
    64             }
       
    65         });
       
    66         if(!this.arraysEqual(this.get(key).toArray(), intervals)) {
       
    67             this.set(key, intervals);    
       
    68         }
    43     }),
    69     }),
       
    70 
       
    71     arraysEqual: function(a, b) {
       
    72         if (a === b) {
       
    73             return true;
       
    74         }
       
    75         if (a == null || b == null) {
       
    76             return false;
       
    77         }
       
    78         if (a.length != b.length) {
       
    79             return false;
       
    80         }
       
    81         for(var i = 0; i < a.length; ++i) {
       
    82             if(a[i] !== b[i]) {
       
    83                 return false;
       
    84             }
       
    85         }
       
    86         return true;
       
    87     },
       
    88 
       
    89     detail: null,
    44 
    90 
    45     currentId: null,
    91     currentId: null,
    46     currentItem: Ember.computed('currentId', function() {
    92     currentItem: Ember.computed('currentId', function() {
    47         Ember.$(".result-item").toggleClass("playing", false);
    93         Ember.$(".result-item").toggleClass("playing", false);
    48         if (this.get('currentId') === null){
    94         if (this.get('currentId') === null){
    55     modalItem: Ember.computed('detail', function() {
   101     modalItem: Ember.computed('detail', function() {
    56         return this.store.findRecord('document', this.get('detail'));
   102         return this.store.findRecord('document', this.get('detail'));
    57     }),
   103     }),
    58 
   104 
    59     actions: {
   105     actions: {
    60 
       
    61         deleteTag: function(key, value){
       
    62             var newValue = null;
       
    63             if (key === 'date'){
       
    64                 newValue = [];
       
    65                 Ember.$.each(this.get('date'), function(index, date){
       
    66                     if(!value.includes(date)) {
       
    67                         newValue.push(date);
       
    68                     }
       
    69                 });
       
    70             }
       
    71             this.set(key, newValue);
       
    72         },
       
    73 
       
    74         /*deleteTag: function(query, item) {
       
    75             var newParams = null;
       
    76             if (query === 'date'){
       
    77                 newParams = [];
       
    78                 Ember.$.each(this.get('date'), function(index, elt){
       
    79                     if (elt !== item){
       
    80                         newParams.push(elt);
       
    81                     }
       
    82                 });
       
    83             }
       
    84             this.set(query, newParams);
       
    85         }*/
       
    86 
   106 
    87         changeDocument: function(docDirection){
   107         changeDocument: function(docDirection){
    88             var direction = (docDirection === "next") ? 1 : -1;
   108             var direction = (docDirection === "next") ? 1 : -1;
    89             var currentObject = this.get("filteredDocuments").findBy('id', this.get("currentItem").get('id'));
   109             var currentObject = this.get("filteredDocuments").findBy('id', this.get("currentItem").get('id'));
    90             if ( currentObject !== 'undefined'){
   110             if ( currentObject !== 'undefined'){