Commit 241f99d2ebb24c54a385d5292519a50eea927c6c
1 parent
2b6de365
Exists in
master
and in
5 other branches
Add toggle at 'respostas e compromissos' (program page)
Showing
5 changed files
with
104 additions
and
22 deletions
Show diff stats
src/app/components/article-service/article.service.js
| ... | ... | @@ -23,6 +23,7 @@ |
| 23 | 23 | getProposals: getProposals, |
| 24 | 24 | getProposalById: getProposalById, |
| 25 | 25 | getProposalsByTopicId: getProposalsByTopicId, |
| 26 | + getResponseByProposalId: getResponseByProposalId, | |
| 26 | 27 | createProposal: createProposal, |
| 27 | 28 | voteProposal: voteProposal, |
| 28 | 29 | getEvents: getEvents, |
| ... | ... | @@ -139,6 +140,13 @@ |
| 139 | 140 | getProposalById(topicId + '/children', params, cbSuccess, cbError); |
| 140 | 141 | } |
| 141 | 142 | |
| 143 | + function getResponseByProposalId (proposalId) { | |
| 144 | + var url = service.apiArticles + proposalId; | |
| 145 | + // var paramsExtended = {}; | |
| 146 | + | |
| 147 | + return UtilService.get(url); | |
| 148 | + } | |
| 149 | + | |
| 142 | 150 | function createProposal (proposal, targetId, categoryId, cbSuccess, cbError){ |
| 143 | 151 | |
| 144 | 152 | if(!$rootScope.currentUser){ | ... | ... |
src/app/components/dialoga-service/dialoga.service.js
| ... | ... | @@ -22,6 +22,7 @@ |
| 22 | 22 | extendedService.getProgramsByThemeId = getProgramsByThemeId; |
| 23 | 23 | extendedService.getProgramsRandom = getProgramsRandom; |
| 24 | 24 | extendedService.getEvents = getEvents; // override |
| 25 | + extendedService.getResponseByProposalId = getResponseByProposalId; | |
| 25 | 26 | extendedService.getQuestions = getQuestions; |
| 26 | 27 | extendedService.searchPrograms = searchPrograms; |
| 27 | 28 | extendedService.searchProposals = searchProposals; |
| ... | ... | @@ -212,6 +213,12 @@ |
| 212 | 213 | return ArticleService.getEvents(API.communityId, paramsExtended); |
| 213 | 214 | } |
| 214 | 215 | |
| 216 | + function getResponseByProposalId(/*proposalId*/){ | |
| 217 | + | |
| 218 | + return ArticleService.getResponseByProposalId(API.articleId.terms); | |
| 219 | + // return ArticleService.getResponseByProposalId(proposalId); | |
| 220 | + } | |
| 221 | + | |
| 215 | 222 | // TODO: implement |
| 216 | 223 | function getQuestions (cbSuccess/*, cbError*/) { |
| 217 | 224 | if( !!CACHE.questions ){ | ... | ... |
src/app/pages/programas/programa.controller.js
| ... | ... | @@ -286,6 +286,7 @@ |
| 286 | 286 | }; |
| 287 | 287 | |
| 288 | 288 | ProgramaPageController.prototype.toggleContentVisibility = function() { |
| 289 | + var vm = this; | |
| 289 | 290 | var $sectionContent = angular.element('.section-content'); |
| 290 | 291 | |
| 291 | 292 | if (!$sectionContent || $sectionContent.length === 0) { |
| ... | ... | @@ -300,4 +301,49 @@ |
| 300 | 301 | angular.element('html,body').animate({scrollTop: $sectionContent.offset().top}, 'fast'); |
| 301 | 302 | } |
| 302 | 303 | }; |
| 304 | + | |
| 305 | + ProgramaPageController.prototype.toggleResponseVisibility = function(proposal) { | |
| 306 | + var vm = this; | |
| 307 | + | |
| 308 | + if(!proposal){ | |
| 309 | + vm.$log.error('Error - proposal is:', proposal); | |
| 310 | + return; | |
| 311 | + } | |
| 312 | + | |
| 313 | + if(proposal.response){ | |
| 314 | + // show response | |
| 315 | + toggle(); | |
| 316 | + }else{ | |
| 317 | + | |
| 318 | + // load response | |
| 319 | + proposal.response = { | |
| 320 | + loading: true, | |
| 321 | + error: false, | |
| 322 | + content: null | |
| 323 | + }; | |
| 324 | + | |
| 325 | + vm.DialogaService.getResponseByProposalId(proposal.id) | |
| 326 | + .then(function(data){ | |
| 327 | + proposal.response.content = data.article.body; | |
| 328 | + toggle(); | |
| 329 | + }).catch(function(){ | |
| 330 | + proposal.response.error = false; | |
| 331 | + }).finally(function(){ | |
| 332 | + proposal.response.loading = false; | |
| 333 | + }); | |
| 334 | + } | |
| 335 | + | |
| 336 | + function toggle () { | |
| 337 | + var $el = angular.element('.gov-response-' + proposal.id); | |
| 338 | + | |
| 339 | + if ($el.is(':visible')) { | |
| 340 | + $el.slideUp(); | |
| 341 | + }else { | |
| 342 | + $el.slideDown(100, function(){ | |
| 343 | + angular.element('html,body').animate({scrollTop: $el.offset().top}, 'fast'); | |
| 344 | + }); | |
| 345 | + } | |
| 346 | + } | |
| 347 | + }; | |
| 348 | + | |
| 303 | 349 | })(); | ... | ... |
src/app/pages/programas/programa.html
| ... | ... | @@ -32,7 +32,7 @@ |
| 32 | 32 | <div ng-if="pagePrograma.article.archived" class="img-mask--background"> |
| 33 | 33 | <div class="icon icon-programa-respondido"> |
| 34 | 34 | <div class="icon-circle"> |
| 35 | - <span class="glyphicon glyphicon-ok" aria-hidden="true"></span> | |
| 35 | + <span class="glyphicon glyphicon-ok" aria-hidden="true"></span> | |
| 36 | 36 | </div> |
| 37 | 37 | </div> |
| 38 | 38 | </div> |
| ... | ... | @@ -220,34 +220,51 @@ |
| 220 | 220 | </div> |
| 221 | 221 | </div> |
| 222 | 222 | <div ng-if="pagePrograma.proposalsTopRated"> |
| 223 | - <div class="sub-section" ng-repeat="proposal in pagePrograma.proposalsTopRated"> | |
| 224 | - <div class="container"> | |
| 225 | - <div class="row"> | |
| 226 | - <div class="col-sm-4 col-md-3"> | |
| 227 | - <div class="img-mask--container" ng-style="{'background-image':'url( {{::pagePrograma.banner.src}} )'}"> | |
| 228 | - <div class="img-mask--background"> | |
| 229 | - <div class="icon icon-programa-respondido"> | |
| 230 | - <div class="icon-circle"> | |
| 231 | - <span class="glyphicon glyphicon-ok" aria-hidden="true"></span> | |
| 223 | + <div ng-repeat="proposal in pagePrograma.proposalsTopRated"> | |
| 224 | + <div class="sub-section"> | |
| 225 | + <div class="container"> | |
| 226 | + <div class="row"> | |
| 227 | + <div class="col-sm-4 col-md-3"> | |
| 228 | + <div class="img-mask--container" ng-style="{'background-image':'url( {{::pagePrograma.banner.src}} )'}"> | |
| 229 | + <div class="img-mask--background"> | |
| 230 | + <div class="icon icon-programa-respondido"> | |
| 231 | + <div class="icon-circle"> | |
| 232 | + <span class="glyphicon glyphicon-ok" aria-hidden="true"></span> | |
| 233 | + </div> | |
| 232 | 234 | </div> |
| 233 | 235 | </div> |
| 234 | 236 | </div> |
| 235 | 237 | </div> |
| 238 | + <div class="col-sm-8 col-md-9"> | |
| 239 | + <br> | |
| 240 | + <h3 class="color-theme-fg">{{($index+1)}}a proposta mais votada:</h3> | |
| 241 | + <p>{{::proposal.abstract}}</p> | |
| 242 | + <div class="button--themed"> | |
| 243 | + <button class="btn btn-block" ng-click="pagePrograma.toggleResponseVisibility(proposal)"> | |
| 244 | + Veja a resposta e o compromisso do governo | |
| 245 | + <div class="button-left-icon"> | |
| 246 | + <span class="glyphicon glyphicon-chevron-down pull-right color-theme-common-fg" aria-hidden="true"></span> | |
| 247 | + </div> | |
| 248 | + </button> | |
| 249 | + </div> | |
| 250 | + <br> | |
| 251 | + </div> | |
| 236 | 252 | </div> |
| 237 | - <div class="col-sm-8 col-md-9"> | |
| 238 | - <br> | |
| 239 | - <h3 class="color-theme-fg">{{($index+1)}}a proposta mais votada:</h3> | |
| 240 | - <p>{{::proposal.abstract}}</p> | |
| 241 | - | |
| 242 | - <div class="button--themed"> | |
| 243 | - <button class="btn btn-block"> | |
| 244 | - Veja a resposta e o compromisso do governo | |
| 245 | - <div class="button-left-icon"> | |
| 246 | - <span class="glyphicon glyphicon-chevron-down pull-right color-theme-common-fg" aria-hidden="true"></span> | |
| 253 | + </div> | |
| 254 | + </div> | |
| 255 | + <div ng-if="proposal.response" class="gov-response gov-response-{{::proposal.id}}" style="display:none;"> | |
| 256 | + <div class="container"> | |
| 257 | + <div class="row"> | |
| 258 | + <div class="col-sm-12"> | |
| 259 | + <div ng-if="proposal.response.loading" class="alert alert-info" role="alert">Carregando a resposta e compromisso do governo.</div> | |
| 260 | + <div ng-if="proposal.response.error" class="alert alert-warning" role="alert">Erro ao carregar a resposta e compromisso. Tente novamente ou <a ui-sref="duvidas">entre em contato</a>.</div> | |
| 261 | + <div ng-if="proposal.response.content"> | |
| 262 | + <h3 class="color-theme-fg">Compromissos:</h3> | |
| 263 | + <div class="gov-response--content"> | |
| 264 | + <div ng-bind-html="proposal.response.content"></div> | |
| 247 | 265 | </div> |
| 248 | - </button> | |
| 266 | + </div> | |
| 249 | 267 | </div> |
| 250 | - <br> | |
| 251 | 268 | </div> |
| 252 | 269 | </div> |
| 253 | 270 | </div> | ... | ... |