From fbf441895614088c7fd63f60689eb6c862cdbf8a Mon Sep 17 00:00:00 2001 From: Leonardo Merlin Date: Thu, 10 Sep 2015 20:27:16 -0300 Subject: [PATCH] Add loading state to proposal-box vote --- src/app/components/article-service/article.service.js | 2 +- src/app/components/proposal-box/proposal-box.directive.js | 51 ++++++++++++++++++++++++++++++++++++++++++++++----- src/app/components/proposal-box/proposal-box.html | 111 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------- src/app/components/proposal-box/proposal-box.scss | 26 ++++++++++++++++++++++++++ src/app/index.constants.js | 5 +++++ src/app/pages/programas/programa.html | 4 ++-- 6 files changed, 142 insertions(+), 57 deletions(-) diff --git a/src/app/components/article-service/article.service.js b/src/app/components/article-service/article.service.js index 6ea6745..de20aca 100644 --- a/src/app/components/article-service/article.service.js +++ b/src/app/components/article-service/article.service.js @@ -178,7 +178,7 @@ var url = service.apiCommunities + community_id + '/articles'; var paramsExtended = angular.extend({ - // 'fields[]': ['id', 'slug', 'title', 'abstract', 'body', 'categories', 'created_at', 'start_date', 'end_date', 'hits'], + // 'fields[]': ['id', 'title', 'abstract', 'body', 'categories', 'created_at', 'start_date', 'end_date', 'followers_count', 'image', 'url'], 'content_type':'Event' }, params); diff --git a/src/app/components/proposal-box/proposal-box.directive.js b/src/app/components/proposal-box/proposal-box.directive.js index dee3f71..797e642 100644 --- a/src/app/components/proposal-box/proposal-box.directive.js +++ b/src/app/components/proposal-box/proposal-box.directive.js @@ -9,23 +9,40 @@ function proposalBox() { /** @ngInject */ - function ProposalBoxController($state, $log) { + function ProposalBoxController($scope, $state, STATUS_VOTE, $log) { $log.debug('ProposalBoxController'); var vm = this; + vm.$scope = $scope; vm.$state = $state; vm.$log = $log; + vm.STATUS_VOTE = STATUS_VOTE; - vm.init($log); + vm.init(); + vm.addListeners(); } ProposalBoxController.prototype.init = function () { var vm = this; - if (!vm.vote) { vm.vote = false; } - if (!vm.focus) { vm.focus = false; } + vm.canVote = vm.canVote || false; + vm.focus = vm.focus || false; + vm.STATE = null; + }; + + ProposalBoxController.prototype.addListeners = function () { + var vm = this; + + vm.$scope.$on('proposal-vote:success', function(e, data){ + vm.STATE = vm.STATUS_VOTE.SUCCESS; + vm.message = data.message; + }); + vm.$scope.$on('proposal-vote:error', function(e, data){ + vm.STATE = vm.STATUS_VOTE.ERROR; + vm.message = data.message; + }); }; ProposalBoxController.prototype.showContent = function (slug) { @@ -39,6 +56,30 @@ }); }; + ProposalBoxController.prototype.voteUp = function () { + var vm = this; + + vm.STATE = vm.STATUS_VOTE.LOADING; + vm.$scope.$emit('proposal-vote:voteUp', vm.proposal.id); + vm.$log.debug('Sending vote'); + }; + + ProposalBoxController.prototype.voteDown = function () { + var vm = this; + + vm.STATE = vm.STATUS_VOTE.LOADING; + vm.$scope.$emit('proposal-vote:voteDown', vm.proposal.id); + vm.$log.debug('Sending vote'); + }; + + ProposalBoxController.prototype.next = function () { + var vm = this; + + vm.STATE = vm.STATUS_VOTE.LOADING; + vm.$scope.$emit('proposal-vote:next', vm.proposal.id); + vm.$log.debug('Sending vote'); + }; + var directive = { restrict: 'E', templateUrl: 'app/components/proposal-box/proposal-box.html', @@ -46,7 +87,7 @@ proposal: '=', topic: '=', category: '=', - vote: '=', + canVote: '=', focus: '@' // @ -> Text binding / one-way binding // = -> Direct model binding / two-way binding diff --git a/src/app/components/proposal-box/proposal-box.html b/src/app/components/proposal-box/proposal-box.html index e75f177..6edb85d 100644 --- a/src/app/components/proposal-box/proposal-box.html +++ b/src/app/components/proposal-box/proposal-box.html @@ -1,61 +1,74 @@ -
-
-
{{::vm.category.name}}
-
{{::vm.topic.title}}
+
+
+ FEEDBACK
-
-
-
{{::vm.proposal.abstract}}
-
-
- -
-
-
-
-
-
- -
-
Apoio
+
+
+
+
+
+ Carregando...
-
-