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,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 | PropostasPageController.prototype.getFiltredProposals = function() { | 133 | PropostasPageController.prototype.getFiltredProposals = function() { |
99 | var vm = this; | 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 | })(); |