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