Commit 0bb36fc7b59860b7f3a71d10cff37890d07bb82d
1 parent
b1f65488
Exists in
master
and in
8 other branches
Add filter by category to Proposals
Showing
1 changed file
with
79 additions
and
1 deletions
Show diff stats
src/app/pages/propostas/propostas.controller.js
... | ... | @@ -95,10 +95,88 @@ |
95 | 95 | }); |
96 | 96 | }; |
97 | 97 | |
98 | + PropostasPageController.prototype.filter = function() { | |
99 | + var vm = this; | |
100 | + | |
101 | + if (vm.search && vm.search.tema) { | |
102 | + var slug = vm.search.tema; | |
103 | + vm.$log.debug('filter by theme', slug); | |
104 | + | |
105 | + vm.DialogaService.getThemeBySlug(slug, function(theme){ | |
106 | + vm.selectedTheme = theme; | |
107 | + vm.$log.debug('getThemeBySlug.slug', slug); | |
108 | + vm.$log.debug('getThemeBySlug.selectedTheme', theme); | |
109 | + }, function(error){ | |
110 | + vm.$log.error('Error when try to "getThemeBySlug"', error); | |
111 | + }); | |
112 | + } | |
113 | + }; | |
114 | + | |
115 | + PropostasPageController.prototype.showAllPrograms = function($event) { | |
116 | + var vm = this; | |
117 | + $event.stopPropagation(); | |
118 | + | |
119 | + vm.resetFilterValues(); | |
120 | + | |
121 | + vm._showAllFlag = true; | |
122 | + | |
123 | + vm.filtredPrograms = vm.getFiltredPrograms(); | |
124 | + }; | |
125 | + | |
126 | + PropostasPageController.prototype.resetFilterValues = function() { | |
127 | + var vm = this; | |
128 | + | |
129 | + vm.query = null; | |
130 | + vm.selectedTheme = null; | |
131 | + }; | |
132 | + | |
98 | 133 | PropostasPageController.prototype.getFiltredProposals = function() { |
99 | 134 | var vm = this; |
100 | 135 | |
101 | - return vm.proposals; | |
136 | + if(!vm.proposals){ | |
137 | + vm.$log.warn('No proposals loaded yet. Abort.'); | |
138 | + return null; | |
139 | + } | |
140 | + | |
141 | + var input = vm.proposals; | |
142 | + var output = input; | |
143 | + var query = vm.query; | |
144 | + var selectedTheme = vm.selectedTheme; | |
145 | + | |
146 | + var filter = vm.$filter('filter'); | |
147 | + | |
148 | + if (selectedTheme) { | |
149 | + output = _filterByCategory(output, selectedTheme); | |
150 | + } | |
151 | + | |
152 | + if (query) { | |
153 | + output = filter(output, query, false); | |
154 | + } | |
155 | + | |
156 | + // if(!query && !selectedTheme && vm._showAllFlag){ | |
157 | + // output = _balanceByCategory(output); | |
158 | + // } | |
159 | + | |
160 | + return output; | |
102 | 161 | }; |
103 | 162 | |
163 | + function _filterByCategory (input, category) { | |
164 | + input = input || []; | |
165 | + | |
166 | + if (!category) { | |
167 | + // no filter | |
168 | + return input; | |
169 | + } | |
170 | + | |
171 | + var out = []; | |
172 | + for (var i = 0; i < input.length; i++) { | |
173 | + var proposal = input[i]; | |
174 | + if (proposal.parent.categories[0].slug === category.slug) { | |
175 | + out.push(proposal); | |
176 | + } | |
177 | + } | |
178 | + | |
179 | + return out; | |
180 | + } | |
181 | + | |
104 | 182 | })(); | ... | ... |