diff --git a/src/app/pages/propostas/propostas.controller.js b/src/app/pages/propostas/propostas.controller.js index 265c26f..df01a9f 100644 --- a/src/app/pages/propostas/propostas.controller.js +++ b/src/app/pages/propostas/propostas.controller.js @@ -95,10 +95,88 @@ }); }; + PropostasPageController.prototype.filter = function() { + var vm = this; + + if (vm.search && vm.search.tema) { + var slug = vm.search.tema; + vm.$log.debug('filter by theme', slug); + + vm.DialogaService.getThemeBySlug(slug, function(theme){ + vm.selectedTheme = theme; + vm.$log.debug('getThemeBySlug.slug', slug); + vm.$log.debug('getThemeBySlug.selectedTheme', theme); + }, function(error){ + vm.$log.error('Error when try to "getThemeBySlug"', error); + }); + } + }; + + PropostasPageController.prototype.showAllPrograms = function($event) { + var vm = this; + $event.stopPropagation(); + + vm.resetFilterValues(); + + vm._showAllFlag = true; + + vm.filtredPrograms = vm.getFiltredPrograms(); + }; + + PropostasPageController.prototype.resetFilterValues = function() { + var vm = this; + + vm.query = null; + vm.selectedTheme = null; + }; + PropostasPageController.prototype.getFiltredProposals = function() { var vm = this; - return vm.proposals; + if(!vm.proposals){ + vm.$log.warn('No proposals loaded yet. Abort.'); + return null; + } + + var input = vm.proposals; + var output = input; + var query = vm.query; + var selectedTheme = vm.selectedTheme; + + var filter = vm.$filter('filter'); + + if (selectedTheme) { + output = _filterByCategory(output, selectedTheme); + } + + if (query) { + output = filter(output, query, false); + } + + // if(!query && !selectedTheme && vm._showAllFlag){ + // output = _balanceByCategory(output); + // } + + return output; }; + function _filterByCategory (input, category) { + input = input || []; + + if (!category) { + // no filter + return input; + } + + var out = []; + for (var i = 0; i < input.length; i++) { + var proposal = input[i]; + if (proposal.parent.categories[0].slug === category.slug) { + out.push(proposal); + } + } + + return out; + } + })(); -- libgit2 0.21.2