Commit 538151d7797075c090dd56ea9a795cfc055c7e82
1 parent
4dfe41a7
Exists in
master
and in
8 other branches
Improve search with update
Showing
1 changed file
with
42 additions
and
10 deletions
Show diff stats
src/app/components/programas/programas.directive.js
@@ -11,7 +11,7 @@ | @@ -11,7 +11,7 @@ | ||
11 | function programaList() { | 11 | function programaList() { |
12 | 12 | ||
13 | /** @ngInject */ | 13 | /** @ngInject */ |
14 | - function ProgramaListController($scope, $log) { | 14 | + function ProgramaListController($scope, $location, $log) { |
15 | $log.debug('ProgramaListController'); | 15 | $log.debug('ProgramaListController'); |
16 | 16 | ||
17 | // alias | 17 | // alias |
@@ -19,6 +19,7 @@ | @@ -19,6 +19,7 @@ | ||
19 | 19 | ||
20 | // dependencies | 20 | // dependencies |
21 | vm.$scope = $scope; | 21 | vm.$scope = $scope; |
22 | + vm.$location = $location; | ||
22 | vm.$log = $log; | 23 | vm.$log = $log; |
23 | 24 | ||
24 | // initialization | 25 | // initialization |
@@ -28,15 +29,6 @@ | @@ -28,15 +29,6 @@ | ||
28 | ProgramaListController.prototype.init = function () { | 29 | ProgramaListController.prototype.init = function () { |
29 | var vm = this; | 30 | var vm = this; |
30 | 31 | ||
31 | - vm.query = null; | ||
32 | - vm.limitTo = 4; | ||
33 | - vm.categoryFilter = null; | ||
34 | - vm.orderCriteries = [ | ||
35 | - { label: 'Título', name: 'title' }, | ||
36 | - { label: 'Tema', name: 'category' }, | ||
37 | - { label: 'Mais participações', name: 'more_participants' } | ||
38 | - ]; | ||
39 | - | ||
40 | if(!vm.article){ | 32 | if(!vm.article){ |
41 | vm.$log.warn('no article to display. Tip: use a ng-if before use this directive'); | 33 | vm.$log.warn('no article to display. Tip: use a ng-if before use this directive'); |
42 | return; | 34 | return; |
@@ -45,6 +37,34 @@ | @@ -45,6 +37,34 @@ | ||
45 | vm.categories = vm.article.categories; | 37 | vm.categories = vm.article.categories; |
46 | vm.programs = vm.article.children; | 38 | vm.programs = vm.article.children; |
47 | vm.filtredProgramList = []; | 39 | vm.filtredProgramList = []; |
40 | + | ||
41 | + vm.search = vm.$location.search(); | ||
42 | + vm.query = vm.search ? vm.search.filtro : null; | ||
43 | + vm.limitTo = vm.search ? vm.search.limite : 4; | ||
44 | + vm.categoryFilter = vm.search ? vm.filterByCategorySlug(vm.search.tema) : null; | ||
45 | + vm.categoryOptions = null; | ||
46 | + vm.orderCriteries = [ | ||
47 | + { label: 'Título', name: 'title' }, | ||
48 | + { label: 'Tema', name: 'category' }, | ||
49 | + { label: 'Mais participações', name: 'more_participants' } | ||
50 | + ]; | ||
51 | + | ||
52 | + // update window location params | ||
53 | + vm.$scope.$watch('vm.query', function(newValue, oldValue){ | ||
54 | + vm.search.filtro = newValue; | ||
55 | + vm.$location.search(vm.search); | ||
56 | + }); | ||
57 | + | ||
58 | + vm.$scope.$watch('vm.limitTo', function(newValue, oldValue){ | ||
59 | + vm.search.limite = newValue; | ||
60 | + vm.$location.search(vm.search); | ||
61 | + }); | ||
62 | + | ||
63 | + vm.$scope.$watch('vm.categoryFilter', function(newValue, oldValue){ | ||
64 | + vm.search.tema = newValue ? newValue.slug : ''; | ||
65 | + vm.$location.search(vm.search); | ||
66 | + }); | ||
67 | + | ||
48 | }; | 68 | }; |
49 | 69 | ||
50 | ProgramaListController.prototype.getIconClasses = function (category) { | 70 | ProgramaListController.prototype.getIconClasses = function (category) { |
@@ -54,6 +74,18 @@ | @@ -54,6 +74,18 @@ | ||
54 | return 'glyphicon glyphicon-exclamation-sign'; | 74 | return 'glyphicon glyphicon-exclamation-sign'; |
55 | }; | 75 | }; |
56 | 76 | ||
77 | + ProgramaListController.prototype.filterByCategorySlug = function (categorySlug) { | ||
78 | + var vm = this; | ||
79 | + var result = null; | ||
80 | + | ||
81 | + angular.forEach(vm.categories, function (value, key){ | ||
82 | + if(value.slug === categorySlug){ | ||
83 | + result = value; | ||
84 | + } | ||
85 | + }) | ||
86 | + return result; | ||
87 | + } | ||
88 | + | ||
57 | ProgramaListController.prototype.filterByCategory = function (category) { | 89 | ProgramaListController.prototype.filterByCategory = function (category) { |
58 | var vm = this; | 90 | var vm = this; |
59 | 91 |