Commit 42ecec409b339f6b24b07c0b0528190a2929aa2f

Authored by Rafael Diego
2 parents b447d916 83c9d339

Merge branch 'correcoes-votos'

src/app/components/article-service/article.service.js
... ... @@ -2,8 +2,8 @@
2 2 'use strict';
3 3  
4 4 angular
5   - .module('dialoga')
6   - .factory('ArticleService', ArticleService);
  5 + .module('dialoga')
  6 + .factory('ArticleService', ArticleService);
7 7  
8 8 /** @ngInject */
9 9 function ArticleService($http, $q, $rootScope, API, UtilService, Slug, GUID, $log) {
... ... @@ -23,6 +23,7 @@
23 23 getProposals: getProposals,
24 24 getProposalById: getProposalById,
25 25 getProposalsByTopicId: getProposalsByTopicId,
  26 + getProposalsByTopicIdRanked: getProposalsByTopicIdRanked,
26 27 getResponseByProposalId: getResponseByProposalId,
27 28 createProposal: createProposal,
28 29 voteProposal: voteProposal,
... ... @@ -107,8 +108,7 @@
107 108 }
108 109  
109 110 function getProposalById (proposalId, params, cbSuccess, cbError) {
110   - var url = service.apiProposals + proposalId + '/ranking?per_page=5&page=1';
111   - console.log(url);
  111 + var url = service.apiArticles + proposalId;
112 112  
113 113 var paramsExtended = angular.extend({
114 114 // 'fields[]': ['id', 'title', 'abstract', 'children', 'children_count', 'ranking_position', 'hits', 'votes_for', 'votes_against'],
... ... @@ -126,6 +126,25 @@
126 126  
127 127 }
128 128  
  129 + function getProposalByIdRanked (proposalId, params, cbSuccess, cbError) {
  130 + var url = service.apiProposals + proposalId + '/ranking?per_page=5&page=1';
  131 + console.log(url);
  132 + var paramsExtended = angular.extend({
  133 + // 'fields[]': ['id', 'title', 'abstract', 'children', 'children_count', 'ranking_position', 'hits', 'votes_for', 'votes_against'],
  134 + // 'per_page':'1',
  135 + 'limit':'1',
  136 + 'content_type':'ProposalsDiscussionPlugin::Proposal'
  137 + }, params);
  138 +
  139 + UtilService.get(url, {params: paramsExtended}).then(function(data){
  140 + _pipeInjectSlugIntoParentProgramRanked(data);
  141 + cbSuccess(data);
  142 + }).catch(function(error){
  143 + cbError(error);
  144 + });
  145 +
  146 + }
  147 +
129 148 /**
130 149 * Ex.: /api/v1/articles/[article_id]/children?[params]content_type=ProposalsDiscussionPlugin::Proposal
131 150 * Ex.: /api/v1/articles/103644/children?limit=20&fields=id,name,slug,abstract,created_by&content_type=ProposalsDiscussionPlugin::Proposal
... ... @@ -136,13 +155,17 @@
136 155 * @param {Function} cbError callback for error
137 156 * @return {Array} [description]
138 157 */
139   - function getProposalsByTopicId (topicId, params, cbSuccess, cbError) {
140   - getProposalById(topicId /*+ '/children'*/, params, cbSuccess, cbError);
  158 + function getProposalsByTopicId (topicId, params, cbSuccess, cbError) {
  159 + getProposalById(topicId + '/children', params, cbSuccess, cbError);
  160 + }
  161 +
  162 + function getProposalsByTopicIdRanked (topicId, params, cbSuccess, cbError) {
  163 + getProposalByIdRanked(topicId, params, cbSuccess, cbError);
141 164 }
142 165  
143 166 function getResponseByProposalId (proposalId) {
144 167 var url = service.apiArticles + proposalId + '/children?content_type=ProposalsDiscussionPlugin::Response&limit=1';
145   -
  168 +
146 169 // var paramsExtended = {};
147 170  
148 171 return UtilService.get(url);
... ... @@ -233,10 +256,10 @@
233 256 function sendContactForm (community_id, data){
234 257 var url = service.apiCommunities + community_id + '/contact';
235 258 var encodedParams = [
236   - 'contact[name]=' + data.name,
237   - 'contact[email]=' + data.email,
238   - 'contact[subject]=' + data.subject,
239   - 'contact[message]=' + data.message
  259 + 'contact[name]=' + data.name,
  260 + 'contact[email]=' + data.email,
  261 + 'contact[subject]=' + data.subject,
  262 + 'contact[message]=' + data.message
240 263 ].join('&');
241 264  
242 265 return UtilService.post(url, encodedParams);
... ... @@ -258,32 +281,29 @@
258 281 }
259 282  
260 283 function searchProposals (params, cbSuccess, cbError) {
261   - // Search
262 284 // Ex.: /api/v1/search/article?type=ProposalsDiscussionPlugin::Proposal&query=cisternas
263   - // Propostal Ranking
264   - // api/v1/proposals_discussion_plugin/103521/ranking?per_page=3&page=1
265   - // var url = service.apiSearch + 'article';
266   - var url = service.apiProposals;
  285 + var url = service.apiSearch + 'article';
267 286 var paramsExtended = angular.extend({
268 287 page: 1,
269   - per_page: 3,
  288 + per_page: 10,
  289 + type: 'ProposalsDiscussionPlugin::Proposal',
270 290 'fields[]': [
271   - 'id'/* ,
272   - 'abstract',
273   - 'hits',
274   - 'ranking_position',
275   - 'votes_against',
276   - 'votes_count',
277   - 'votes_for',
278   - 'parent',
279   - 'categories',
280   - 'slug',
  291 + 'id',
  292 + 'abstract',
  293 + 'hits',
  294 + 'ranking_position',
  295 + 'votes_against',
  296 + 'votes_count',
  297 + 'votes_for',
  298 + 'parent',
  299 + 'categories',
  300 + 'slug',
281 301 'url', // parent.image.url
282 302 'image',
283 303 'title',
284   - 'archived',*/
285   - ]
286   - }, params);
  304 + 'archived',
  305 + ]
  306 + }, params);
287 307  
288 308 UtilService.get(url, {params: paramsExtended}).then(function(data){
289 309 _pipeInjectSlugIntoParentProgram(data);
... ... @@ -294,10 +314,10 @@
294 314 }
295 315  
296 316 function _pipeInjectSlugIntoParentProgram(data){
297   - if(!data.proposals && data.proposals){
298   - data.proposals = [data.proposals];
  317 + if(!data.articles && data.article){
  318 + data.articles = [data.article];
299 319 }
300   - var proposals = data.proposals;
  320 + var proposals = data.articles;
301 321 for (var i = proposals.length - 1; i >= 0; i--) {
302 322 var proposal = proposals[i];
303 323 if(proposal.parent && !proposal.parent.slug){
... ... @@ -306,23 +326,37 @@
306 326 }
307 327 }
308 328  
309   - function _pipeRemoveOldEvents(data){
310   - if(!data.articles && data.article){
311   - data.articles = [data.article];
312   - data.article = null;
313   - }
  329 +//Refazer esse método. Não faz sentido
  330 +function _pipeInjectSlugIntoParentProgramRanked(data){
  331 + if(!data.proposals && data.proposals){
  332 + data.proposals = [data.proposals];
  333 + }
  334 + var proposals = data.proposals;
  335 + for (var i = proposals.length - 1; i >= 0; i--) {
  336 + var proposal = proposals[i];
  337 + if(proposal.parent && !proposal.parent.slug){
  338 + proposal.parent.slug = Slug.slugify(proposal.parent.title);
  339 + }
  340 + }
  341 +}
314 342  
315   - var now = (new Date()).getTime();
316   - var eventDate = null;
317   - var events = data.articles;
  343 +function _pipeRemoveOldEvents(data){
  344 + if(!data.articles && data.article){
  345 + data.articles = [data.article];
  346 + data.article = null;
  347 + }
318 348  
319   - var results = [];
320   - for (var i = events.length - 1; i >= 0; i--) {
321   - var event = events[i];
  349 + var now = (new Date()).getTime();
  350 + var eventDate = null;
  351 + var events = data.articles;
322 352  
323   - if(event.end_date){
324   - eventDate = new Date(event.end_date);
325   - }
  353 + var results = [];
  354 + for (var i = events.length - 1; i >= 0; i--) {
  355 + var event = events[i];
  356 +
  357 + if(event.end_date){
  358 + eventDate = new Date(event.end_date);
  359 + }
326 360  
327 361 // if(eventDate.getTime() < now){
328 362 // event.isOld = true;
... ... @@ -335,4 +369,4 @@
335 369 data.articles = results;
336 370 }
337 371 }
338 372 -})();
  373 +})();
339 374 \ No newline at end of file
... ...
src/app/components/dialoga-service/dialoga.service.js
... ... @@ -478,4 +478,4 @@
478 478 return abstract.replace(style, '');
479 479 }
480 480 }
481 481 -})();
  482 +})();
482 483 \ No newline at end of file
... ...
src/app/pages/programas/programa.controller.js
... ... @@ -83,12 +83,18 @@
83 83 }
84 84  
85 85 vm.loadingTopProposals = true;
86   - vm.DialogaService.getProposalsByTopicId(vm.article.id, {
  86 + vm.DialogaService.getProposalsByTopicIdRanked(vm.article.id, {
87 87 'limit': 5
88 88 }, function(data) {
89 89 vm.total_proposals = parseInt(vm.article.children_count);
90 90 // vm.total_proposals = parseInt(vm.article.amount_of_children); // DEPRECATED?!
91   - vm.proposals = data.proposals;
  91 + if (data.articles) {
  92 + vm.proposals = data.articles;
  93 + console.log("1");
  94 + } else {
  95 + vm.proposals = data.proposals;
  96 + console.log("2");
  97 + }
92 98 vm.proposalsTopFive = vm.proposals.slice(0, 5);
93 99 vm.proposalsTopRated = vm.proposals.slice(0, 3);
94 100 vm.loadingTopProposals = false;
... ... @@ -335,8 +341,6 @@
335 341 ProgramaPageController.prototype.toggleResponseVisibility = function(proposal) {
336 342 var vm = this;
337 343  
338   - console.log(proposal);
339   -
340 344 if(!proposal){
341 345 vm.$log.error('Error - proposal is:', proposal);
342 346 return;
... ... @@ -380,4 +384,4 @@
380 384 }
381 385 };
382 386  
383 387 -})();
  388 +})();
384 389 \ No newline at end of file
... ...
src/app/pages/ranking/ranking.controller.js
... ... @@ -2,8 +2,8 @@
2 2 'use strict';
3 3  
4 4 angular
5   - .module('dialoga')
6   - .controller('RankingPageController', RankingPageController);
  5 + .module('dialoga')
  6 + .controller('RankingPageController', RankingPageController);
7 7  
8 8 /** @ngInject */
9 9 function RankingPageController(DialogaService, $scope, $rootScope, $location, $filter, $log) {
... ... @@ -108,14 +108,14 @@
108 108 vm.loadingThemes = false;
109 109 vm.loading = false;
110 110 });
111   -};
  111 + };
112 112  
113   -RankingPageController.prototype.loadPrograms = function (themeId, cb) {
114   - var vm = this;
  113 + RankingPageController.prototype.loadPrograms = function (themeId, cb) {
  114 + var vm = this;
115 115  
116   - vm.DialogaService.getProgramsByThemeId(themeId, function (programs){
  116 + vm.DialogaService.getProgramsByThemeId(themeId, function (programs){
117 117  
118   - vm.filtredPrograms = programs;
  118 + vm.filtredPrograms = programs;
119 119  
120 120 // 4. Select a random program of T
121 121 var selectedProgram = null;
... ... @@ -129,16 +129,11 @@ RankingPageController.prototype.loadPrograms = function (themeId, cb) {
129 129 if(results && results.length > 0){
130 130 selectedProgram = results[0];
131 131 vm.selectedProgram = selectedProgram;
132   - console.log("1");
133   - console.log(vm.selectedProgram);
134   - console.log("vm.selectedProgram");
135 132 }
136 133 }
137 134  
138 135 if(!selectedProgram){
139 136 vm.selectedProgram = vm.filtredPrograms[Math.floor(Math.random() * vm.filtredPrograms.length)];
140   - console.log(vm.selectedProgram);
141   - console.log("2");
142 137 }
143 138  
144 139 if(cb){
... ... @@ -150,95 +145,95 @@ RankingPageController.prototype.loadPrograms = function (themeId, cb) {
150 145 cb();
151 146 }
152 147 });
153   -};
  148 + };
154 149  
155   -RankingPageController.prototype.attachListeners = function() {
156   - var vm = this;
  150 + RankingPageController.prototype.attachListeners = function() {
  151 + var vm = this;
157 152  
158   - vm.$scope.$on('change-selectedCategory', function (event, selectedCategory) {
159   - vm.selectedTheme = selectedCategory;
160   - });
  153 + vm.$scope.$on('change-selectedCategory', function (event, selectedCategory) {
  154 + vm.selectedTheme = selectedCategory;
  155 + });
161 156  
162   - vm.$scope.$watch('pageRanking.selectedTheme', function(newValue/*, oldValue*/) {
163   - vm.search.tema = newValue ? newValue.slug : null;
164   - vm.$location.search('tema', vm.search.tema);
  157 + vm.$scope.$watch('pageRanking.selectedTheme', function(newValue/*, oldValue*/) {
  158 + vm.search.tema = newValue ? newValue.slug : null;
  159 + vm.$location.search('tema', vm.search.tema);
165 160  
166   - if(!vm.loadingFilter && vm.selectedTheme && vm.selectedTheme.id){
167   - vm.loadPrograms(vm.selectedTheme.id, function(){
168   - vm.filterProposals();
169   - });
170   - }
171   - });
  161 + if(!vm.loadingFilter && vm.selectedTheme && vm.selectedTheme.id){
  162 + vm.loadPrograms(vm.selectedTheme.id, function(){
  163 + vm.filterProposals();
  164 + });
  165 + }
  166 + });
172 167  
173   - vm.$scope.$on('change-selectedTopic', function (event, selectedTopic) {
174   - vm.selectedProgram = selectedTopic;
175   - });
  168 + vm.$scope.$on('change-selectedTopic', function (event, selectedTopic) {
  169 + vm.selectedProgram = selectedTopic;
  170 + });
176 171  
177   - vm.$scope.$watch('pageRanking.selectedProgram', function(newValue/*, oldValue*/) {
178   - vm.search.programa = newValue ? newValue.slug : null;
179   - vm.$location.search('programa', vm.search.programa);
  172 + vm.$scope.$watch('pageRanking.selectedProgram', function(newValue/*, oldValue*/) {
  173 + vm.search.programa = newValue ? newValue.slug : null;
  174 + vm.$location.search('programa', vm.search.programa);
  175 +
  176 + if (!vm.loadingFilter) {
  177 + vm.filterProposals();
  178 + }
  179 + });
180 180  
181   - if (!vm.loadingFilter) {
182   - vm.filterProposals();
183   - }
184   - });
  181 + vm.$scope.$watch('pageRanking.query', function(newValue/*, oldValue*/) {
  182 + vm.search.filtro = newValue ? newValue : null;
  183 + vm.$location.search('filtro', vm.search.filtro);
  184 +
  185 + if (!vm.loadingFilter) {
  186 + vm.filterProposals();
  187 + }
  188 + });
  189 + };
185 190  
186   - vm.$scope.$watch('pageRanking.query', function(newValue/*, oldValue*/) {
187   - vm.search.filtro = newValue ? newValue : null;
188   - vm.$location.search('filtro', vm.search.filtro);
  191 + RankingPageController.prototype.resetFilterValues = function() {
  192 + var vm = this;
189 193  
190   - if (!vm.loadingFilter) {
191   - vm.filterProposals();
192   - }
193   - });
194   -};
  194 + vm.query = null;
  195 + vm.selectedTheme = null;
  196 + };
195 197  
196   -RankingPageController.prototype.resetFilterValues = function() {
197   - var vm = this;
  198 + RankingPageController.prototype.changePage = function(pageIndex) {
  199 + var vm = this;
198 200  
199   - vm.query = null;
200   - vm.selectedTheme = null;
201   -};
  201 + vm.page = pageIndex;
  202 + vm.filterProposals(pageIndex);
  203 + };
202 204  
203   -RankingPageController.prototype.changePage = function(pageIndex) {
204   - var vm = this;
  205 + RankingPageController.prototype.filterProposals = function(_page, _per_page) {
  206 + var vm = this;
205 207  
206   - vm.page = pageIndex;
207   - vm.filterProposals(pageIndex);
208   -};
  208 + if (vm.loadingProposals){
  209 + vm.$log.debug('Content is not loaded yet.');
  210 + return;
  211 + }
209 212  
210   -RankingPageController.prototype.filterProposals = function(_page, _per_page) {
211   - var vm = this;
  213 + var page = _page || vm.page;
  214 + var per_page = _per_page || vm.per_page;
  215 + var query = vm.query;
  216 + var selectedProgram = vm.selectedProgram;
  217 + var params = {
  218 + page: page,
  219 + per_page: per_page
  220 + };
  221 +
  222 + if (selectedProgram) {
  223 + params.parent_id = selectedProgram.id;
  224 + }
212 225  
213   - if (vm.loadingProposals){
214   - vm.$log.debug('Content is not loaded yet.');
215   - return;
216   - }
  226 + if (query) {params.query = query; }
217 227  
218   - var page = _page || vm.page;
219   - var per_page = _per_page || vm.per_page;
220   - var query = vm.query;
221   - var selectedProgram = vm.selectedProgram;
222   - var params = {
223   - page: page,
224   - per_page: per_page
  228 + vm.loadingProposals = true;
  229 + vm.DialogaService.searchProposals(params, function(data){
  230 + vm.total_proposals = parseInt(data._obj.headers('total'));
  231 + vm.filtredProposals = data.articles;
  232 + vm.loadingProposals = false;
  233 + }, function (error) {
  234 + vm.error = error;
  235 + vm.$log.error(error);
  236 + vm.loadingProposals = false;
  237 + });
225 238 };
226   -
227   - if (selectedProgram) {
228   - params.parent_id = selectedProgram.id;
229   - }
230   -
231   - if (query) {params.query = query; }
232   -
233   - vm.loadingProposals = true;
234   - vm.DialogaService.searchProposals(params, function(data){
235   - vm.total_proposals = parseInt(data._obj.headers('total'));
236   - vm.filtredProposals = data.articles;
237   - vm.loadingProposals = false;
238   - }, function (error) {
239   - vm.error = error;
240   - vm.$log.error(error);
241   - vm.loadingProposals = false;
242   - });
243   -};
244 239 })();
... ...