From bde8b7856a544f71a92d9e21c439fac68ce7196a Mon Sep 17 00:00:00 2001 From: Leonardo Merlin Date: Tue, 4 Aug 2015 17:44:29 -0300 Subject: [PATCH] Remove 'programa service' in favor 'article service' using restangular --- src/app/components/programa/programa.directive.js | 2 +- src/app/components/programa/programa.service.js | 129 --------------------------------------------------------------------------------------------------------------------------------- src/app/index.config.js | 7 +++++++ src/app/index.constants.js | 8 +++++++- src/app/index.run.js | 4 ---- src/app/partials/article/article.service.js | 28 ++++++++++++++++++++++++++++ src/app/partials/article/article.service.spec.js | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/app/partials/header/header.controller.js | 3 ++- src/app/partials/inicio/inicio.controller.js | 20 ++++++++++++++++++-- 9 files changed, 131 insertions(+), 138 deletions(-) delete mode 100644 src/app/components/programa/programa.service.js create mode 100644 src/app/partials/article/article.service.js create mode 100644 src/app/partials/article/article.service.spec.js diff --git a/src/app/components/programa/programa.directive.js b/src/app/components/programa/programa.directive.js index 81a6847..788d12a 100644 --- a/src/app/components/programa/programa.directive.js +++ b/src/app/components/programa/programa.directive.js @@ -6,7 +6,7 @@ .directive('programaBox', programaBox); /** @ngInject */ - function programaBox(ProgramaService, $log) { + function programaBox($log) { /** @ngInject */ function ProgramaController() { diff --git a/src/app/components/programa/programa.service.js b/src/app/components/programa/programa.service.js deleted file mode 100644 index 7d9b086..0000000 --- a/src/app/components/programa/programa.service.js +++ /dev/null @@ -1,129 +0,0 @@ -(function() { - 'use strict'; - - angular - .module('dialoga') - .factory('ProgramaService', ProgramaService); - - /** @ngInject */ - function ProgramaService($http, $q, private_token, ErrorService, $log) { - var apiHost = 'http://login.dialoga.gov.br/api/v1'; - - var endpoint = { - home: apiHost + '/articles/103358?private_token=null&fields=id,children,categories,abstract,title,image,url,setting,position', - articles: apiHost + '/articles?private_token=' + private_token + '&fields=id,children,created_by,categories,tag_list,abstract,setting,profile&content_type=ProposalsDiscussionPlugin::Proposal', - tasks: apiHost + '/task?private_token=' + private_token + '&fields=id,children,created_by,categories,tag_list,abstract,setting,profile&content_type=ProposalsDiscussionPlugin::Proposal' - }; - - var service = { - - // mock - mockPrograma: mockPrograma, - - // api - getArticles: getArticles, - getProposal: getProposal - }; - - return service; - - // --- - // PUBLIC METHODS - // --- - - /** - * Mock Data - * @return {Object} a new instance with dumb data; - */ - function mockPrograma () { - return { - id: -1, - title: "Valorização dos Professores", - abstract: "

Caminho para uma educação de qualidade.

", - image: {url: "/image_uploads/dialoga/0000/0140/valorizacao_professor.jpg"}, - categories: [{name: "[category]", id: -1, slug: "[category-slug]", image: null}], - author: '[author]', - position: -1, // ? - profile: { // ? - id: -1, - identifier: '[profile.identifier]', - name: '[profile.name]', - }, - setting: { // ? - author_name: '[setting.author_name]', - comment_paragraph_plugin_activate: false - }, - children: [], // ? - tag_list: [] - }; - } - - /** - * Get a list of articles - * @param {Number} limit per_page (default is 30) - * @return {Array} a list of articles - */ - function getArticles (limit) { - if (!limit) { - limit = 30; - } - - return $http.get(endpoint.articles) - .then(handleSuccess) - .catch(handleError); - } - - /** - * Get a task by id - * @param {Number} id of task - * @return {Object} the wanted task or a new one. - */ - function getProposal (id) { - if (!id) { - throw new Error(ErrorService.paramRequired('id')); - } - - return $http.get(endpoint.tasks) - .then(handleSuccess) - .catch(handleError); - } - - // --- - // PRIVATE METHODS - // --- - - /** - * Transform the successful response, unwrapping the application data - * from the API response payload. - * - * @param {Object} response from the server. - * @return {Object} the data unwrapped. - */ - function handleSuccess (response){ - return response.data; - } - - /** - * Transform the error response, unwrapping the application data from - * the API response payload. - * - * @param {Object} error from the server. - * @return {Promise} promise rejection called. - */ - function handleError (error){ - - $log.error('XHR Failed on ProgramaService.\n' + angular.toJson(error.data, true)); - - // The API response from the server should be returned in a - // nomralized format. However, if the request was not handled by the - // server (or what not handles properly - ex. server error), then we - // may have to normalize it on our end, as best we can. - if ( !angular.isObject( error.data ) || !error.data.message) { - return( $q.reject( 'An unknown error occurred.' ) ); - } - - // Otherwise, use expected error message. - return $q.reject(error.data.message); - } - } -})(); diff --git a/src/app/index.config.js b/src/app/index.config.js index 2fb0c76..e9cc5ec 100644 --- a/src/app/index.config.js +++ b/src/app/index.config.js @@ -3,9 +3,16 @@ angular .module('dialoga') + .config(configRestangular) .config(config); /** @ngInject */ + function configRestangular(RestangularProvider, api) { + RestangularProvider.setBaseUrl(api.host); + RestangularProvider.setDefaultRequestParams({ apiKey: api.token }); + } + + /** @ngInject */ function config($logProvider) { // Enable log $logProvider.debugEnabled(true); diff --git a/src/app/index.constants.js b/src/app/index.constants.js index fc8f857..4b17309 100644 --- a/src/app/index.constants.js +++ b/src/app/index.constants.js @@ -4,7 +4,13 @@ angular .module('dialoga') - .constant('private_token', null) + .constant('api', { + token: null, + host: 'http://login.dialoga.gov.br/api/v1/', + articleId: { + home: 103358 + } + }) .constant('Modernizr', Modernizr) // .constant('key', value) ; diff --git a/src/app/index.run.js b/src/app/index.run.js index 07b9f3e..d98347e 100644 --- a/src/app/index.run.js +++ b/src/app/index.run.js @@ -9,10 +9,6 @@ function runBlock($log) { $log.debug('runBlock end'); - - window.skipToContent = function () { - console.log('TODO: skipToContent'); - }; } })(); diff --git a/src/app/partials/article/article.service.js b/src/app/partials/article/article.service.js new file mode 100644 index 0000000..ac79b2b --- /dev/null +++ b/src/app/partials/article/article.service.js @@ -0,0 +1,28 @@ +(function() { + 'use strict'; + + angular + .module('dialoga') + .factory('ArticleService', ArticleService); + + /** @ngInject */ + function ArticleService(Restangular, api, $log) { + $log.debug('ArticleService'); + + var articlesRest = Restangular.all('articles'); + + var service = { + getList: articlesRest.getList, + getHome: getHome + }; + + return service; + + function getHome () { + return articlesRest.get(api.articleId.home, { + private_token: api.token, + fields: 'id,children,categories,abstract,title,image,url,setting,position' + }); + } + } +})(); diff --git a/src/app/partials/article/article.service.spec.js b/src/app/partials/article/article.service.spec.js new file mode 100644 index 0000000..be1d121 --- /dev/null +++ b/src/app/partials/article/article.service.spec.js @@ -0,0 +1,68 @@ +(function() { + 'use strict'; + + describe('article services', function() { + var ArticleService, httpBackend; + + beforeEach(module('dialoga')); + + beforeEach(inject(function(_ArticleService_, $httpBackend) { + ArticleService = _ArticleService_; + httpBackend = $httpBackend; + })); + + it('should return the main article', function() { + + httpBackend.whenGET('http://login.dialoga.gov.br/api/v1/articles/103358?fields=id,children,categories,abstract,title,image,url,setting,position').respond({ + '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}]}}); + + ArticleService.getHome().then(function(result) { + + expect(result.article).toBeDefined(); + expect(result.article.title).toEqual('Dialoga Brasil'); + + }); + + httpBackend.flush(); + }); + + // it('should return a list of articles', function() { + + // httpBackend.whenGET('http://login.dialoga.gov.br/api/v1/articles').respond({ + // "articles": [ + // { + // abstract: "Que exista educação continuada permanente dos profissionais!!", + // author: null, + // body: "", + // categories: [], + // children: [], + // created_at: "2015/08/04 16:36:13", + // end_date: null, + // hits: 0, + // id: 120568, + // image: null, + // parent: {id: 103379,…}, + // position: null, + // profile: {identifier: "dialoga", name: "dialoga", id: 19195, created_at: "2015/04/15 09:38:36", image: null}, + // setting: {comment_paragraph_plugin_activate: false, author_name: "estacio"}, + // start_date: null, + // tag_list: [], + // title: "article_f4f4601c-0f36-e90e-d01a-9871f0bd126b", + // votes_against: 0, + // votes_for: 0, + // } + // ] + // }); + + // ArticleService.getList().then(function(result) { + // console.log('result', result); + + // expect(result.data.article).toBeDefined(); + // expect(result.data.article.title).toEqual('Dialoga Brasil'); + + // }); + + // httpBackend.flush(); + // }); + }); +})(); diff --git a/src/app/partials/header/header.controller.js b/src/app/partials/header/header.controller.js index fd4fab0..e8bc12e 100644 --- a/src/app/partials/header/header.controller.js +++ b/src/app/partials/header/header.controller.js @@ -1,3 +1,4 @@ +/* globals document:true*/ (function() { 'use strict'; @@ -17,7 +18,7 @@ HeaderController.prototype.toggleContrast = function () { this.contrast = !this.contrast; - console.debug('contrast', this.contrast); + this.$log.debug('contrast', this.contrast); }; HeaderController.prototype.focusMainContent = function ($event) { diff --git a/src/app/partials/inicio/inicio.controller.js b/src/app/partials/inicio/inicio.controller.js index de452b9..70b7cdf 100644 --- a/src/app/partials/inicio/inicio.controller.js +++ b/src/app/partials/inicio/inicio.controller.js @@ -6,9 +6,25 @@ .controller('InicioController', InicioController); /** @ngInject */ - function InicioController($log) { + function InicioController(ArticleService, $log) { $log.debug('InicioController'); - // var vm = this; + + var vm = this; + + + $log.log('ArticleService', ArticleService); + + // ArticleService.getList().then(function(articles){ + vm.loading = true; + ArticleService.getHome().then(function(homeArticle){ + $log.log('ArticleService.getList().then() homeArticle.article', homeArticle.article); + + vm.article = homeArticle.article; + vm.loading = false; + }, function () { + $log.error('error'); + vm.loading = false; + }); // vm.awesomeThings = []; // vm.classAnimation = ''; -- libgit2 0.21.2