Commit ef3b9ec3b257ed53bca8ab9d142144893a45da25

Authored by Leonardo Merlin
1 parent 2e71444d

Sync - merlin

src/app/components/app-paginator/app-paginator.directive.js 0 → 100644
@@ -0,0 +1,67 @@ @@ -0,0 +1,67 @@
  1 +(function() {
  2 + 'use strict';
  3 +
  4 + angular
  5 + .module('dialoga')
  6 + .directive('appPaginator', appPaginator);
  7 +
  8 + /** @ngInject */
  9 + function appPaginator() {
  10 +
  11 + /** @ngInject */
  12 + function AppPaginatorController($log) {
  13 + var vm = this;
  14 +
  15 + vm.$log = $log;
  16 +
  17 + vm.init();
  18 +
  19 + $log.debug('AppPaginatorController');
  20 + }
  21 +
  22 + AppPaginatorController.prototype.init = function () {
  23 + var vm = this;
  24 +
  25 + vm.page = vm.page || 1;
  26 + vm.perPage = vm.perPage || 20;
  27 + vm.total = vm.total || 0;
  28 + };
  29 +
  30 + AppPaginatorController.prototype.showPage = function (pageIndex) {
  31 + var vm = this;
  32 +
  33 + if (pageIndex < 0) {
  34 + pageIndex = 0;
  35 + }
  36 +
  37 + if (pageIndex > (vm.arraypages.length-1)) {
  38 + pageIndex = vm.arraypages.length-1;
  39 + }
  40 +
  41 + if(vm.changePage){
  42 + vm.changePage({pageIndex: (pageIndex + 1 )});
  43 + }else{
  44 + vm.proposalsPerPage = vm.getProposalsPerPage(pageIndex);
  45 + }
  46 + vm.currentPageIndex = pageIndex;
  47 + };
  48 +
  49 + var directive = {
  50 + restrict: 'E',
  51 + templateUrl: 'app/components/app-paginator/app-paginator.html',
  52 + scope: {
  53 + page: '=',
  54 + perPage: '=',
  55 + total: '=',
  56 + changePage: '&'
  57 + },
  58 + controller: AppPaginatorController,
  59 + controllerAs: 'vm',
  60 + bindToController: true
  61 + };
  62 +
  63 +
  64 + return directive;
  65 + }
  66 +
  67 +})();
src/app/components/app-paginator/app-paginator.html 0 → 100644
@@ -0,0 +1,17 @@ @@ -0,0 +1,17 @@
  1 +<nav ng-if="vm.arraypages.length > 1">
  2 + <ul class="pagination">
  3 + <li ng-style="{'visibility': (vm.currentPageIndex === 0) ? 'hidden' : 'visible'}">
  4 + <a class="btn-pagination" href="#" aria-label="Previous" ng-click="vm.showPage(vm.currentPageIndex-1)">
  5 + <span aria-hidden="true" class="glyphicon glyphicon-chevron-left pagination-icon"></span>
  6 + </a>
  7 + </li>
  8 + <li ng-repeat="paginas in vm.arraypages track by $index" ng-class="{ 'active' : ($index) == vm.currentPageIndex }" >
  9 + <a class="btn-pagination" href="#" ng-click="vm.showPage($index)">{{::($index)+1}}</a>
  10 + </li>
  11 + <li ng-style="{'visibility': (vm.currentPageIndex === (vm.arraypages.length -1)) ? 'hidden' : 'visible'}">
  12 + <a class="btn-pagination" href="#" aria-label="Next" ng-click="vm.showPage(vm.currentPageIndex+1)">
  13 + <span aria-hidden="true" class="glyphicon glyphicon-chevron-right pagination-icon"></span>
  14 + </a>
  15 + </li>
  16 + </ul>
  17 +</nav>
src/app/components/dialoga-service/dialoga.service.js
@@ -160,7 +160,7 @@ @@ -160,7 +160,7 @@
160 var result = CACHE.programs.filter(function filterProgramBySlug (program) { 160 var result = CACHE.programs.filter(function filterProgramBySlug (program) {
161 var category = program.categories[0]; 161 var category = program.categories[0];
162 162
163 - if(angular.equals(category.id, themeId)) { 163 + if(category && angular.equals(category.id, themeId)) {
164 return true; 164 return true;
165 } 165 }
166 return false; 166 return false;
@@ -226,8 +226,8 @@ @@ -226,8 +226,8 @@
226 ArticleService.searchTopics({query: query}, cbSuccess, cbError); 226 ArticleService.searchTopics({query: query}, cbSuccess, cbError);
227 } 227 }
228 228
229 - function searchProposals (query, cbSuccess, cbError) {  
230 - ArticleService.searchProposals({query: query}, cbSuccess, cbError); 229 + function searchProposals (params, cbSuccess, cbError) {
  230 + ArticleService.searchProposals(params, cbSuccess, cbError);
231 } 231 }
232 232
233 function _pipeHandleYoutube (data) { 233 function _pipeHandleYoutube (data) {
src/app/components/proposal-list/proposal-list.directive.js
@@ -44,16 +44,13 @@ @@ -44,16 +44,13 @@
44 var vm = this; 44 var vm = this;
45 45
46 vm.currentPageIndex = 0; 46 vm.currentPageIndex = 0;
47 -  
48 vm.proposalsPerPage = vm.getProposalsPerPage(0); 47 vm.proposalsPerPage = vm.getProposalsPerPage(0);
49 -  
50 - vm.proposalsLength = vm.proposals.length;  
51 - 48 + vm.proposalsLength = vm.total || vm.proposals.length;
52 49
53 if ((vm.proposalsLength % vm.perPage) === 0) { 50 if ((vm.proposalsLength % vm.perPage) === 0) {
54 - vm.pages = vm.proposalsLength / vm.perPage; 51 + vm.pages = vm.proposalsLength / vm.perPage;
55 } else{ 52 } else{
56 - vm.pages = (vm.proposalsLength / vm.perPage) + 1; 53 + vm.pages = (vm.proposalsLength / vm.perPage) + 1;
57 } 54 }
58 55
59 // vm.arraypages = new Array(Math.ceil(vm.pages)); 56 // vm.arraypages = new Array(Math.ceil(vm.pages));
@@ -98,7 +95,11 @@ @@ -98,7 +95,11 @@
98 pageIndex = vm.arraypages.length-1; 95 pageIndex = vm.arraypages.length-1;
99 } 96 }
100 97
101 - vm.proposalsPerPage = vm.getProposalsPerPage(pageIndex); 98 + if(vm.changePage){
  99 + vm.changePage({pageIndex: (pageIndex + 1 )});
  100 + }else{
  101 + vm.proposalsPerPage = vm.getProposalsPerPage(pageIndex);
  102 + }
102 vm.currentPageIndex = pageIndex; 103 vm.currentPageIndex = pageIndex;
103 }; 104 };
104 105
@@ -132,7 +133,10 @@ @@ -132,7 +133,10 @@
132 templateUrl: 'app/components/proposal-list/proposal-list.html', 133 templateUrl: 'app/components/proposal-list/proposal-list.html',
133 scope: { 134 scope: {
134 proposals: '=', 135 proposals: '=',
135 - perPage: '=' 136 + page: '=',
  137 + perPage: '=',
  138 + total: '=',
  139 + changePage: '&'
136 }, 140 },
137 controller: ProposalListController, 141 controller: ProposalListController,
138 controllerAs: 'vm', 142 controllerAs: 'vm',
src/app/components/util-service/utils.service.js
@@ -48,6 +48,7 @@ @@ -48,6 +48,7 @@
48 */ 48 */
49 function handleSuccess (response) { 49 function handleSuccess (response) {
50 $log.debug('[SUCCESS]', response); 50 $log.debug('[SUCCESS]', response);
  51 + response.data._obj = response;
51 return response.data; 52 return response.data;
52 } 53 }
53 54
src/app/index.route.js
@@ -106,12 +106,12 @@ @@ -106,12 +106,12 @@
106 .state('ranking', { 106 .state('ranking', {
107 url: '/ranking?tema&programa&filtro', 107 url: '/ranking?tema&programa&filtro',
108 reloadOnSearch: false, 108 reloadOnSearch: false,
109 - ncyBreadcrumb: {label: 'Propostas'}, 109 + ncyBreadcrumb: {label: 'Ranking'},
110 views: { 110 views: {
111 'main': { 111 'main': {
112 - templateUrl: 'app/pages/propostas/ranking.html',  
113 - controller: 'PropostasPageController',  
114 - controllerAs: 'pagePropostas' 112 + templateUrl: 'app/pages/ranking/ranking.html',
  113 + controller: 'RankingPageController',
  114 + controllerAs: 'pageRanking'
115 } 115 }
116 } 116 }
117 }) 117 })
src/app/pages/propostas/propostas.controller.js
1 -/**  
2 - * Controlador das páginas:  
3 - * - Propostas  
4 - * - Ranking  
5 - */  
6 (function() { 1 (function() {
7 'use strict'; 2 'use strict';
8 3
@@ -50,10 +45,7 @@ @@ -50,10 +45,7 @@
50 45
51 // Behaviour: 46 // Behaviour:
52 // 1. Load themes 47 // 1. Load themes
53 - // 2. Select a Random Theme (T)  
54 - // 3. Load programs of T  
55 - // 4. Select a random program of T  
56 - // 5. Filter the list of proposals 48 + // 1. Load Proposals per_page
57 // END. 49 // END.
58 50
59 // 1. Load themes 51 // 1. Load themes
@@ -63,30 +55,8 @@ @@ -63,30 +55,8 @@
63 vm.loadingThemes = false; 55 vm.loadingThemes = false;
64 vm.loading = false; 56 vm.loading = false;
65 57
66 - // 2. Select a Random Theme (T)  
67 - var selectedTheme = null;  
68 - if(vm.search.tema){  
69 -  
70 - // vanilla filter  
71 - var results = vm.themes.filter(function(t){  
72 - return t.slug === vm.search.tema;  
73 - });  
74 -  
75 - if(results && results.length > 0){  
76 - selectedTheme = results[0];  
77 - vm.selectedTheme = selectedTheme;  
78 - }  
79 - }  
80 -  
81 - if(!selectedTheme){  
82 - vm.selectedTheme = vm.themes[Math.floor(Math.random() * vm.themes.length)];  
83 - }  
84 -  
85 - // 3. Load programs of T  
86 - // (AND 4)  
87 - var themeId = vm.selectedTheme.id;  
88 - vm.loadPrograms(themeId, function(){  
89 - vm.loadProposals(); 58 + vm.loadProposals(function (){
  59 + vm.attachListeners();
90 }); 60 });
91 }, function (error) { 61 }, function (error) {
92 vm.error = error; 62 vm.error = error;
@@ -96,44 +66,7 @@ @@ -96,44 +66,7 @@
96 }); 66 });
97 }; 67 };
98 68
99 - PropostasPageController.prototype.loadPrograms = function (themeId, cb) {  
100 - var vm = this;  
101 -  
102 - vm.DialogaService.getProgramsByThemeId(themeId, function (programs){  
103 -  
104 - vm.filtredPrograms = programs;  
105 -  
106 - // 4. Select a random program of T  
107 - var selectedProgram = null;  
108 - if(vm.search.programa){  
109 -  
110 - // vanilla filter  
111 - var results = vm.filtredPrograms.filter(function(p){  
112 - return p.slug === vm.search.programa;  
113 - });  
114 -  
115 - if(results && results.length > 0){  
116 - selectedProgram = results[0];  
117 - vm.selectedProgram = selectedProgram;  
118 - }  
119 - }  
120 -  
121 - if(!selectedProgram){  
122 - vm.selectedProgram = vm.filtredPrograms[Math.floor(Math.random() * vm.filtredPrograms.length)];  
123 - }  
124 -  
125 - if(cb){  
126 - cb();  
127 - }  
128 - }, function(error){  
129 - vm.$log.error(error);  
130 - if(cb){  
131 - cb();  
132 - }  
133 - });  
134 - };  
135 -  
136 - PropostasPageController.prototype.loadProposals = function () { 69 + PropostasPageController.prototype.loadProposals = function (cb) {
137 var vm = this; 70 var vm = this;
138 71
139 // load Proposals 72 // load Proposals
@@ -144,7 +77,9 @@ @@ -144,7 +77,9 @@
144 vm.loadingProposals = false; 77 vm.loadingProposals = false;
145 vm.loading = false; 78 vm.loading = false;
146 79
147 - vm.attachListeners(); 80 + if(cb){
  81 + cb();
  82 + }
148 }, function (error) { 83 }, function (error) {
149 vm.error = error; 84 vm.error = error;
150 vm.$log.error(error); 85 vm.$log.error(error);
@@ -163,12 +98,7 @@ @@ -163,12 +98,7 @@
163 vm.$scope.$watch('pagePropostas.selectedTheme', function(newValue, oldValue) { 98 vm.$scope.$watch('pagePropostas.selectedTheme', function(newValue, oldValue) {
164 vm.search.tema = newValue ? newValue.slug : null; 99 vm.search.tema = newValue ? newValue.slug : null;
165 vm.$location.search('tema', vm.search.tema); 100 vm.$location.search('tema', vm.search.tema);
166 -  
167 - if(vm.selectedTheme && vm.selectedTheme.id){  
168 - vm.loadPrograms(vm.selectedTheme.id, function(){  
169 - vm.filtredProposals = vm.getFiltredProposals();  
170 - });  
171 - } 101 + vm.filtredProposals = vm.getFiltredProposals();
172 }); 102 });
173 103
174 vm.$scope.$on('change-selectedTopic', function (event, selectedTopic) { 104 vm.$scope.$on('change-selectedTopic', function (event, selectedTopic) {
@@ -188,17 +118,6 @@ @@ -188,17 +118,6 @@
188 }); 118 });
189 }; 119 };
190 120
191 - PropostasPageController.prototype.showAllPrograms = function($event) {  
192 - var vm = this;  
193 - $event.stopPropagation();  
194 -  
195 - vm.resetFilterValues();  
196 -  
197 - vm._showAllFlag = true;  
198 -  
199 - vm.filtredPrograms = vm.getFiltredPrograms();  
200 - };  
201 -  
202 PropostasPageController.prototype.resetFilterValues = function() { 121 PropostasPageController.prototype.resetFilterValues = function() {
203 var vm = this; 122 var vm = this;
204 123
src/app/pages/propostas/ranking.html
@@ -1,68 +0,0 @@ @@ -1,68 +0,0 @@
1 -<div class="container">  
2 - <div class="row">  
3 - <div class="col-sm-12">  
4 - <div ncy-breadcrumb></div>  
5 - </div>  
6 - </div>  
7 -</div>  
8 -  
9 -<div class="page--propostas">  
10 - <section class="section--info">  
11 - <div class="container">  
12 - <div class="row">  
13 - <div class="col-sm-12">  
14 - <h1>Ranking</h1>  
15 - </div>  
16 - </div>  
17 - </div>  
18 - </section>  
19 - <section class="section--articles section-gray section-space-up" ng-if="pagePropostas.proposals">  
20 - <div class="container">  
21 - <div id="lista-de-propostas" class="row">  
22 - <div class="col-sm-4 col-md-3">  
23 - <div ng-if="pagePropostas.themes">  
24 - <category-list categories="pagePropostas.themes" selected-category="pagePropostas.selectedTheme" disable-unselect="true"></category-list>  
25 - </div>  
26 - <div ng-if="pagePropostas.filtredPrograms && pagePropostas.selectedProgram" class="topics-select--wrapper">  
27 - <topics-select topics="pagePropostas.filtredPrograms" selected-topic="pagePropostas.selectedProgram"></topics-select>  
28 - </div>  
29 - <div ng-if="!pagePropostas.themes && pagePropostas.loadingThemes">  
30 - <div class="alert alert-info" role="alert">  
31 - Carregando temas.  
32 - </div>  
33 - </div>  
34 - <div ng-if="!pagePropostas.themes && pagePropostas.themesError">  
35 - <div class="alert alert-danger" role="alert">  
36 - Não foi possível carregar a lista de temas neste momento.  
37 - </div>  
38 - </div>  
39 - </div>  
40 - <div class="col-sm-8 col-md-9">  
41 - <div class="row">  
42 - <div class="col-sm-12">  
43 - <header class="header">  
44 - <h2 style="margin-top:0;">Total de Propostas: "<span>{{pagePropostas.filtredProposals.length}} propostas</span>"</h2>  
45 - </header>  
46 - </div>  
47 - </div>  
48 -  
49 - <div class="row">  
50 - <div class="col-sm-12" ng-if="pagePropostas.proposals">  
51 - <proposal-list proposals="pagePropostas.filtredProposals" per-page="10"></proposal-list>  
52 - </div>  
53 - <div ng-if="!pagePropostas.proposals && pagePropostas.loadingProposals">  
54 - <div class="alert alert-info" role="alert">  
55 - Carregando propostas.  
56 - </div>  
57 - </div>  
58 - <div ng-if="!pagePropostas.proposals && pagePropostas.proposalsError">  
59 - <div class="alert alert-danger" role="alert">  
60 - Não foi possível carregar a lista de propostas neste momento.  
61 - </div>  
62 - </div>  
63 - </div>  
64 - </div>  
65 - </div>  
66 - </div>  
67 - </section>  
68 -</div>  
src/app/pages/ranking/ranking.controller.js 0 → 100644
@@ -0,0 +1,240 @@ @@ -0,0 +1,240 @@
  1 +(function() {
  2 + 'use strict';
  3 +
  4 + angular
  5 + .module('dialoga')
  6 + .controller('RankingPageController', RankingPageController);
  7 +
  8 + /** @ngInject */
  9 + function RankingPageController(DialogaService, $scope, $location, $filter, $log) {
  10 + var vm = this;
  11 +
  12 + vm.DialogaService = DialogaService;
  13 + vm.$scope = $scope;
  14 + vm.$location = $location;
  15 + vm.$filter = $filter;
  16 + vm.$log = $log;
  17 +
  18 + vm.init();
  19 + vm.loadData();
  20 + // vm.attachListeners(); // attach listeners after load data (SYNC)
  21 +
  22 + $log.debug('RankingPageController');
  23 + }
  24 +
  25 + RankingPageController.prototype.init = function () {
  26 + var vm = this;
  27 +
  28 + vm.page = 1;
  29 + vm.per_page = 3;
  30 + vm.themes = null;
  31 + vm.selectedTheme = null;
  32 + vm.filtredPrograms = null;
  33 + vm.selectedProgram = null;
  34 + vm.proposals = null;
  35 + vm.filtredProposals = null;
  36 + vm.query = null;
  37 + vm.search = vm.$location.search();
  38 +
  39 + vm.loading = null;
  40 + vm.error = null;
  41 + };
  42 +
  43 + RankingPageController.prototype.loadData = function () {
  44 + var vm = this;
  45 +
  46 + vm.loading = true;
  47 +
  48 + // Behaviour:
  49 + // 1. Load themes
  50 + // 2. Select a Random Theme (T)
  51 + // 3. Load programs of T
  52 + // 4. Select a random program of T
  53 + // 5. Filter the list of proposals
  54 + // END.
  55 +
  56 + // 1. Load themes
  57 + vm.loadingThemes = true;
  58 + vm.DialogaService.getThemes(function(themes){
  59 + vm.themes = themes;
  60 + vm.loadingThemes = false;
  61 +
  62 + // 2. Select a Random Theme (T)
  63 + var selectedTheme = null;
  64 + if(vm.search.tema){
  65 +
  66 + // vanilla filter
  67 + var results = vm.themes.filter(function(t){
  68 + return t.slug === vm.search.tema;
  69 + });
  70 +
  71 + if(results && results.length > 0){
  72 + selectedTheme = results[0];
  73 + vm.selectedTheme = selectedTheme;
  74 + }
  75 + }
  76 +
  77 + if(!selectedTheme){
  78 + vm.selectedTheme = vm.themes[Math.floor(Math.random() * vm.themes.length)];
  79 + }
  80 +
  81 + // 3. Load programs of T
  82 + // (AND 4)
  83 + var themeId = vm.selectedTheme.id;
  84 + vm.loadPrograms(themeId, function(){
  85 + vm.loadProposals();
  86 + vm.loading = false;
  87 + });
  88 + }, function (error) {
  89 + vm.error = error;
  90 + vm.$log.error(error);
  91 + vm.loadingThemes = false;
  92 + vm.loading = false;
  93 + });
  94 + };
  95 +
  96 + RankingPageController.prototype.loadPrograms = function (themeId, cb) {
  97 + var vm = this;
  98 +
  99 + vm.DialogaService.getProgramsByThemeId(themeId, function (programs){
  100 +
  101 + vm.filtredPrograms = programs;
  102 +
  103 + // 4. Select a random program of T
  104 + var selectedProgram = null;
  105 + if(vm.search.programa){
  106 +
  107 + // vanilla filter
  108 + var results = vm.filtredPrograms.filter(function(p){
  109 + return p.slug === vm.search.programa;
  110 + });
  111 +
  112 + if(results && results.length > 0){
  113 + selectedProgram = results[0];
  114 + vm.selectedProgram = selectedProgram;
  115 + }
  116 + }
  117 +
  118 + if(!selectedProgram){
  119 + vm.selectedProgram = vm.filtredPrograms[Math.floor(Math.random() * vm.filtredPrograms.length)];
  120 + }
  121 +
  122 + if(cb){
  123 + cb();
  124 + }
  125 + }, function(error){
  126 + vm.$log.error(error);
  127 + if(cb){
  128 + cb();
  129 + }
  130 + });
  131 + };
  132 +
  133 + RankingPageController.prototype.loadProposals = function () {
  134 + var vm = this;
  135 +
  136 + // load Proposals
  137 + vm.loadingProposals = true;
  138 + vm.DialogaService.getProposals({}, function(data){
  139 + vm.proposals = data.articles;
  140 + vm.filtredProposals = vm.proposals;
  141 + vm.loadingProposals = false;
  142 +
  143 + vm.attachListeners();
  144 + }, function (error) {
  145 + vm.error = error;
  146 + vm.$log.error(error);
  147 + vm.loadingProposals = false;
  148 + });
  149 + };
  150 +
  151 + RankingPageController.prototype.attachListeners = function() {
  152 + var vm = this;
  153 +
  154 + vm.$scope.$on('change-selectedCategory', function (event, selectedCategory) {
  155 + vm.selectedTheme = selectedCategory;
  156 + });
  157 +
  158 + vm.$scope.$watch('pageRanking.selectedTheme', function(newValue, oldValue) {
  159 + vm.search.tema = newValue ? newValue.slug : null;
  160 + vm.$location.search('tema', vm.search.tema);
  161 +
  162 + if(vm.selectedTheme && vm.selectedTheme.id){
  163 + vm.loadPrograms(vm.selectedTheme.id, function(){
  164 + vm.filterProposals();
  165 + });
  166 + }
  167 + });
  168 +
  169 + vm.$scope.$on('change-selectedTopic', function (event, selectedTopic) {
  170 + vm.selectedProgram = selectedTopic;
  171 + });
  172 +
  173 + vm.$scope.$watch('pageRanking.selectedProgram', function(newValue, oldValue) {
  174 + vm.search.programa = newValue ? newValue.slug : null;
  175 + vm.$location.search('programa', vm.search.programa);
  176 + vm.filterProposals();
  177 + });
  178 +
  179 + vm.$scope.$watch('pageRanking.query', function(newValue/*, oldValue*/) {
  180 + vm.search.filtro = newValue ? newValue : null;
  181 + vm.$location.search('filtro', vm.search.filtro);
  182 + vm.filterProposals();
  183 + });
  184 + };
  185 +
  186 + RankingPageController.prototype.resetFilterValues = function() {
  187 + var vm = this;
  188 +
  189 + vm.query = null;
  190 + vm.selectedTheme = null;
  191 + };
  192 +
  193 + RankingPageController.prototype.changePage = function(pageIndex) {
  194 + var vm = this;
  195 +
  196 + vm.filterProposals(pageIndex);
  197 + };
  198 +
  199 + RankingPageController.prototype.filterProposals = function(_page, _per_page) {
  200 + var vm = this;
  201 +
  202 + if (vm.loadingProposals){
  203 + vm.$log.debug('Content is not loaded yet.');
  204 + return;
  205 + }
  206 +
  207 + var page = _page || vm.page;
  208 + var per_page = _per_page || vm.per_page;
  209 + var input = vm.proposals;
  210 + var output = input;
  211 + var query = vm.query;
  212 + var selectedTheme = vm.selectedTheme;
  213 + var selectedProgram = vm.selectedProgram;
  214 +
  215 + var filter = vm.$filter('filter');
  216 +
  217 + if (selectedProgram) {
  218 + var params = {
  219 + page: page,
  220 + per_page: per_page,
  221 + parent_id: selectedProgram.id
  222 + };
  223 +
  224 + if (query) {params.query = query; }
  225 +
  226 + vm.loadingProposals = true;
  227 + vm.DialogaService.searchProposals(params, function(data){
  228 + vm.total_proposals = data._obj.headers('total');
  229 + vm.filtredProposals = data.articles;
  230 + vm.loadingProposals = false;
  231 + }, function (error) {
  232 + vm.error = error;
  233 + vm.$log.error(error);
  234 + vm.loadingProposals = false;
  235 + });
  236 + } else {
  237 + vm.filtredProposals = [];
  238 + }
  239 + };
  240 +})();
src/app/pages/ranking/ranking.html 0 → 100644
@@ -0,0 +1,68 @@ @@ -0,0 +1,68 @@
  1 +<div class="container">
  2 + <div class="row">
  3 + <div class="col-sm-12">
  4 + <div ncy-breadcrumb></div>
  5 + </div>
  6 + </div>
  7 +</div>
  8 +
  9 +<div class="page--propostas">
  10 + <section class="section--info">
  11 + <div class="container">
  12 + <div class="row">
  13 + <div class="col-sm-12">
  14 + <h1>Ranking</h1>
  15 + </div>
  16 + </div>
  17 + </div>
  18 + </section>
  19 + <section class="section--articles section-gray section-space-up" ng-if="pageRanking.proposals">
  20 + <div class="container">
  21 + <div id="lista-de-propostas" class="row">
  22 + <div class="col-sm-4 col-md-3">
  23 + <div ng-if="pageRanking.themes">
  24 + <category-list categories="pageRanking.themes" selected-category="pageRanking.selectedTheme" disable-unselect="true"></category-list>
  25 + </div>
  26 + <div ng-if="pageRanking.filtredPrograms && pageRanking.selectedProgram" class="topics-select--wrapper">
  27 + <topics-select topics="pageRanking.filtredPrograms" selected-topic="pageRanking.selectedProgram"></topics-select>
  28 + </div>
  29 + <div ng-if="!pageRanking.themes && pageRanking.loadingThemes">
  30 + <div class="alert alert-info" role="alert">
  31 + Carregando temas.
  32 + </div>
  33 + </div>
  34 + <div ng-if="!pageRanking.themes && pageRanking.themesError">
  35 + <div class="alert alert-danger" role="alert">
  36 + Não foi possível carregar a lista de temas neste momento.
  37 + </div>
  38 + </div>
  39 + </div>
  40 + <div class="col-sm-8 col-md-9">
  41 + <div class="row">
  42 + <div class="col-sm-12">
  43 + <header class="header">
  44 + <h2 style="margin-top:0;">Total de Propostas: "<span>{{pageRanking.total_proposals}} propostas</span>"</h2>
  45 + </header>
  46 + </div>
  47 + </div>
  48 +
  49 + <div class="row">
  50 + <div class="col-sm-12" ng-if="pageRanking.proposals">
  51 + <proposal-list proposals="pageRanking.filtredProposals" per-page="pageRanking.per_page" total="pageRanking.total_proposals" change-page="pageRanking.changePage(pageIndex)"></proposal-list>
  52 + </div>
  53 + <div class="col-sm-12" ng-if="pageRanking.loadingProposals">
  54 + <div class="alert alert-info" role="alert">
  55 + Carregando propostas.
  56 + </div>
  57 + </div>
  58 + <div class="col-sm-12" ng-if="pageRanking.proposalsError">
  59 + <div class="alert alert-danger" role="alert">
  60 + Não foi possível carregar a lista de propostas neste momento.
  61 + </div>
  62 + </div>
  63 + </div>
  64 + </div>
  65 + </div>
  66 + </div>
  67 + </section>
  68 +</div>
src/assets/images/icons/tema-reducao-da-pobreza-small.png

1.32 KB | W: | H:

1.33 KB | W: | H:

  • 2-up
  • Swipe
  • Onion skin
src/assets/images/icons/tema-reducao-da-pobreza.png

2.75 KB | W: | H:

2.55 KB | W: | H:

  • 2-up
  • Swipe
  • Onion skin