Commit 9ddbbe34c854b042f841da61b8b6361f92fa6608

Authored by Leonardo Merlin
1 parent e3a39a8e

fix page 'propostas' - filter params and scroll bugs

src/app/pages/propostas/propostas.controller.js
... ... @@ -18,7 +18,7 @@
18 18  
19 19 vm.init();
20 20 vm.loadData();
21   - // vm.attachListeners(); // attach listeners after load data (SYNC)
  21 + vm.attachListeners();
22 22 vm.$rootScope.focusMainContent();
23 23  
24 24 $log.debug('PropostasPageController');
... ... @@ -31,11 +31,22 @@
31 31 vm.per_page = 10;
32 32 vm.themes = null;
33 33 vm.selectedTheme = null;
34   - vm.filtredPrograms = null;
35 34 vm.filtredProposals = null;
36 35 vm.query = null;
37 36 vm.search = vm.$location.search();
38 37  
  38 + if (vm.search.tema) {
  39 + vm._filtredByThemeSlug = vm.search.tema;
  40 + }
  41 +
  42 + if (vm.search.filtro) {
  43 + vm._filtredByQuery = vm.search.filtro;
  44 + }
  45 +
  46 + if (vm.search.tema || vm.search.filtro) {
  47 + vm.loadingFilter = true;
  48 + }
  49 +
39 50 vm.loading = null;
40 51 vm.error = null;
41 52 };
... ... @@ -61,7 +72,9 @@
61 72 // vm.loadProposals(function() {
62 73 // vm.attachListeners();
63 74 // });
64   - vm.attachListeners();
  75 + // vm.attachListeners();
  76 +
  77 + vm.filter();
65 78 }, function(error) {
66 79 vm.error = error;
67 80 vm.$log.error(error);
... ... @@ -70,30 +83,6 @@
70 83 });
71 84 };
72 85  
73   - // PropostasPageController.prototype.loadProposals = function(cb) {
74   - // var vm = this;
75   -
76   - // // load Proposals
77   - // vm.loadingProposals = true;
78   - // vm.DialogaService.searchProposals({
79   - // page: vm.page,
80   - // per_page: vm.per_page
81   - // }, function(data) {
82   - // vm.filtredProposals = data.articles;
83   - // vm.total_proposals = parseInt(data._obj.headers('total'));
84   -
85   - // vm.loadingProposals = false;
86   -
87   - // if (cb) {
88   - // cb();
89   - // }
90   - // }, function(error) {
91   - // vm.error = error;
92   - // vm.$log.error(error);
93   - // vm.loadingProposals = false;
94   - // });
95   - // };
96   -
97 86 PropostasPageController.prototype.attachListeners = function() {
98 87 var vm = this;
99 88  
... ... @@ -104,13 +93,19 @@
104 93 vm.$scope.$watch('pagePropostas.selectedTheme', function(newValue/*, oldValue*/) {
105 94 vm.search.tema = newValue ? newValue.slug : null;
106 95 vm.$location.search('tema', vm.search.tema);
107   - vm.filterProposals();
  96 +
  97 + if (!vm.loadingFilter) {
  98 + vm.filterProposals();
  99 + }
108 100 });
109 101  
110 102 vm.$scope.$watch('pagePropostas.query', function(newValue/*, oldValue*/) {
111 103 vm.search.filtro = newValue ? newValue : null;
112 104 vm.$location.search('filtro', vm.search.filtro);
113   - vm.filterProposals();
  105 +
  106 + if (!vm.loadingFilter) {
  107 + vm.filterProposals();
  108 + }
114 109 });
115 110 };
116 111  
... ... @@ -128,6 +123,35 @@
128 123 vm.filterProposals(pageIndex);
129 124 };
130 125  
  126 + PropostasPageController.prototype.filter = function() {
  127 + var vm = this;
  128 +
  129 + if (vm.loadingThemes || vm.loadingProposals) {
  130 + vm.$log.info('No proposals or themes loaded yet. Abort.');
  131 + return;
  132 + }
  133 +
  134 + if (vm._filtredByThemeSlug) {
  135 + var slug = vm._filtredByThemeSlug;
  136 +
  137 + vm.DialogaService.getThemeBySlug(slug, function(theme) {
  138 + vm.selectedTheme = theme;
  139 + }, function(error) {
  140 + vm.$log.error('Error when try to "getThemeBySlug"', error);
  141 + });
  142 + }
  143 +
  144 + if (vm._filtredByQuery) {
  145 + vm.query = vm._filtredByQuery;
  146 + }
  147 +
  148 + if (vm._filtredByThemeSlug || vm._filtredByQuery) {
  149 + vm.filterProposals();
  150 + vm.loadingFilter = false;
  151 + }
  152 +
  153 + };
  154 +
131 155 PropostasPageController.prototype.filterProposals = function(_page, _per_page) {
132 156 var vm = this;
133 157  
... ... @@ -165,7 +189,7 @@
165 189 PropostasPageController.prototype.submitSearch = function() {
166 190 var vm = this;
167 191  
168   - vm.loadingFilter = true;
  192 + // vm.loadingFilter = true;
169 193  
170 194 // scroll to result grid
171 195 var $searchResult = angular.element('#search-result');
... ...
src/app/pages/propostas/propostas.html
1 1 <div class="container">
2   - <div class="row">
3   - <div class="col-sm-12">
4   - <div ncy-breadcrumb></div>
  2 + <div class="row">
  3 + <div class="col-sm-12">
  4 + <div ncy-breadcrumb></div>
  5 + </div>
5 6 </div>
6   - </div>
7 7 </div>
8   -
9 8 <div class="page--propostas" role="main">
10   - <section class="section-info" ng-if="pagePropostas.loading || pagePropostas.error">
11   - <div class="container">
12   - <div class="row">
13   - <div class="col-md-12">
14   - <div ng-if="pagePropostas.loading && !pagePropostas.error">
15   - <div class="alert alert-info" role="alert">Carregando conteúdo...</div>
16   - </div>
17   -
18   - <div ng-if="pagePropostas.error">
19   - <div class="alert alert-danger" role="alert">
20   - Erro ao carregar o conteúdo principal.
  9 + <section class="section-info" ng-if="pagePropostas.loading || pagePropostas.error">
  10 + <div class="container">
  11 + <div class="row">
  12 + <div class="col-md-12">
  13 + <div ng-if="pagePropostas.loading && !pagePropostas.error">
  14 + <div class="alert alert-info" role="alert">Carregando conteúdo...</div>
  15 + </div>
  16 + <div ng-if="pagePropostas.error">
  17 + <div class="alert alert-danger" role="alert">
  18 + Erro ao carregar o conteúdo principal.
  19 + </div>
  20 + </div>
  21 + </div>
21 22 </div>
22   - </div>
23 23 </div>
24   - </div>
25   - </div>
26   - </section>
27   -
28   - <section class="section--header" ng-if="pagePropostas.filtredProposals || pagePropostas.themes">
29   - <div class="container">
30   - <div class="row">
31   - <div class="col-sm-12">
32   - <h1>Propostas</h1>
33   - </div>
34   - </div>
35   - </div>
36   - </section>
37   -
38   - <section class="section--articles section-gray section-space-up" ng-if="pagePropostas.filtredProposals || pagePropostas.themes">
39   - <div class="container">
40   - <div id="lista-de-propostas" class="row">
41   - <div class="col-sm-4 col-md-3">
42   - <div class="row visible-xs">
43   - <div class="col-xs-12">
44   - <div class="input-group input-group-lg input-group-search">
45   - <label for="articleQueryFilter" class="control-label sr-only">Buscar propostas:</label>
46   - <input id="articleQueryFilter" type="search" class="form-control input-search" ng-model="pagePropostas.query" placeholder="Buscar propostas" aria-label="Buscar propostas">
47   - <span class="input-group-btn">
48   - <button type="button" class="btn btn-default" ng-click="pagePropostas.submitSearch()">
49   - <span class="icon-circle icon-small color-theme-common-bg">
50   - <span class="glyphicon glyphicon-search"></span>
51   - </span>
52   - <span class="sr-only">Buscar</span>
53   - </button>
54   - </span>
55   - </div>
56   - <br/>
57   - </div>
58   - </div>
59   - <div ng-if="pagePropostas.themes">
60   - <category-list categories="pagePropostas.themes" selected-category="pagePropostas.selectedTheme"></category-list>
61   - </div>
62   - <div ng-if="!pagePropostas.themes && pagePropostas.loadingThemes">
63   - <div class="alert alert-info" role="alert">
64   - Carregando temas.
  24 + </section>
  25 + <section class="section--header" ng-if="pagePropostas.filtredProposals || pagePropostas.themes">
  26 + <div class="container">
  27 + <div class="row">
  28 + <div class="col-sm-12">
  29 + <h1>Propostas</h1>
  30 + </div>
65 31 </div>
66   - </div>
67   - <div ng-if="!pagePropostas.themes && pagePropostas.themesError">
68   - <div class="alert alert-danger" role="alert">
69   - Não foi possível carregar a lista de temas neste momento.
70   - </div>
71   - </div>
72 32 </div>
73   - <div class="col-sm-8 col-md-9">
74   - <div class="row hidden-xs" ng-if="pagePropostas.filtredProposals">
75   - <div class="col-xs-12">
76   - <div class="input-group input-group-lg input-group-search">
77   - <label for="articleQueryFilter" class="control-label sr-only">Buscar propostas:</label>
78   - <input id="articleQueryFilter" type="search" class="form-control input-search" ng-model="pagePropostas.query" placeholder="Buscar propostas" aria-label="Buscar propostas">
79   - <span class="input-group-btn">
80   - <button type="button" class="btn btn-default" ng-click="pagePropostas.submitSearch()">
81   - <span class="icon-circle icon-small color-theme-common-bg">
82   - <span class="glyphicon glyphicon-search"></span>
83   - </span>
84   - <span class="sr-only">Buscar</span>
85   - </button>
86   - </span>
87   - </div>
88   - </div>
89   - </div>
90   -
91   - <div id="search-result" class="row" ng-if="pagePropostas.filtredProposals">
92   - <div class="col-sm-12">
93   - <header class="header">
94   - <h2>Total de Propostas: "<b>{{pagePropostas.total_proposals}} propostas</b>"</h2>
95   - </header>
96   - </div>
97   - </div>
98   -
99   - <div class="row">
100   - <div class="col-sm-12" ng-if="!pagePropostas.loadingProposals && pagePropostas.filtredProposals && pagePropostas.total_proposals">
101   - <proposal-grid proposals="pagePropostas.filtredProposals"></proposal-grid>
102   - <app-paginator
103   - page="pagePropostas.page"
104   - per-page="pagePropostas.per_page"
105   - total="pagePropostas.total_proposals"
106   - change-page="pagePropostas.changePage(pageIndex)"
107   - ></app-paginator>
  33 + </section>
  34 + <section class="section--articles section-gray section-space-up" ng-if="pagePropostas.filtredProposals || pagePropostas.themes">
  35 + <div class="container">
  36 + <div id="lista-de-propostas" class="row">
  37 + <div class="col-sm-4 col-md-3">
  38 + <div class="row visible-xs">
  39 + <div class="col-xs-12">
  40 + <div class="input-group input-group-lg input-group-search">
  41 + <label for="articleQueryFilter" class="control-label sr-only">Buscar propostas:</label>
  42 + <input id="articleQueryFilter" type="search" class="form-control input-search" ng-model="pagePropostas.query" placeholder="Buscar propostas" aria-label="Buscar propostas">
  43 + <div class="input-group-btn">
  44 + <button type="button" class="btn btn-default" ng-click="pagePropostas.submitSearch()">
  45 + <div class="icon-circle icon-small color-theme-common-bg">
  46 + <span class="glyphicon glyphicon-search"></span>
  47 + </div>
  48 + <span class="sr-only">Buscar</span>
  49 + </button>
  50 + </div>
  51 + </div>
  52 + <br/>
  53 + </div>
  54 + </div>
  55 + <div ng-if="pagePropostas.themes">
  56 + <category-list categories="pagePropostas.themes" selected-category="pagePropostas.selectedTheme"></category-list>
  57 + </div>
  58 + <div ng-if="!pagePropostas.themes && pagePropostas.loadingThemes">
  59 + <div class="alert alert-info" role="alert">
  60 + Carregando temas.
  61 + </div>
  62 + </div>
  63 + <div ng-if="!pagePropostas.themes && pagePropostas.themesError">
  64 + <div class="alert alert-danger" role="alert">
  65 + Não foi possível carregar a lista de temas neste momento.
  66 + </div>
  67 + </div>
  68 + </div>
  69 + <div class="col-sm-8 col-md-9">
  70 + <div class="row hidden-xs" ng-if="pagePropostas.filtredProposals">
  71 + <div class="col-xs-12">
  72 + <div class="input-group input-group-lg input-group-search">
  73 + <label for="articleQueryFilter" class="control-label sr-only">Buscar propostas:</label>
  74 + <input id="articleQueryFilter" type="search" class="form-control input-search" ng-model="pagePropostas.query" placeholder="Buscar propostas" aria-label="Buscar propostas">
  75 + <div class="input-group-btn">
  76 + <button type="button" class="btn btn-default" ng-click="pagePropostas.submitSearch()">
  77 + <div class="icon-circle icon-small color-theme-common-bg">
  78 + <span class="glyphicon glyphicon-search"></span>
  79 + </div>
  80 + <span class="sr-only">Buscar</span>
  81 + </button>
  82 + </div>
  83 + </div>
  84 + </div>
  85 + </div>
  86 + <div id="search-result" class="row" ng-if="pagePropostas.filtredProposals">
  87 + <div class="col-sm-12">
  88 + <header class="header">
  89 + <h2>Total de Propostas: "<b>{{pagePropostas.total_proposals}} propostas</b>"</h2>
  90 + </header>
  91 + </div>
  92 + </div>
  93 + <div class="row">
  94 + <div class="col-sm-12" ng-if="!pagePropostas.loadingProposals && pagePropostas.filtredProposals && pagePropostas.total_proposals">
  95 + <proposal-grid proposals="pagePropostas.filtredProposals"></proposal-grid>
  96 + <app-paginator page="pagePropostas.page" per-page="pagePropostas.per_page" total="pagePropostas.total_proposals" change-page="pagePropostas.changePage(pageIndex)"></app-paginator>
  97 + </div>
  98 + <div ng-if="pagePropostas.loadingProposals">
  99 + <div class="alert alert-info" role="alert">
  100 + Carregando propostas.
  101 + </div>
  102 + </div>
  103 + <div ng-if="!pagePropostas.loadingProposals && pagePropostas.proposalsError">
  104 + <div class="alert alert-danger" role="alert">
  105 + Não foi possível carregar a lista de propostas neste momento.
  106 + </div>
  107 + </div>
  108 + </div>
  109 + </div>
108 110 </div>
109   - <div ng-if="pagePropostas.loadingProposals">
110   - <div class="alert alert-info" role="alert">
111   - Carregando propostas.
112   - </div>
113   - </div>
114   - <div ng-if="!pagePropostas.loadingProposals && pagePropostas.proposalsError">
115   - <div class="alert alert-danger" role="alert">
116   - Não foi possível carregar a lista de propostas neste momento.
117   - </div>
118   - </div>
119   - </div>
120 111 </div>
121   - </div>
122   - </div>
123   - </section>
  112 + </section>
124 113 </div>
... ...