diff --git a/src/app/components/article-service/article.service.js b/src/app/components/article-service/article.service.js index 5f07308..a74667d 100644 --- a/src/app/components/article-service/article.service.js +++ b/src/app/components/article-service/article.service.js @@ -19,6 +19,7 @@ getTopics: getTopics, getTopicById: getTopicById, getProposals: getProposals, + getProposalById: getProposalById, getProposalsByTopicId: getProposalsByTopicId, getEvents: getEvents, subscribeToEvent: subscribeToEvent, @@ -108,26 +109,18 @@ // }); // - searchTopics(params, cbSuccess, cbError); + searchProposals({ + query: '' + }, cbSuccess, cbError); } - /** - * Ex.: /api/v1/articles/[article_id]/children?[params]content_type=ProposalsDiscussionPlugin::Proposal - * Ex.: /api/v1/articles/103644/children?limit=20&fields=id,name,slug,abstract,created_by&content_type=ProposalsDiscussionPlugin::Proposal - * - * @param {Integer} topicId topic where has those proposals - * @param {Object} params params for pagination ant others - * @param {Function} cbSuccess callback for success - * @param {Function} cbError callback for error - * @return {Array} [description] - */ - function getProposalsByTopicId (topicId, params, cbSuccess, cbError) { - var url = service.apiArticles + topicId + '/children'; + function getProposalById (proposalId, params, cbSuccess, cbError) { + var url = service.apiArticles + proposalId; var paramsExtended = angular.extend({ // 'fields[]': ['id', 'title', 'abstract', 'children', 'children_count', 'ranking_position', 'hits', 'votes_for', 'votes_against'], - // 'limit':'20', // 'per_page':'1', + 'limit':'1', 'content_type':'ProposalsDiscussionPlugin::Proposal' }, params); @@ -137,6 +130,21 @@ }).catch(function(error){ cbError(error); }); + + } + + /** + * Ex.: /api/v1/articles/[article_id]/children?[params]content_type=ProposalsDiscussionPlugin::Proposal + * Ex.: /api/v1/articles/103644/children?limit=20&fields=id,name,slug,abstract,created_by&content_type=ProposalsDiscussionPlugin::Proposal + * + * @param {Integer} topicId topic where has those proposals + * @param {Object} params params for pagination ant others + * @param {Function} cbSuccess callback for success + * @param {Function} cbError callback for error + * @return {Array} [description] + */ + function getProposalsByTopicId (topicId, params, cbSuccess, cbError) { + getProposalById(topicId + '/children', params, cbSuccess, cbError); } function getEvents (community_id, params, cbSuccess, cbError) { @@ -205,11 +213,12 @@ // Ex.: /api/v1/search/article?type=ProposalsDiscussionPlugin::Proposal&query=cisternas var url = '/api/v1/search/article'; var paramsExtended = angular.extend({ - 'fields[]': ['id', 'title', 'slug', 'abstract', 'categories', 'setting', 'children_count', 'hits'], + // 'fields[]': ['id', 'title', 'slug', 'abstract', 'categories', 'setting', 'children_count', 'hits'], 'type': 'ProposalsDiscussionPlugin::Proposal' }, params); UtilService.get(url, {params: paramsExtended}).then(function(data){ + _pipeInjectSlugIntoParentProgram(data); cbSuccess(data); }).catch(function(error){ cbError(error); @@ -217,6 +226,9 @@ } function _pipeInjectSlugIntoParentProgram(data){ + if(!data.articles && data.article){ + data.articles = [data.article]; + } var proposals = data.articles; for (var i = proposals.length - 1; i >= 0; i--) { var proposal = proposals[i]; diff --git a/src/app/components/proposal-box/proposal-box.directive.js b/src/app/components/proposal-box/proposal-box.directive.js index 85dd159..7b40e64 100644 --- a/src/app/components/proposal-box/proposal-box.directive.js +++ b/src/app/components/proposal-box/proposal-box.directive.js @@ -27,11 +27,12 @@ }; - ProposalBoxController.prototype.showContent2 = function (topic) { + ProposalBoxController.prototype.showContent = function (slug) { var vm = this; vm.$state.go('programa-conteudo', { - slug: topic.slug + slug: slug, + proposal_id: vm.proposal.id }, { location: true }); diff --git a/src/app/components/proposal-box/proposal-box.html b/src/app/components/proposal-box/proposal-box.html index 8f4cb96..0076118 100644 --- a/src/app/components/proposal-box/proposal-box.html +++ b/src/app/components/proposal-box/proposal-box.html @@ -5,10 +5,13 @@
-
+
{{::vm.proposal.abstract}}
-
- +
+
diff --git a/src/app/components/proposal-box/proposal-box.scss b/src/app/components/proposal-box/proposal-box.scss index 4253be3..2df4caf 100644 --- a/src/app/components/proposal-box/proposal-box.scss +++ b/src/app/components/proposal-box/proposal-box.scss @@ -2,6 +2,7 @@ background-color: #f1f1f1; border-radius: 5px; // overflow: hidden; + margin-bottom: 20px; &.focus { border: 7px solid #000; @@ -20,6 +21,14 @@ &--middle { padding: 30px; + min-height: 180px; + + // position: relative; + // .proposal-box--join { + // position: absolute; + // bottom: 10px; + // left: 30px; + // } } &--bottom { @@ -56,17 +65,27 @@ margin-top: 10px; } + .proposal-box--join { + .btn { + font-weight: bold; + } + } + + .action { + .glyphicon { + color: #fff; + } + } + .dropdown { display: inline-block; } + .dropdown-menu { padding: 0; margin: 0; } - .glyphicon { - color: #fff; - } .icon-circle { cursor: pointer; diff --git a/src/app/components/proposal-grid/proposal-grid.directive.js b/src/app/components/proposal-grid/proposal-grid.directive.js index 434f0dd..fc0effd 100644 --- a/src/app/components/proposal-grid/proposal-grid.directive.js +++ b/src/app/components/proposal-grid/proposal-grid.directive.js @@ -22,7 +22,6 @@ vm.$location = $location; vm.$filter = $filter; vm.$log = $log; - vm.defaultLimit = 6; // initialization vm.init(); @@ -30,8 +29,7 @@ } ProposalGridController.prototype.init = function() { - // var vm = this; - // vm.programs = null; // scope var + var vm = this; }; ProposalGridController.prototype.attachListeners = function() { diff --git a/src/app/index.route.js b/src/app/index.route.js index d5a1bfc..b4c6cca 100644 --- a/src/app/index.route.js +++ b/src/app/index.route.js @@ -88,7 +88,7 @@ } }) .state('programa-conteudo', { - url: '/programa/:slug', + url: '/programa/:slug?proposal_id', ncyBreadcrumb: { label: '{{$parent.$root.contentTitle}}', parent: 'programas' diff --git a/src/app/pages/programas/programa-content.controller.js b/src/app/pages/programas/programa-content.controller.js index a20faed..3f9eaf1 100644 --- a/src/app/pages/programas/programa-content.controller.js +++ b/src/app/pages/programas/programa-content.controller.js @@ -6,13 +6,14 @@ .controller('ProgramaContentPageController', ProgramaContentPageController); /** @ngInject */ - function ProgramaContentPageController(DialogaService, $state, $scope, $rootScope, $element, $log) { + function ProgramaContentPageController(DialogaService, $state, $location, $scope, $rootScope, $element, $log) { $log.debug('ProgramaContentPageController'); var vm = this; vm.DialogaService = DialogaService; vm.$state = $state; + vm.$location = $location; vm.$scope = $scope; vm.$rootScope = $rootScope; vm.$element = $element; @@ -28,6 +29,7 @@ vm.article = null; vm.category = null; + vm.search = vm.$location.search(); vm.error = false; }; @@ -68,15 +70,33 @@ vm.$log.error(error); }); - // get random proposal - vm.DialogaService.getProposalsByTopicId(vm.article.id, { - 'order': 'random()', - 'limit': '1' - }, function(data){ - vm.randomProposal = data.articles[0]; - }, function (error) { + if(vm.search.proposal_id){ + var proposalUrlId = vm.search.proposal_id; + vm.DialogaService.getProposalById(proposalUrlId, { + 'limit': '1' + }, _handleSuccessGetProposal, _handleErrorGetProposal); + + }else{ + // get random proposal + vm.DialogaService.getProposalsByTopicId(vm.article.id, { + 'order': 'random()', + 'limit': '1' + }, _handleSuccessGetProposal, _handleErrorGetProposal); + } + + function _handleSuccessGetProposal(data){ + if(data && data.articles){ + vm.randomProposal = data.articles[0]; + } + + if(data && data.article){ + vm.randomProposal = data.article; + } + } + + function _handleErrorGetProposal(error){ vm.$log.error(error); - }); + } vm.loading = false; }, function(error) { diff --git a/src/app/pages/programas/programa.html b/src/app/pages/programas/programa.html index 8e791b6..6c9b51c 100644 --- a/src/app/pages/programas/programa.html +++ b/src/app/pages/programas/programa.html @@ -64,7 +64,7 @@

Propostas nesse programa

- +

Programas sem propostas

diff --git a/src/app/pages/programas/programas.scss b/src/app/pages/programas/programas.scss index d1e7934..3ced87a 100644 --- a/src/app/pages/programas/programas.scss +++ b/src/app/pages/programas/programas.scss @@ -57,6 +57,10 @@ vertical-align: middle; } + .program-preview--abstract h2 { + font-size: 40px; + } + h2, h3{ font-weight: bold; diff --git a/src/app/pages/propostas/propostas.controller.js b/src/app/pages/propostas/propostas.controller.js index 6c2f52b..265c26f 100644 --- a/src/app/pages/propostas/propostas.controller.js +++ b/src/app/pages/propostas/propostas.controller.js @@ -11,33 +11,36 @@ .controller('PropostasPageController', PropostasPageController); /** @ngInject */ - function PropostasPageController(DialogaService, $log) { + function PropostasPageController(DialogaService, $scope, $location, $filter, $log) { var vm = this; vm.DialogaService = DialogaService; + vm.$scope = $scope; + vm.$location = $location; + vm.$filter = $filter; vm.$log = $log; vm.init(); + vm.loadData(); + vm.attachListeners(); + $log.debug('PropostasPageController'); } PropostasPageController.prototype.init = function () { var vm = this; - vm.article = null; vm.themes = null; vm.selectedTheme = null; vm.proposals = null; vm.filtredProposals = null; vm.query = null; + vm.search = vm.$location.search(); vm.loading = null; vm.error = null; - - vm.loadData(); }; - PropostasPageController.prototype.loadData = function () { var vm = this; @@ -49,10 +52,12 @@ vm.proposals = data.articles; vm.filtredProposals = vm.proposals; vm.loadingProposals = false; + vm.loading = false; }, function (error) { vm.error = error; vm.$log.error(error); vm.loadingProposals = false; + vm.loading = false; }); // load themes @@ -60,10 +65,40 @@ vm.DialogaService.getThemes(function(themes){ vm.themes = themes; vm.loadingThemes = false; + vm.loading = false; }, function (error) { vm.error = error; vm.$log.error(error); vm.loadingThemes = false; + vm.loading = false; }); }; + + PropostasPageController.prototype.attachListeners = function() { + var vm = this; + + vm.$scope.$on('change-selectedCategory', function (event, selectedCategory) { + vm.selectedTheme = selectedCategory; + vm.$log.debug('vm.selectedTheme', vm.selectedTheme); + }); + + vm.$scope.$watch('pagePropostas.selectedTheme', function(newValue/*, oldValue*/) { + vm.search.tema = newValue ? newValue.slug : null; + vm.$location.search('tema', vm.search.tema); + vm.filtredProposals = vm.getFiltredProposals(); + }); + + vm.$scope.$watch('pagePropostas.query', function(newValue/*, oldValue*/) { + vm.search.filtro = newValue ? newValue : null; + vm.$location.search('filtro', vm.search.filtro); + vm.filtredProposals = vm.getFiltredProposals(); + }); + }; + + PropostasPageController.prototype.getFiltredProposals = function() { + var vm = this; + + return vm.proposals; + }; + })(); diff --git a/src/app/pages/propostas/propostas.html b/src/app/pages/propostas/propostas.html index 98f1dbc..4c8783b 100644 --- a/src/app/pages/propostas/propostas.html +++ b/src/app/pages/propostas/propostas.html @@ -7,7 +7,26 @@
-