Commit 0bb36fc7b59860b7f3a71d10cff37890d07bb82d

Authored by Leonardo Merlin
1 parent b1f65488

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 })();
... ...