Commit 2bd5114e115418e4ca64920887afb6c58c35997c
Exists in
master
and in
8 other branches
Merge branch 'merlin' into rafael
Showing
16 changed files
with
522 additions
and
126 deletions
Show diff stats
src/app/components/article-service/article.service.js
@@ -96,8 +96,8 @@ | @@ -96,8 +96,8 @@ | ||
96 | var url = service.apiArticles + API.articleId.home; | 96 | var url = service.apiArticles + API.articleId.home; |
97 | 97 | ||
98 | var paramsExtended = angular.extend({ | 98 | var paramsExtended = angular.extend({ |
99 | - 'fields[]': ['id', 'title', 'slug', 'abstract', 'categories', 'setting', 'children_count', 'hits'], | ||
100 | - 'content_type':'ProposalsDiscussionPlugin::Proposals' | 99 | + // 'fields[]': ['id', 'title', 'slug', 'abstract', 'categories', 'setting', 'children', 'children_count'], |
100 | + 'content_type':'ProposalsDiscussionPlugin::Proposal' | ||
101 | }, params); | 101 | }, params); |
102 | 102 | ||
103 | UtilService.get(url, {params: paramsExtended}).then(function(data){ | 103 | UtilService.get(url, {params: paramsExtended}).then(function(data){ |
src/app/components/proposal-grid/proposal-grid.directive.js
0 → 100644
@@ -0,0 +1,54 @@ | @@ -0,0 +1,54 @@ | ||
1 | +(function() { | ||
2 | + 'use strict'; | ||
3 | + | ||
4 | + angular | ||
5 | + .module('dialoga') | ||
6 | + .directive('proposalGrid', proposalGrid); | ||
7 | + | ||
8 | + /** @ngInject */ | ||
9 | + function proposalGrid() { | ||
10 | + | ||
11 | + /** @ngInject */ | ||
12 | + function ProposalGridController($scope, $rootScope, $element, $location, $filter, $log) { | ||
13 | + $log.debug('ProposalGridController'); | ||
14 | + | ||
15 | + // alias | ||
16 | + var vm = this; | ||
17 | + | ||
18 | + // dependencies | ||
19 | + vm.$scope = $scope; | ||
20 | + vm.$rootScope = $rootScope; | ||
21 | + vm.$element = $element; | ||
22 | + vm.$location = $location; | ||
23 | + vm.$filter = $filter; | ||
24 | + vm.$log = $log; | ||
25 | + vm.defaultLimit = 6; | ||
26 | + | ||
27 | + // initialization | ||
28 | + vm.init(); | ||
29 | + vm.attachListeners(); | ||
30 | + } | ||
31 | + | ||
32 | + ProposalGridController.prototype.init = function() { | ||
33 | + // var vm = this; | ||
34 | + // vm.programs = null; // scope var | ||
35 | + }; | ||
36 | + | ||
37 | + ProposalGridController.prototype.attachListeners = function() { | ||
38 | + // var vm = this; | ||
39 | + }; | ||
40 | + | ||
41 | + var directive = { | ||
42 | + restrict: 'E', | ||
43 | + templateUrl: 'app/components/proposal-grid/proposal-grid.html', | ||
44 | + scope: { | ||
45 | + proposals: '=' | ||
46 | + }, | ||
47 | + controller: ProposalGridController, | ||
48 | + controllerAs: 'vm', | ||
49 | + bindToController: true | ||
50 | + }; | ||
51 | + | ||
52 | + return directive; | ||
53 | + } | ||
54 | +})(); |
@@ -0,0 +1,9 @@ | @@ -0,0 +1,9 @@ | ||
1 | +<div class="proposal-grid row"> | ||
2 | + <div ng-repeat="proposal in vm.proposals as results"> | ||
3 | + <proposal-box proposal="proposal" category="proposal.categories[0]" class="col-xs-12 col-sm-6"></proposal-box> | ||
4 | + <div ng-if="$odd" class="clearfix"></div> | ||
5 | + </div> | ||
6 | + <div class="animate-repeat" ng-if="results.length == 0"> | ||
7 | + Nenhum programa encontrado. | ||
8 | + </div> | ||
9 | +</div> |
src/app/components/proposal-list/proposal-list.directive.js
@@ -46,7 +46,7 @@ | @@ -46,7 +46,7 @@ | ||
46 | // requeue to wait until DOM be created | 46 | // requeue to wait until DOM be created |
47 | vm.$timeout(function(){ | 47 | vm.$timeout(function(){ |
48 | attachPopover.call(vm); | 48 | attachPopover.call(vm); |
49 | - }, 100); | 49 | + }, 1000); |
50 | }; | 50 | }; |
51 | 51 | ||
52 | function attachPopover(){ | 52 | function attachPopover(){ |
src/app/components/proposal-list/proposal-list.html
@@ -9,8 +9,7 @@ | @@ -9,8 +9,7 @@ | ||
9 | <tr> | 9 | <tr> |
10 | <th> | 10 | <th> |
11 | Colocação | 11 | Colocação |
12 | - <!-- <button type="button" class="btn btn-link btn-question">?</button> --> | ||
13 | - <a tabindex="0" class="btn btn-link btn-questionr" role="button" data-toggle="popover" data-trigger="focus">?</a> | 12 | + <a tabindex="0" class="btn btn-link btn-question" role="button" data-toggle="popover" data-trigger="focus">?</a> |
14 | </th> | 13 | </th> |
15 | <th>123 PROPOSTAS</th> | 14 | <th>123 PROPOSTAS</th> |
16 | </tr> | 15 | </tr> |
src/app/index.route.js
@@ -130,6 +130,19 @@ | @@ -130,6 +130,19 @@ | ||
130 | 'footer': { templateUrl: 'app/pages/footer/footer.html' } | 130 | 'footer': { templateUrl: 'app/pages/footer/footer.html' } |
131 | } | 131 | } |
132 | }) | 132 | }) |
133 | + .state('ranking', { | ||
134 | + url: '/ranking', | ||
135 | + ncyBreadcrumb: {label: 'Propostas'}, | ||
136 | + views: { | ||
137 | + 'header': { templateUrl: 'app/pages/header/header.html' }, | ||
138 | + 'main': { | ||
139 | + templateUrl: 'app/pages/propostas/ranking.html', | ||
140 | + controller: 'PropostasPageController', | ||
141 | + controllerAs: 'pageRanking' | ||
142 | + }, | ||
143 | + 'footer': { templateUrl: 'app/pages/footer/footer.html' } | ||
144 | + } | ||
145 | + }) | ||
133 | // apenas para teste do cadastro das propostas | 146 | // apenas para teste do cadastro das propostas |
134 | .state('cadastro-propostas', { | 147 | .state('cadastro-propostas', { |
135 | url: '/cadastro-propostas', | 148 | url: '/cadastro-propostas', |
src/app/index.scss
@@ -47,6 +47,29 @@ body { | @@ -47,6 +47,29 @@ body { | ||
47 | } | 47 | } |
48 | } | 48 | } |
49 | 49 | ||
50 | +// Form | ||
51 | +.input-group-search { | ||
52 | + .icon-circle { | ||
53 | + color: #fff; | ||
54 | + padding: 5px; | ||
55 | + margin-top: -5px; | ||
56 | + } | ||
57 | + button { | ||
58 | + border-left: none; | ||
59 | + } | ||
60 | +} | ||
61 | + | ||
62 | +// Header | ||
63 | +.header { | ||
64 | + position: relative; | ||
65 | + | ||
66 | + button { | ||
67 | + position: absolute; | ||
68 | + right: 0; | ||
69 | + top: 2px; | ||
70 | + } | ||
71 | +} | ||
72 | + | ||
50 | // Commons | 73 | // Commons |
51 | .button--themed { | 74 | .button--themed { |
52 | // padding: 20px; | 75 | // padding: 20px; |
src/app/pages/programas/programa.controller.js
@@ -1,44 +0,0 @@ | @@ -1,44 +0,0 @@ | ||
1 | -(function() { | ||
2 | - 'use strict'; | ||
3 | - | ||
4 | - angular | ||
5 | - .module('dialoga') | ||
6 | - .controller('ProgramasPageController', ProgramasPageController); | ||
7 | - | ||
8 | - /** @ngInject */ | ||
9 | - function ProgramasPageController(DialogaService, $log) { | ||
10 | - $log.debug('ProgramasPageController'); | ||
11 | - | ||
12 | - var vm = this; | ||
13 | - | ||
14 | - vm.DialogaService = DialogaService; | ||
15 | - vm.$log = $log; | ||
16 | - | ||
17 | - vm.init(); | ||
18 | - } | ||
19 | - | ||
20 | - ProgramasPageController.prototype.init = function () { | ||
21 | - var vm = this; | ||
22 | - | ||
23 | - vm.article = null; | ||
24 | - vm.categories = null; | ||
25 | - vm.currentCategory = null; | ||
26 | - | ||
27 | - vm.loading = true; | ||
28 | - vm.error = false; | ||
29 | - | ||
30 | - vm.loadData(); | ||
31 | - }; | ||
32 | - | ||
33 | - | ||
34 | - ProgramasPageController.prototype.loadData = function () { | ||
35 | - var vm = this; | ||
36 | - | ||
37 | - vm.DialogaService.getTemas(function(temas){ | ||
38 | - vm.categories = temas; | ||
39 | - }, function (error) { | ||
40 | - vm.error = error; | ||
41 | - vm.$log.error(error); | ||
42 | - }); | ||
43 | - }; | ||
44 | -})(); |
src/app/pages/programas/programa.controller.spec.js
@@ -1,52 +0,0 @@ | @@ -1,52 +0,0 @@ | ||
1 | -(function() { | ||
2 | - 'use strict'; | ||
3 | - | ||
4 | - describe('Controller: ProgramaPageController', function(){ | ||
5 | - var $rootScope, $scope, $location, $controller, httpBackend, programaPageController; | ||
6 | - var ENDPOINT_ARTICLE_HOME = 'http://login.dialoga.gov.br/api/v1/articles/103358?fields=id,children,categories,abstract,title,image,url,setting,position&private_token=null'; | ||
7 | - | ||
8 | - beforeEach(module('dialoga')); | ||
9 | - beforeEach( inject(function(_$rootScope_, _$controller_, _$location_, $httpBackend) { | ||
10 | - $rootScope = _$rootScope_; | ||
11 | - $controller = _$controller_; | ||
12 | - $location = _$location_; | ||
13 | - $scope = $rootScope.$new(); | ||
14 | - httpBackend = $httpBackend; | ||
15 | - | ||
16 | - programaPageController = $controller('ProgramaPageController', { | ||
17 | - '$rootScope': $rootScope, | ||
18 | - '$scope': $scope | ||
19 | - }); | ||
20 | - | ||
21 | - httpBackend.whenGET(ENDPOINT_ARTICLE_HOME).respond({ | ||
22 | - 'article':{'id':103358,'abstract':'\u003Cp style=\"text-align: center;\"\u003E\u003Ciframe src=\"https://www.youtube.com/embed/kpAdrO-emV0?rel=0\u0026amp;showinfo=0\u0026amp;iv_load_policy=3\u0026amp;controls=1\" style=\"max-width: 1000px; left: 5%;\" width=\"275\" height=\"200\"\u003E\u003C/iframe\u003E\u003C/p\u003E','title':'Dialoga Brasil','categories':[{'name':'Sa\u00fade','id':180,'slug':'saude','image':null},{'name':'Seguran\u00e7a P\u00fablica','id':182,'slug':'seguranca-publica','image':null},{'name':'Educa\u00e7\u00e3o','id':181,'slug':'educacao','image':null},{'name':'Redu\u00e7\u00e3o da Pobreza','id':183,'slug':'reducao-da-pobreza','image':null}],'image':null,'setting':{'custom_body_label':'Corpo','phase':'proposals','allow_topics':true,'moderate_comments':false,'comment_paragraph_plugin_activate':false,'author_name':'Leandro Nunes dos Santos','moderate_proposals':true,'allow_members_to_edit':false},'position':null,'children':[{'id':103644,'abstract':'\u003Cp\u003EUm caminho de oportunidades com o Enem: Sisu, Prouni, Fies, Ci\u00eancia sem Fronteiras\u003C/p\u003E','title':'Ensino Superior','categories':[{'name':'Educa\u00e7\u00e3o','id':181,'slug':'educacao','image':null}],'image':{'url':'/image_uploads/dialoga/0000/0128/enem.jpg'},'setting':{'color':'#cfe2f3','moderate_comments':false,'comment_paragraph_plugin_activate':false,'author_name':'Ronald Emerson Scherolt da Costa','allow_members_to_edit':false},'position':9},{'id':103673,'abstract':'\u003Cp\u003EA melhor escolha \u00e9 se informar.\u003C/p\u003E','title':'Incentivo ao Parto Normal','categories':[{'name':'Sa\u00fade','id':180,'slug':'saude','image':null}],'image':{'url':'/image_uploads/dialoga/0000/0092/parto-normal.jpg'},'setting':{'color':'#ff0000','moderate_comments':false,'comment_paragraph_plugin_activate':false,'author_name':'Ronald Emerson Scherolt da Costa','allow_members_to_edit':false},'position':6},{'id':103397,'abstract':'\u003Cp\u003ERenda, inclus\u00e3o produtiva e acesso a servi\u00e7os.\u003C/p\u003E','title':'Brasil Sem Mis\u00e9ria','categories':[{'name':'Redu\u00e7\u00e3o da Pobreza','id':183,'slug':'reducao-da-pobreza','image':null}],'image':{'url':'/image_uploads/dialoga/0000/0116/bsm_redim.jpg'},'setting':{'color':'','moderate_comments':false,'comment_paragraph_plugin_activate':false,'author_name':'Ronald Emerson Scherolt da Costa','allow_members_to_edit':false},'position':18},{'id':103379,'abstract':'\u003Cp\u003EResgate e atendimento 24 horas, sete dias da semana.\u003C/p\u003E','title':'SAMU 192 e UPAs','categories':[{'name':'Sa\u00fade','id':180,'slug':'saude','image':null}],'image':{'url':'/image_uploads/dialoga/0000/0060/SAMU.jpg'},'setting':{'color':'#45818e','moderate_comments':false,'comment_paragraph_plugin_activate':false,'author_name':'Ronald Emerson Scherolt da Costa','allow_members_to_edit':false},'position':4},{'id':103521,'abstract':'\u003Cp\u003EMais atendimento nos munic\u00edpios, mais sa\u00fade para quem mais precisa.\u003C/p\u003E','title':'Mais M\u00e9dicos','categories':[{'name':'Sa\u00fade','id':180,'slug':'saude','image':null}],'image':{'url':'/image_uploads/dialoga/0000/0025/Mais_M_dicos.jpg'},'setting':{'color':'#ffe599','moderate_comments':false,'comment_paragraph_plugin_activate':false,'author_name':'Ronald Emerson Scherolt da Costa','allow_members_to_edit':false},'position':1},{'id':103390,'abstract':'\u003Cp\u003EPreven\u00e7\u00e3o, tratamento e enfrentamento ao tr\u00e1fico.\u003C/p\u003E','title':'Crack, \u00e9 poss\u00edvel vencer!','categories':[{'name':'Seguran\u00e7a P\u00fablica','id':182,'slug':'seguranca-publica','image':null}],'image':{'url':'/image_uploads/dialoga/0000/0104/crack.jpg'},'setting':{'color':'#00ff00','moderate_comments':false,'comment_paragraph_plugin_activate':false,'author_name':'Ronald Emerson Scherolt da Costa','allow_members_to_edit':false},'position':14},{'id':103592,'abstract':'\u003Cp\u003EGarantir acesso \u00e0 prote\u00e7\u00e3o social.\u003C/p\u003E','title':'Assist\u00eancia Social','categories':[{'name':'Redu\u00e7\u00e3o da Pobreza','id':183,'slug':'reducao-da-pobreza','image':null}],'image':{'url':'/image_uploads/dialoga/0000/0122/assistencia_social.jpg'},'setting':{'color':'#a61c00','moderate_comments':false,'comment_paragraph_plugin_activate':false,'author_name':'Ronald Emerson Scherolt da Costa','allow_members_to_edit':false},'position':19},{'id':103426,'abstract':'\u003Cp\u003EDa sa\u00fade se cuida todos os dias.\u003C/p\u003E','title':'Vida saud\u00e1vel','categories':[{'name':'Sa\u00fade','id':180,'slug':'saude','image':null}],'image':{'url':'/image_uploads/dialoga/0000/0046/vida_saudavel.jpg'},'setting':{'color':'#d9d2e9','moderate_comments':false,'comment_paragraph_plugin_activate':false,'author_name':'Ronald Emerson Scherolt da Costa','allow_members_to_edit':false},'position':7},{'id':103695,'abstract':'\u003Cp\u003ENovo modelo de atua\u00e7\u00e3o em Seguran\u00e7a P\u00fablica.\u003C/p\u003E','title':'Seguran\u00e7a P\u00fablica Integrada','categories':[{'name':'Seguran\u00e7a P\u00fablica','id':182,'slug':'seguranca-publica','image':null}],'image':{'url':'/image_uploads/dialoga/0000/0152/policiaintegrada.jpg'},'setting':{'color':'#ff00ff','moderate_comments':false,'comment_paragraph_plugin_activate':false,'author_name':'Ronald Emerson Scherolt da Costa','allow_members_to_edit':false},'position':13},{'id':103663,'abstract':'\u003Cp\u003EMais educa\u00e7\u00e3o profissional e tecnol\u00f3gica, mais desenvolvimento\u003C/p\u003E','title':'Ensino T\u00e9cnico','categories':[{'name':'Educa\u00e7\u00e3o','id':181,'slug':'educacao','image':null}],'image':{'url':'/image_uploads/dialoga/0000/0134/Ensino_tecnico.jpg'},'setting':{'color':'#d0e0e3','moderate_comments':false,'comment_paragraph_plugin_activate':false,'author_name':'Ronald Emerson Scherolt da Costa','allow_members_to_edit':false},'position':10},{'id':103472,'abstract':'\u003Cp\u003EPol\u00edcia Federal, Pol\u00edcia Rodovi\u00e1ria Federal e For\u00e7a Nacional de Seguran\u00e7a P\u00fablica.\u003C/p\u003E','title':'For\u00e7as Federais de Seguran\u00e7a','categories':[{'name':'Seguran\u00e7a P\u00fablica','id':182,'slug':'seguranca-publica','image':null}],'image':{'url':'/image_uploads/dialoga/0000/0031/federais2.png'},'setting':{'color':'','moderate_comments':false,'comment_paragraph_plugin_activate':false,'author_name':'Ronald Emerson Scherolt da Costa','allow_members_to_edit':false},'position':16},{'id':103612,'abstract':'\u003Cp\u003EGarantir \u00e1gua para beber e produzir.\u003C/p\u003E','title':'Cisternas','categories':[{'name':'Redu\u00e7\u00e3o da Pobreza','id':183,'slug':'reducao-da-pobreza','image':null}],'image':{'url':'/image_uploads/dialoga/0000/0039/cisterna_redim.jpg'},'setting':{'color':'#0000ff','moderate_comments':false,'comment_paragraph_plugin_activate':false,'author_name':'Ronald Emerson Scherolt da Costa','allow_members_to_edit':false},'position':20},{'id':103442,'abstract':'\u003Cp\u003EComplemento \u00e0 renda e acompanhamento em educa\u00e7\u00e3o e sa\u00fade.\u003C/p\u003E','title':'Bolsa Fam\u00edlia','categories':[{'name':'Redu\u00e7\u00e3o da Pobreza','id':183,'slug':'reducao-da-pobreza','image':null}],'image':{'url':'/image_uploads/dialoga/0000/0013/bolsa_familia_redim.jpg'},'setting':{'color':'#ff9900','moderate_comments':false,'comment_paragraph_plugin_activate':false,'author_name':'Ronald Emerson Scherolt da Costa','allow_members_to_edit':false},'position':17},{'id':103507,'abstract':'\u003Cp\u003ETecnologia a servi\u00e7o da seguran\u00e7a do cidad\u00e3o.\u003C/p\u003E','title':'Sinesp','categories':[{'name':'Seguran\u00e7a P\u00fablica','id':182,'slug':'seguranca-publica','image':null}],'image':{'url':'/image_uploads/dialoga/0000/0098/sinesp.png'},'setting':{'color':'#00ff00','moderate_comments':false,'comment_paragraph_plugin_activate':false,'author_name':'Ronald Emerson Scherolt da Costa','allow_members_to_edit':false},'position':12},{'id':103683,'abstract':'\u003Cp\u003ESa\u00fade n\u00e3o tem pre\u00e7o.\u003C/p\u003E','title':'Aqui tem Farm\u00e1cia Popular','categories':[{'name':'Sa\u00fade','id':180,'slug':'saude','image':null}],'image':{'url':'/image_uploads/dialoga/0000/0019/saude_nao_tem_preco.jpg'},'setting':{'color':'#e69138','moderate_comments':false,'comment_paragraph_plugin_activate':false,'author_name':'Ronald Emerson Scherolt da Costa','allow_members_to_edit':false},'position':5},{'id':103457,'abstract':'\u003Cp\u003EA\u00e7\u00e3o conjunta e coopera\u00e7\u00e3o transfronteiri\u00e7a.\u003C/p\u003E','title':'Prote\u00e7\u00e3o das Fronteiras','categories':[{'name':'Seguran\u00e7a P\u00fablica','id':182,'slug':'seguranca-publica','image':null}],'image':{'url':'/image_uploads/dialoga/0000/0110/fronteira_redim.jpg'},'setting':{'color':'#a64d79','moderate_comments':false,'comment_paragraph_plugin_activate':false,'author_name':'Ronald Emerson Scherolt da Costa','allow_members_to_edit':false},'position':15},{'id':103494,'abstract':'\u003Cp\u003EDa Educa\u00e7\u00e3o Infantil ao Ensino M\u00e9dio.\u003C/p\u003E','title':'Educa\u00e7\u00e3o B\u00e1sica','categories':[{'name':'Educa\u00e7\u00e3o','id':181,'slug':'educacao','image':null}],'image':{'url':'/image_uploads/dialoga/0000/0076/Educa__o_B_sica.jpg'},'setting':{'color':'#fce5cd','moderate_comments':false,'comment_paragraph_plugin_activate':false,'author_name':'Ronald Emerson Scherolt da Costa','allow_members_to_edit':false},'position':8},{'id':103359,'abstract':'\u003Cp\u003EAcesso a exames e consultas com especialistas.\u003C/p\u003E','title':'Mais Especialidades','categories':[{'name':'Sa\u00fade','id':180,'slug':'saude','image':null}],'image':{'url':'/image_uploads/dialoga/0000/0083/mais_especialidades1.png'},'setting':{'color':'#ea9999','moderate_comments':false,'comment_paragraph_plugin_activate':false,'author_name':'Ronald Emerson Scherolt da Costa','allow_members_to_edit':false},'position':2},{'id':103485,'abstract':'\u003Cp\u003ECaminho para uma educa\u00e7\u00e3o de qualidade.\u003C/p\u003E','title':'Valoriza\u00e7\u00e3o dos Professores','categories':[{'name':'Educa\u00e7\u00e3o','id':181,'slug':'educacao','image':null}],'image':{'url':'/image_uploads/dialoga/0000/0140/valorizacao_professor.jpg'},'setting':{'color':'#ffff00','moderate_comments':false,'comment_paragraph_plugin_activate':false,'author_name':'Ronald Emerson Scherolt da Costa','allow_members_to_edit':false},'position':11},{'id':103416,'abstract':'\u003Cp\u003EEstrutura adequada para atender melhor a popula\u00e7\u00e3o na aten\u00e7\u00e3o b\u00e1sica.\u003C/p\u003E','title':'Melhorar os Postos de Sa\u00fade','categories':[{'name':'Sa\u00fade','id':180,'slug':'saude','image':null}],'image':{'url':'/image_uploads/dialoga/0000/0053/requalif_redim.jpg'},'setting':{'color':'#cc4125','moderate_comments':false,'comment_paragraph_plugin_activate':false,'author_name':'Ronald Emerson Scherolt da Costa','allow_members_to_edit':false},'position':3}]} | ||
23 | - }); | ||
24 | - })); | ||
25 | - | ||
26 | - it('should have a ProgramaPageController controller', function () { | ||
27 | - // console.log('programaPageController', programaPageController); | ||
28 | - | ||
29 | - // expect current path to equal '/programa/:slug' | ||
30 | - $location.path('/programa/bolsa-familia'); | ||
31 | - $rootScope.$apply(); | ||
32 | - expect($location.path()).toBe('/programa/bolsa-familia'); | ||
33 | - | ||
34 | - // expect current scope has a friendly-url to a program | ||
35 | - expect(programaPageController.$state).toBeDefined(); | ||
36 | - expect(programaPageController.$state.params).toBeDefined(); | ||
37 | - expect(programaPageController.$state.params.slug).toBe('bolsa-familia'); | ||
38 | - | ||
39 | - // what to check when user is not logged in here? | ||
40 | - // what to check when user is logged in here? | ||
41 | - }); | ||
42 | - it('should be able to go back to "inicio"', function () {}); | ||
43 | - it('ensure valid proposal to be sended', function () {}); | ||
44 | - it('should be able to send a proposal', function () {}); | ||
45 | - it('should be able to vote on proposal', function () {}); | ||
46 | - it('should be able to vote on same proposal only once', function () {}); | ||
47 | - it('should be able to view a unique proposal by URL', function () {}); | ||
48 | - it('should be able to view a table with ranking of all proposals by category', function () {}); | ||
49 | - it('should be able to share a proposal on social medias', function () {}); | ||
50 | - | ||
51 | - }); | ||
52 | -})(); |
@@ -0,0 +1,64 @@ | @@ -0,0 +1,64 @@ | ||
1 | +(function() { | ||
2 | + 'use strict'; | ||
3 | + | ||
4 | + angular | ||
5 | + .module('dialoga') | ||
6 | + .controller('ProgramasPageController', ProgramasPageController); | ||
7 | + | ||
8 | + /** @ngInject */ | ||
9 | + function ProgramasPageController(DialogaService, $log) { | ||
10 | + var vm = this; | ||
11 | + | ||
12 | + vm.DialogaService = DialogaService; | ||
13 | + vm.$log = $log; | ||
14 | + | ||
15 | + vm.init(); | ||
16 | + $log.debug('ProgramasPageController'); | ||
17 | + } | ||
18 | + | ||
19 | + ProgramasPageController.prototype.init = function () { | ||
20 | + var vm = this; | ||
21 | + | ||
22 | + vm.article = null; | ||
23 | + vm.themes = null; | ||
24 | + vm.selectedTheme = null; | ||
25 | + vm.programs = null; | ||
26 | + vm.filtredPrograms = null; | ||
27 | + vm.query = null; | ||
28 | + | ||
29 | + vm.loading = null; | ||
30 | + vm.error = null; | ||
31 | + | ||
32 | + vm.loadData(); | ||
33 | + }; | ||
34 | + | ||
35 | + | ||
36 | + ProgramasPageController.prototype.loadData = function () { | ||
37 | + var vm = this; | ||
38 | + | ||
39 | + vm.loading = true; | ||
40 | + | ||
41 | + // load Programs | ||
42 | + vm.loadingPrograms = true; | ||
43 | + vm.DialogaService.getPrograms(function(programs){ | ||
44 | + vm.programs = programs; | ||
45 | + vm.filtredPrograms = vm.programs; | ||
46 | + vm.loadingPrograms = false; | ||
47 | + }, function (error) { | ||
48 | + vm.error = error; | ||
49 | + vm.$log.error(error); | ||
50 | + vm.loadingPrograms = false; | ||
51 | + }); | ||
52 | + | ||
53 | + // load themes | ||
54 | + vm.loadingThemes = true; | ||
55 | + vm.DialogaService.getThemes(function(themes){ | ||
56 | + vm.themes = themes; | ||
57 | + vm.loadingThemes = false; | ||
58 | + }, function (error) { | ||
59 | + vm.error = error; | ||
60 | + vm.$log.error(error); | ||
61 | + vm.loadingThemes = false; | ||
62 | + }); | ||
63 | + }; | ||
64 | +})(); |
@@ -0,0 +1,52 @@ | @@ -0,0 +1,52 @@ | ||
1 | +(function() { | ||
2 | + 'use strict'; | ||
3 | + | ||
4 | + describe('Controller: ProgramaPageController', function(){ | ||
5 | + var $rootScope, $scope, $location, $controller, httpBackend, programaPageController; | ||
6 | + var ENDPOINT_ARTICLE_HOME = 'http://login.dialoga.gov.br/api/v1/articles/103358?fields=id,children,categories,abstract,title,image,url,setting,position&private_token=null'; | ||
7 | + | ||
8 | + beforeEach(module('dialoga')); | ||
9 | + beforeEach( inject(function(_$rootScope_, _$controller_, _$location_, $httpBackend) { | ||
10 | + $rootScope = _$rootScope_; | ||
11 | + $controller = _$controller_; | ||
12 | + $location = _$location_; | ||
13 | + $scope = $rootScope.$new(); | ||
14 | + httpBackend = $httpBackend; | ||
15 | + | ||
16 | + programaPageController = $controller('ProgramaPageController', { | ||
17 | + '$rootScope': $rootScope, | ||
18 | + '$scope': $scope | ||
19 | + }); | ||
20 | + | ||
21 | + httpBackend.whenGET(ENDPOINT_ARTICLE_HOME).respond({ | ||
22 | + 'article':{'id':103358,'abstract':'\u003Cp style=\"text-align: center;\"\u003E\u003Ciframe src=\"https://www.youtube.com/embed/kpAdrO-emV0?rel=0\u0026amp;showinfo=0\u0026amp;iv_load_policy=3\u0026amp;controls=1\" style=\"max-width: 1000px; left: 5%;\" width=\"275\" height=\"200\"\u003E\u003C/iframe\u003E\u003C/p\u003E','title':'Dialoga Brasil','categories':[{'name':'Sa\u00fade','id':180,'slug':'saude','image':null},{'name':'Seguran\u00e7a P\u00fablica','id':182,'slug':'seguranca-publica','image':null},{'name':'Educa\u00e7\u00e3o','id':181,'slug':'educacao','image':null},{'name':'Redu\u00e7\u00e3o da Pobreza','id':183,'slug':'reducao-da-pobreza','image':null}],'image':null,'setting':{'custom_body_label':'Corpo','phase':'proposals','allow_topics':true,'moderate_comments':false,'comment_paragraph_plugin_activate':false,'author_name':'Leandro Nunes dos Santos','moderate_proposals':true,'allow_members_to_edit':false},'position':null,'children':[{'id':103644,'abstract':'\u003Cp\u003EUm caminho de oportunidades com o Enem: Sisu, Prouni, Fies, Ci\u00eancia sem Fronteiras\u003C/p\u003E','title':'Ensino Superior','categories':[{'name':'Educa\u00e7\u00e3o','id':181,'slug':'educacao','image':null}],'image':{'url':'/image_uploads/dialoga/0000/0128/enem.jpg'},'setting':{'color':'#cfe2f3','moderate_comments':false,'comment_paragraph_plugin_activate':false,'author_name':'Ronald Emerson Scherolt da Costa','allow_members_to_edit':false},'position':9},{'id':103673,'abstract':'\u003Cp\u003EA melhor escolha \u00e9 se informar.\u003C/p\u003E','title':'Incentivo ao Parto Normal','categories':[{'name':'Sa\u00fade','id':180,'slug':'saude','image':null}],'image':{'url':'/image_uploads/dialoga/0000/0092/parto-normal.jpg'},'setting':{'color':'#ff0000','moderate_comments':false,'comment_paragraph_plugin_activate':false,'author_name':'Ronald Emerson Scherolt da Costa','allow_members_to_edit':false},'position':6},{'id':103397,'abstract':'\u003Cp\u003ERenda, inclus\u00e3o produtiva e acesso a servi\u00e7os.\u003C/p\u003E','title':'Brasil Sem Mis\u00e9ria','categories':[{'name':'Redu\u00e7\u00e3o da Pobreza','id':183,'slug':'reducao-da-pobreza','image':null}],'image':{'url':'/image_uploads/dialoga/0000/0116/bsm_redim.jpg'},'setting':{'color':'','moderate_comments':false,'comment_paragraph_plugin_activate':false,'author_name':'Ronald Emerson Scherolt da Costa','allow_members_to_edit':false},'position':18},{'id':103379,'abstract':'\u003Cp\u003EResgate e atendimento 24 horas, sete dias da semana.\u003C/p\u003E','title':'SAMU 192 e UPAs','categories':[{'name':'Sa\u00fade','id':180,'slug':'saude','image':null}],'image':{'url':'/image_uploads/dialoga/0000/0060/SAMU.jpg'},'setting':{'color':'#45818e','moderate_comments':false,'comment_paragraph_plugin_activate':false,'author_name':'Ronald Emerson Scherolt da Costa','allow_members_to_edit':false},'position':4},{'id':103521,'abstract':'\u003Cp\u003EMais atendimento nos munic\u00edpios, mais sa\u00fade para quem mais precisa.\u003C/p\u003E','title':'Mais M\u00e9dicos','categories':[{'name':'Sa\u00fade','id':180,'slug':'saude','image':null}],'image':{'url':'/image_uploads/dialoga/0000/0025/Mais_M_dicos.jpg'},'setting':{'color':'#ffe599','moderate_comments':false,'comment_paragraph_plugin_activate':false,'author_name':'Ronald Emerson Scherolt da Costa','allow_members_to_edit':false},'position':1},{'id':103390,'abstract':'\u003Cp\u003EPreven\u00e7\u00e3o, tratamento e enfrentamento ao tr\u00e1fico.\u003C/p\u003E','title':'Crack, \u00e9 poss\u00edvel vencer!','categories':[{'name':'Seguran\u00e7a P\u00fablica','id':182,'slug':'seguranca-publica','image':null}],'image':{'url':'/image_uploads/dialoga/0000/0104/crack.jpg'},'setting':{'color':'#00ff00','moderate_comments':false,'comment_paragraph_plugin_activate':false,'author_name':'Ronald Emerson Scherolt da Costa','allow_members_to_edit':false},'position':14},{'id':103592,'abstract':'\u003Cp\u003EGarantir acesso \u00e0 prote\u00e7\u00e3o social.\u003C/p\u003E','title':'Assist\u00eancia Social','categories':[{'name':'Redu\u00e7\u00e3o da Pobreza','id':183,'slug':'reducao-da-pobreza','image':null}],'image':{'url':'/image_uploads/dialoga/0000/0122/assistencia_social.jpg'},'setting':{'color':'#a61c00','moderate_comments':false,'comment_paragraph_plugin_activate':false,'author_name':'Ronald Emerson Scherolt da Costa','allow_members_to_edit':false},'position':19},{'id':103426,'abstract':'\u003Cp\u003EDa sa\u00fade se cuida todos os dias.\u003C/p\u003E','title':'Vida saud\u00e1vel','categories':[{'name':'Sa\u00fade','id':180,'slug':'saude','image':null}],'image':{'url':'/image_uploads/dialoga/0000/0046/vida_saudavel.jpg'},'setting':{'color':'#d9d2e9','moderate_comments':false,'comment_paragraph_plugin_activate':false,'author_name':'Ronald Emerson Scherolt da Costa','allow_members_to_edit':false},'position':7},{'id':103695,'abstract':'\u003Cp\u003ENovo modelo de atua\u00e7\u00e3o em Seguran\u00e7a P\u00fablica.\u003C/p\u003E','title':'Seguran\u00e7a P\u00fablica Integrada','categories':[{'name':'Seguran\u00e7a P\u00fablica','id':182,'slug':'seguranca-publica','image':null}],'image':{'url':'/image_uploads/dialoga/0000/0152/policiaintegrada.jpg'},'setting':{'color':'#ff00ff','moderate_comments':false,'comment_paragraph_plugin_activate':false,'author_name':'Ronald Emerson Scherolt da Costa','allow_members_to_edit':false},'position':13},{'id':103663,'abstract':'\u003Cp\u003EMais educa\u00e7\u00e3o profissional e tecnol\u00f3gica, mais desenvolvimento\u003C/p\u003E','title':'Ensino T\u00e9cnico','categories':[{'name':'Educa\u00e7\u00e3o','id':181,'slug':'educacao','image':null}],'image':{'url':'/image_uploads/dialoga/0000/0134/Ensino_tecnico.jpg'},'setting':{'color':'#d0e0e3','moderate_comments':false,'comment_paragraph_plugin_activate':false,'author_name':'Ronald Emerson Scherolt da Costa','allow_members_to_edit':false},'position':10},{'id':103472,'abstract':'\u003Cp\u003EPol\u00edcia Federal, Pol\u00edcia Rodovi\u00e1ria Federal e For\u00e7a Nacional de Seguran\u00e7a P\u00fablica.\u003C/p\u003E','title':'For\u00e7as Federais de Seguran\u00e7a','categories':[{'name':'Seguran\u00e7a P\u00fablica','id':182,'slug':'seguranca-publica','image':null}],'image':{'url':'/image_uploads/dialoga/0000/0031/federais2.png'},'setting':{'color':'','moderate_comments':false,'comment_paragraph_plugin_activate':false,'author_name':'Ronald Emerson Scherolt da Costa','allow_members_to_edit':false},'position':16},{'id':103612,'abstract':'\u003Cp\u003EGarantir \u00e1gua para beber e produzir.\u003C/p\u003E','title':'Cisternas','categories':[{'name':'Redu\u00e7\u00e3o da Pobreza','id':183,'slug':'reducao-da-pobreza','image':null}],'image':{'url':'/image_uploads/dialoga/0000/0039/cisterna_redim.jpg'},'setting':{'color':'#0000ff','moderate_comments':false,'comment_paragraph_plugin_activate':false,'author_name':'Ronald Emerson Scherolt da Costa','allow_members_to_edit':false},'position':20},{'id':103442,'abstract':'\u003Cp\u003EComplemento \u00e0 renda e acompanhamento em educa\u00e7\u00e3o e sa\u00fade.\u003C/p\u003E','title':'Bolsa Fam\u00edlia','categories':[{'name':'Redu\u00e7\u00e3o da Pobreza','id':183,'slug':'reducao-da-pobreza','image':null}],'image':{'url':'/image_uploads/dialoga/0000/0013/bolsa_familia_redim.jpg'},'setting':{'color':'#ff9900','moderate_comments':false,'comment_paragraph_plugin_activate':false,'author_name':'Ronald Emerson Scherolt da Costa','allow_members_to_edit':false},'position':17},{'id':103507,'abstract':'\u003Cp\u003ETecnologia a servi\u00e7o da seguran\u00e7a do cidad\u00e3o.\u003C/p\u003E','title':'Sinesp','categories':[{'name':'Seguran\u00e7a P\u00fablica','id':182,'slug':'seguranca-publica','image':null}],'image':{'url':'/image_uploads/dialoga/0000/0098/sinesp.png'},'setting':{'color':'#00ff00','moderate_comments':false,'comment_paragraph_plugin_activate':false,'author_name':'Ronald Emerson Scherolt da Costa','allow_members_to_edit':false},'position':12},{'id':103683,'abstract':'\u003Cp\u003ESa\u00fade n\u00e3o tem pre\u00e7o.\u003C/p\u003E','title':'Aqui tem Farm\u00e1cia Popular','categories':[{'name':'Sa\u00fade','id':180,'slug':'saude','image':null}],'image':{'url':'/image_uploads/dialoga/0000/0019/saude_nao_tem_preco.jpg'},'setting':{'color':'#e69138','moderate_comments':false,'comment_paragraph_plugin_activate':false,'author_name':'Ronald Emerson Scherolt da Costa','allow_members_to_edit':false},'position':5},{'id':103457,'abstract':'\u003Cp\u003EA\u00e7\u00e3o conjunta e coopera\u00e7\u00e3o transfronteiri\u00e7a.\u003C/p\u003E','title':'Prote\u00e7\u00e3o das Fronteiras','categories':[{'name':'Seguran\u00e7a P\u00fablica','id':182,'slug':'seguranca-publica','image':null}],'image':{'url':'/image_uploads/dialoga/0000/0110/fronteira_redim.jpg'},'setting':{'color':'#a64d79','moderate_comments':false,'comment_paragraph_plugin_activate':false,'author_name':'Ronald Emerson Scherolt da Costa','allow_members_to_edit':false},'position':15},{'id':103494,'abstract':'\u003Cp\u003EDa Educa\u00e7\u00e3o Infantil ao Ensino M\u00e9dio.\u003C/p\u003E','title':'Educa\u00e7\u00e3o B\u00e1sica','categories':[{'name':'Educa\u00e7\u00e3o','id':181,'slug':'educacao','image':null}],'image':{'url':'/image_uploads/dialoga/0000/0076/Educa__o_B_sica.jpg'},'setting':{'color':'#fce5cd','moderate_comments':false,'comment_paragraph_plugin_activate':false,'author_name':'Ronald Emerson Scherolt da Costa','allow_members_to_edit':false},'position':8},{'id':103359,'abstract':'\u003Cp\u003EAcesso a exames e consultas com especialistas.\u003C/p\u003E','title':'Mais Especialidades','categories':[{'name':'Sa\u00fade','id':180,'slug':'saude','image':null}],'image':{'url':'/image_uploads/dialoga/0000/0083/mais_especialidades1.png'},'setting':{'color':'#ea9999','moderate_comments':false,'comment_paragraph_plugin_activate':false,'author_name':'Ronald Emerson Scherolt da Costa','allow_members_to_edit':false},'position':2},{'id':103485,'abstract':'\u003Cp\u003ECaminho para uma educa\u00e7\u00e3o de qualidade.\u003C/p\u003E','title':'Valoriza\u00e7\u00e3o dos Professores','categories':[{'name':'Educa\u00e7\u00e3o','id':181,'slug':'educacao','image':null}],'image':{'url':'/image_uploads/dialoga/0000/0140/valorizacao_professor.jpg'},'setting':{'color':'#ffff00','moderate_comments':false,'comment_paragraph_plugin_activate':false,'author_name':'Ronald Emerson Scherolt da Costa','allow_members_to_edit':false},'position':11},{'id':103416,'abstract':'\u003Cp\u003EEstrutura adequada para atender melhor a popula\u00e7\u00e3o na aten\u00e7\u00e3o b\u00e1sica.\u003C/p\u003E','title':'Melhorar os Postos de Sa\u00fade','categories':[{'name':'Sa\u00fade','id':180,'slug':'saude','image':null}],'image':{'url':'/image_uploads/dialoga/0000/0053/requalif_redim.jpg'},'setting':{'color':'#cc4125','moderate_comments':false,'comment_paragraph_plugin_activate':false,'author_name':'Ronald Emerson Scherolt da Costa','allow_members_to_edit':false},'position':3}]} | ||
23 | + }); | ||
24 | + })); | ||
25 | + | ||
26 | + it('should have a ProgramaPageController controller', function () { | ||
27 | + // console.log('programaPageController', programaPageController); | ||
28 | + | ||
29 | + // expect current path to equal '/programa/:slug' | ||
30 | + $location.path('/programa/bolsa-familia'); | ||
31 | + $rootScope.$apply(); | ||
32 | + expect($location.path()).toBe('/programa/bolsa-familia'); | ||
33 | + | ||
34 | + // expect current scope has a friendly-url to a program | ||
35 | + expect(programaPageController.$state).toBeDefined(); | ||
36 | + expect(programaPageController.$state.params).toBeDefined(); | ||
37 | + expect(programaPageController.$state.params.slug).toBe('bolsa-familia'); | ||
38 | + | ||
39 | + // what to check when user is not logged in here? | ||
40 | + // what to check when user is logged in here? | ||
41 | + }); | ||
42 | + it('should be able to go back to "inicio"', function () {}); | ||
43 | + it('ensure valid proposal to be sended', function () {}); | ||
44 | + it('should be able to send a proposal', function () {}); | ||
45 | + it('should be able to vote on proposal', function () {}); | ||
46 | + it('should be able to vote on same proposal only once', function () {}); | ||
47 | + it('should be able to view a unique proposal by URL', function () {}); | ||
48 | + it('should be able to view a table with ranking of all proposals by category', function () {}); | ||
49 | + it('should be able to share a proposal on social medias', function () {}); | ||
50 | + | ||
51 | + }); | ||
52 | +})(); |
src/app/pages/programas/programas.html
@@ -7,14 +7,93 @@ | @@ -7,14 +7,93 @@ | ||
7 | </div> | 7 | </div> |
8 | 8 | ||
9 | <div class="page--programas"> | 9 | <div class="page--programas"> |
10 | - <section class="section-gray section-space-up"> | 10 | + <section class="section--info"> |
11 | + <div class="container"> | ||
12 | + <div class="row"> | ||
13 | + <div class="col-sm-12"> | ||
14 | + <h1>Programas de governo</h1> | ||
15 | + </div> | ||
16 | + </div> | ||
17 | + </div> | ||
18 | + </section> | ||
19 | + <section class="section--articles section-gray section-space-up" ng-if="pageProgramas.programs"> | ||
11 | <div class="container"> | 20 | <div class="container"> |
12 | <div id="lista-de-programas" class="row"> | 21 | <div id="lista-de-programas" class="row"> |
13 | <div class="col-sm-4 col-md-3"> | 22 | <div class="col-sm-4 col-md-3"> |
14 | - <category-list ng-if="pageProgramas.categories"></category-list> | 23 | + <div class="row visible-xs"> |
24 | + <div class="col-xs-12"> | ||
25 | + <div class="input-group input-group-lg input-group-search"> | ||
26 | + <label for="articleQueryFilter" class="control-label sr-only">Buscar programas:</label> | ||
27 | + <input id="articleQueryFilter" type="search" class="form-control input-search" ng-model="pageProgramas.query" placeholder="Buscar programas" aria-label="Buscar programas" > | ||
28 | + <span class="input-group-btn"> | ||
29 | + <button type="button" class="btn btn-default" ng-click="pageProgramas.search()"> | ||
30 | + <span class="icon-circle icon-small color-theme-common-bg"> | ||
31 | + <span class="glyphicon glyphicon-search"></span> | ||
32 | + </span> | ||
33 | + <span class="sr-only">Buscar</span> | ||
34 | + </button> | ||
35 | + </span> | ||
36 | + </div> | ||
37 | + <br/> | ||
38 | + </div> | ||
39 | + </div> | ||
40 | + <div ng-if="pageProgramas.themes"> | ||
41 | + <category-list categories="pageProgramas.themes" selected-category="pageProgramas.selectedTheme"></category-list> | ||
42 | + </div> | ||
43 | + <div ng-if="!pageProgramas.themes && pageProgramas.loadingThemes"> | ||
44 | + <div class="alert alert-info" role="alert"> | ||
45 | + Carregando temas. | ||
46 | + </div> | ||
47 | + </div> | ||
48 | + <div ng-if="!pageProgramas.themes && pageProgramas.themesError"> | ||
49 | + <div class="alert alert-danger" role="alert"> | ||
50 | + Não foi possível carregar a lista de temas neste momento. | ||
51 | + </div> | ||
52 | + </div> | ||
15 | </div> | 53 | </div> |
16 | <div class="col-sm-8 col-md-9"> | 54 | <div class="col-sm-8 col-md-9"> |
17 | - <article-grid></article-grid> | 55 | + <div class="row hidden-xs"> |
56 | + <div class="col-xs-12"> | ||
57 | + <div class="input-group input-group-lg input-group-search"> | ||
58 | + <label for="articleQueryFilter" class="control-label sr-only">Buscar programas:</label> | ||
59 | + <input id="articleQueryFilter" type="search" class="form-control input-search" ng-model="pageProgramas.query" placeholder="Buscar programas" aria-label="Buscar programas" > | ||
60 | + <span class="input-group-btn"> | ||
61 | + <button type="button" class="btn btn-default" ng-click="pageProgramas.search()"> | ||
62 | + <span class="icon-circle icon-small color-theme-common-bg"> | ||
63 | + <span class="glyphicon glyphicon-search"></span> | ||
64 | + </span> | ||
65 | + <span class="sr-only">Buscar</span> | ||
66 | + </button> | ||
67 | + </span> | ||
68 | + </div> | ||
69 | + </div> | ||
70 | + </div> | ||
71 | + <div class="row"> | ||
72 | + <div class="col-sm-12"> | ||
73 | + <header class="header"> | ||
74 | + <h2>Conheça os programas</h2> | ||
75 | + <button type="button" class="btn btn-link" ng-click="pageProgramas.showAll($event)"> | ||
76 | + <span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span> Ver todos os {{::pageProgramas.programs.length}} programas | ||
77 | + </button> | ||
78 | + </header> | ||
79 | + </div> | ||
80 | + </div> | ||
81 | + | ||
82 | + <div class="row"> | ||
83 | + <div class="col-sm-12" ng-if="pageProgramas.programs"> | ||
84 | + <article-grid articles="pageProgramas.filtredPrograms"></article-grid> | ||
85 | + </div> | ||
86 | + <div ng-if="!pageProgramas.programs && pageProgramas.loadingPrograms"> | ||
87 | + <div class="alert alert-info" role="alert"> | ||
88 | + Carregando programas. | ||
89 | + </div> | ||
90 | + </div> | ||
91 | + <div ng-if="!pageProgramas.programs && pageProgramas.programsError"> | ||
92 | + <div class="alert alert-danger" role="alert"> | ||
93 | + Não foi possível carregar a lista de programas neste momento. | ||
94 | + </div> | ||
95 | + </div> | ||
96 | + </div> | ||
18 | </div> | 97 | </div> |
19 | </div> | 98 | </div> |
20 | </div> | 99 | </div> |
src/app/pages/propostas/proposta.html
src/app/pages/propostas/propostas.controller.js
1 | +/** | ||
2 | + * Controlador das páginas: | ||
3 | + * - Propostas | ||
4 | + * - Ranking | ||
5 | + */ | ||
1 | (function() { | 6 | (function() { |
2 | 'use strict'; | 7 | 'use strict'; |
3 | 8 | ||
@@ -7,38 +12,58 @@ | @@ -7,38 +12,58 @@ | ||
7 | 12 | ||
8 | /** @ngInject */ | 13 | /** @ngInject */ |
9 | function PropostasPageController(DialogaService, $log) { | 14 | function PropostasPageController(DialogaService, $log) { |
10 | - $log.debug('PropostasPageController'); | ||
11 | - | ||
12 | var vm = this; | 15 | var vm = this; |
13 | 16 | ||
14 | vm.DialogaService = DialogaService; | 17 | vm.DialogaService = DialogaService; |
15 | vm.$log = $log; | 18 | vm.$log = $log; |
16 | 19 | ||
17 | vm.init(); | 20 | vm.init(); |
21 | + $log.debug('PropostasPageController'); | ||
18 | } | 22 | } |
19 | 23 | ||
20 | PropostasPageController.prototype.init = function () { | 24 | PropostasPageController.prototype.init = function () { |
21 | var vm = this; | 25 | var vm = this; |
22 | 26 | ||
23 | vm.article = null; | 27 | vm.article = null; |
24 | - vm.categories = null; | ||
25 | - vm.currentCategory = null; | ||
26 | - vm.loading = true; | ||
27 | - vm.error = false; | 28 | + vm.themes = null; |
29 | + vm.selectedTheme = null; | ||
30 | + vm.proposals = null; | ||
31 | + vm.filtredProposals = null; | ||
32 | + vm.query = null; | ||
33 | + | ||
34 | + vm.loading = null; | ||
35 | + vm.error = null; | ||
28 | 36 | ||
29 | - // vm.loadData(); | 37 | + vm.loadData(); |
30 | }; | 38 | }; |
31 | 39 | ||
32 | 40 | ||
33 | PropostasPageController.prototype.loadData = function () { | 41 | PropostasPageController.prototype.loadData = function () { |
34 | var vm = this; | 42 | var vm = this; |
35 | 43 | ||
36 | - vm.DialogaService.getCategories(function(categories){ | ||
37 | - vm.categories = categories; | 44 | + vm.loading = true; |
45 | + | ||
46 | + // load Proposals | ||
47 | + vm.loadingProposals = true; | ||
48 | + vm.DialogaService.getProposalsByTopicId(103644, {}, function(data){ | ||
49 | + vm.proposals = data.articles; | ||
50 | + vm.filtredProposals = vm.proposals; | ||
51 | + vm.loadingProposals = false; | ||
38 | }, function (error) { | 52 | }, function (error) { |
39 | vm.error = error; | 53 | vm.error = error; |
40 | vm.$log.error(error); | 54 | vm.$log.error(error); |
55 | + vm.loadingProposals = false; | ||
41 | }); | 56 | }); |
42 | 57 | ||
58 | + // load themes | ||
59 | + vm.loadingThemes = true; | ||
60 | + vm.DialogaService.getThemes(function(themes){ | ||
61 | + vm.themes = themes; | ||
62 | + vm.loadingThemes = false; | ||
63 | + }, function (error) { | ||
64 | + vm.error = error; | ||
65 | + vm.$log.error(error); | ||
66 | + vm.loadingThemes = false; | ||
67 | + }); | ||
43 | }; | 68 | }; |
44 | })(); | 69 | })(); |
src/app/pages/propostas/propostas.html
@@ -6,6 +6,93 @@ | @@ -6,6 +6,93 @@ | ||
6 | </div> | 6 | </div> |
7 | </div> | 7 | </div> |
8 | 8 | ||
9 | -<div class="container page--propostas"> | ||
10 | - <h1>TODO: Home > Propostas</h1> | 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>Propostas</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 class="row visible-xs"> | ||
24 | + <div class="col-xs-12"> | ||
25 | + <div class="input-group input-group-lg input-group-search"> | ||
26 | + <label for="articleQueryFilter" class="control-label sr-only">Buscar propostas:</label> | ||
27 | + <input id="articleQueryFilter" type="search" class="form-control input-search" ng-model="pagePropostas.query" placeholder="Buscar propostas" aria-label="Buscar propostas" > | ||
28 | + <span class="input-group-btn"> | ||
29 | + <button type="button" class="btn btn-default" ng-click="pagePropostas.search()"> | ||
30 | + <span class="icon-circle icon-small color-theme-common-bg"> | ||
31 | + <span class="glyphicon glyphicon-search"></span> | ||
32 | + </span> | ||
33 | + <span class="sr-only">Buscar</span> | ||
34 | + </button> | ||
35 | + </span> | ||
36 | + </div> | ||
37 | + <br/> | ||
38 | + </div> | ||
39 | + </div> | ||
40 | + <div ng-if="pagePropostas.themes"> | ||
41 | + <category-list categories="pagePropostas.themes" selected-category="pagePropostas.selectedTheme"></category-list> | ||
42 | + </div> | ||
43 | + <div ng-if="!pagePropostas.themes && pagePropostas.loadingThemes"> | ||
44 | + <div class="alert alert-info" role="alert"> | ||
45 | + Carregando temas. | ||
46 | + </div> | ||
47 | + </div> | ||
48 | + <div ng-if="!pagePropostas.themes && pagePropostas.themesError"> | ||
49 | + <div class="alert alert-danger" role="alert"> | ||
50 | + Não foi possível carregar a lista de temas neste momento. | ||
51 | + </div> | ||
52 | + </div> | ||
53 | + </div> | ||
54 | + <div class="col-sm-8 col-md-9"> | ||
55 | + <div class="row hidden-xs"> | ||
56 | + <div class="col-xs-12"> | ||
57 | + <div class="input-group input-group-lg input-group-search"> | ||
58 | + <label for="articleQueryFilter" class="control-label sr-only">Buscar propostas:</label> | ||
59 | + <input id="articleQueryFilter" type="search" class="form-control input-search" ng-model="pagePropostas.query" placeholder="Buscar propostas" aria-label="Buscar propostas" > | ||
60 | + <span class="input-group-btn"> | ||
61 | + <button type="button" class="btn btn-default" ng-click="pagePropostas.search()"> | ||
62 | + <span class="icon-circle icon-small color-theme-common-bg"> | ||
63 | + <span class="glyphicon glyphicon-search"></span> | ||
64 | + </span> | ||
65 | + <span class="sr-only">Buscar</span> | ||
66 | + </button> | ||
67 | + </span> | ||
68 | + </div> | ||
69 | + </div> | ||
70 | + </div> | ||
71 | + <div class="row"> | ||
72 | + <div class="col-sm-12"> | ||
73 | + <header class="header"> | ||
74 | + <h2>Total de Propostas as propostas: "<span>{{::pagePropostas.proposals.length}} propostas</span>"</h2> | ||
75 | + </header> | ||
76 | + </div> | ||
77 | + </div> | ||
78 | + | ||
79 | + <div class="row"> | ||
80 | + <div class="col-sm-12" ng-if="pagePropostas.proposals"> | ||
81 | + <proposal-grid proposals="pagePropostas.filtredProposals"></proposal-grid> | ||
82 | + </div> | ||
83 | + <div ng-if="!pagePropostas.proposals && pagePropostas.loadingProposals"> | ||
84 | + <div class="alert alert-info" role="alert"> | ||
85 | + Carregando propostas. | ||
86 | + </div> | ||
87 | + </div> | ||
88 | + <div ng-if="!pagePropostas.proposals && pagePropostas.proposalsError"> | ||
89 | + <div class="alert alert-danger" role="alert"> | ||
90 | + Não foi possível carregar a lista de propostas neste momento. | ||
91 | + </div> | ||
92 | + </div> | ||
93 | + </div> | ||
94 | + </div> | ||
95 | + </div> | ||
96 | + </div> | ||
97 | + </section> | ||
11 | </div> | 98 | </div> |
@@ -0,0 +1,98 @@ | @@ -0,0 +1,98 @@ | ||
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 class="row visible-xs"> | ||
24 | + <div class="col-xs-12"> | ||
25 | + <div class="input-group input-group-lg input-group-search"> | ||
26 | + <label for="articleQueryFilter" class="control-label sr-only">Buscar propostas:</label> | ||
27 | + <input id="articleQueryFilter" type="search" class="form-control input-search" ng-model="pageRanking.query" placeholder="Buscar propostas" aria-label="Buscar propostas" > | ||
28 | + <span class="input-group-btn"> | ||
29 | + <button type="button" class="btn btn-default" ng-click="pageRanking.search()"> | ||
30 | + <span class="icon-circle icon-small color-theme-common-bg"> | ||
31 | + <span class="glyphicon glyphicon-search"></span> | ||
32 | + </span> | ||
33 | + <span class="sr-only">Buscar</span> | ||
34 | + </button> | ||
35 | + </span> | ||
36 | + </div> | ||
37 | + <br/> | ||
38 | + </div> | ||
39 | + </div> | ||
40 | + <div ng-if="pageRanking.themes"> | ||
41 | + <category-list categories="pageRanking.themes" selected-category="pageRanking.selectedTheme"></category-list> | ||
42 | + </div> | ||
43 | + <div ng-if="!pageRanking.themes && pageRanking.loadingThemes"> | ||
44 | + <div class="alert alert-info" role="alert"> | ||
45 | + Carregando temas. | ||
46 | + </div> | ||
47 | + </div> | ||
48 | + <div ng-if="!pageRanking.themes && pageRanking.themesError"> | ||
49 | + <div class="alert alert-danger" role="alert"> | ||
50 | + Não foi possível carregar a lista de temas neste momento. | ||
51 | + </div> | ||
52 | + </div> | ||
53 | + </div> | ||
54 | + <div class="col-sm-8 col-md-9"> | ||
55 | + <div class="row hidden-xs"> | ||
56 | + <div class="col-xs-12"> | ||
57 | + <div class="input-group input-group-lg input-group-search"> | ||
58 | + <label for="articleQueryFilter" class="control-label sr-only">Buscar propostas:</label> | ||
59 | + <input id="articleQueryFilter" type="search" class="form-control input-search" ng-model="pageRanking.query" placeholder="Buscar propostas" aria-label="Buscar propostas" > | ||
60 | + <span class="input-group-btn"> | ||
61 | + <button type="button" class="btn btn-default" ng-click="pageRanking.search()"> | ||
62 | + <span class="icon-circle icon-small color-theme-common-bg"> | ||
63 | + <span class="glyphicon glyphicon-search"></span> | ||
64 | + </span> | ||
65 | + <span class="sr-only">Buscar</span> | ||
66 | + </button> | ||
67 | + </span> | ||
68 | + </div> | ||
69 | + </div> | ||
70 | + </div> | ||
71 | + <div class="row"> | ||
72 | + <div class="col-sm-12"> | ||
73 | + <header class="header"> | ||
74 | + <h2>Total de Propostas as propostas: "<span>{{::pageRanking.proposals.length}} propostas</span>"</h2> | ||
75 | + </header> | ||
76 | + </div> | ||
77 | + </div> | ||
78 | + | ||
79 | + <div class="row"> | ||
80 | + <div class="col-sm-12" ng-if="pageRanking.proposals"> | ||
81 | + <proposal-list proposals="pageRanking.filtredProposals"></proposal-list> | ||
82 | + </div> | ||
83 | + <div ng-if="!pageRanking.proposals && pageRanking.loadingProposals"> | ||
84 | + <div class="alert alert-info" role="alert"> | ||
85 | + Carregando propostas. | ||
86 | + </div> | ||
87 | + </div> | ||
88 | + <div ng-if="!pageRanking.proposals && pageRanking.proposalsError"> | ||
89 | + <div class="alert alert-danger" role="alert"> | ||
90 | + Não foi possível carregar a lista de propostas neste momento. | ||
91 | + </div> | ||
92 | + </div> | ||
93 | + </div> | ||
94 | + </div> | ||
95 | + </div> | ||
96 | + </div> | ||
97 | + </section> | ||
98 | +</div> |