Commit 2a43dc1973bfcd0a9aae47b0f0c1e9e31b4db174

Authored by Leonardo Merlin
1 parent f3414673

Cache request.

src/app/index.constants.js
... ... @@ -6,7 +6,8 @@
6 6 .module('dialoga')
7 7 .constant('api', {
8 8 token: null,
9   - host: 'http://hom.login.dialoga.gov.br',
  9 + hostHom: 'http://hom.dialoga.gov.br',
  10 + hostProd: 'http://login.dialoga.gov.br',
10 11 // host: 'http://www.participa.br',
11 12 articleId: {
12 13 home: 103358
... ...
src/app/index.run.js
... ... @@ -6,6 +6,7 @@
6 6 .module('dialoga')
7 7 .run(runAuth)
8 8 .run(runAccessibility)
  9 + .run(runPath)
9 10 .run(runBlock);
10 11  
11 12 /** @ngInject */
... ... @@ -73,6 +74,14 @@
73 74 }
74 75  
75 76 /** @ngInject */
  77 + function runPath($rootScope, api, $log) {
  78 + var isProduction = (/^http:\/\/dialoga\.gov\.br\//.test(window.location.href));
  79 + $rootScope.basePath = isProduction ? api.hostProd : api.hostHom;
  80 +
  81 + $log.debug('runPath end.');
  82 + }
  83 +
  84 + /** @ngInject */
76 85 function runBlock($log) {
77 86 $log.debug('runBlock end.');
78 87 }
... ...
src/app/partials/article/article.service.js
... ... @@ -6,34 +6,53 @@
6 6 .factory('ArticleService', ArticleService);
7 7  
8 8 /** @ngInject */
9   - function ArticleService($http, $q, api, UtilService, Slug, $log) {
  9 + function ArticleService($http, $q, $rootScope, UtilService, Slug, $log) {
10 10 $log.debug('ArticleService');
11 11  
12 12 var idArticleHome = '103358';
13 13 var _savedAbstract = null;
14 14  
15 15 var service = {
16   - apiArticles: api.host + '/api/v1/articles/',
  16 + apiArticles: $rootScope.basePath + '/api/v1/articles/',
17 17 getHome: getHome,
18 18 getArticleBySlug: getArticleBySlug,
19 19 setHomeAbstract: setHomeAbstract,
20 20 getHomeAbstract: getHomeAbstract
21 21 };
22 22  
  23 + var CACHE = {}; // cache by article id
  24 +
23 25 return service;
24 26  
25   - function getHome () {
26   - return getArticleById(idArticleHome);
27   - }
  27 + function loadArticleById (articleId, cbSuccess, cbError) {
28 28  
29   - function getArticleById (articleId) {
30 29 var url = service.apiArticles + articleId;
31 30 var params = {
32 31 fields: 'id,children,categories,abstract,title,image,url,setting,position',
33 32 private_token: 'null'
34 33 };
35 34  
36   - return UtilService.get(url, {params: params});
  35 + UtilService.get(url, {params: params}).then(function(data){
  36 + CACHE[articleId] = data;
  37 + cbSuccess(data);
  38 + }, function(error){
  39 + cbError(error);
  40 + });
  41 +
  42 + }
  43 +
  44 + function getArticleById (articleId, cbSuccess, cbError) {
  45 + var cachedArticle = CACHE[articleId];
  46 +
  47 + if(cachedArticle){
  48 + cbSuccess(cachedArticle);
  49 + }else{
  50 + loadArticleById(articleId, cbSuccess, cbError);
  51 + }
  52 + }
  53 +
  54 + function getHome (cbSuccess, cbError) {
  55 + return getArticleById(idArticleHome, cbSuccess, cbError);
37 56 }
38 57  
39 58 function setHomeAbstract (newAbstract) {
... ... @@ -44,10 +63,10 @@
44 63 return _savedAbstract;
45 64 }
46 65  
47   - function getArticleBySlug (slug) {
48   - var deferred = $q.defer();
  66 + function getArticleBySlug (slug, cbSuccess, cbError) {
  67 + var vm = this;
49 68  
50   - this.getHome().then(function (data) {
  69 + vm.getHome(function (data) {
51 70 var mainArticle = data.article;
52 71 var programList = mainArticle.children;
53 72 var result = null;
... ... @@ -66,13 +85,11 @@
66 85 }
67 86  
68 87 if(result){
69   - deferred.resolve(result);
  88 + cbSuccess(result);
70 89 }else{
71   - deferred.reject('None program with slug "' + slug + '"" was found.');
  90 + cbError('None program with slug "' + slug + '"" was found.');
72 91 }
73   - });
74   -
75   - return deferred.promise;
  92 + }, cbError);
76 93 }
77 94 }
78 95 })();
... ...
src/app/partials/header/header.html
... ... @@ -16,4 +16,11 @@
16 16 <div class="row">
17 17 <app-navbar></app-navbar>
18 18 </div>
  19 +
  20 + <!-- TODO: breadcrumb -->
  21 + <!-- <ol class="breadcrumb">
  22 + <li><a href="#">Home</a></li>
  23 + <li><a href="#">Library</a></li>
  24 + <li class="active">Data</li>
  25 + </ol> -->
19 26 </header>
... ...
src/app/partials/inicio/inicio.controller.js
... ... @@ -32,7 +32,7 @@
32 32 hideBackground(2000);
33 33 }
34 34  
35   - vm.ArticleService.getHome().then(function(data) {
  35 + vm.ArticleService.getHome(function(data) {
36 36 vm.article = data.article;
37 37 }, function(error) {
38 38 vm.$log.error('Error on getHome article.', error);
... ...
src/app/partials/programas/programa.controller.js
... ... @@ -6,7 +6,7 @@
6 6 .controller('ProgramaController', ProgramaController);
7 7  
8 8 /** @ngInject */
9   - function ProgramaController(ArticleService, $state, $log) {
  9 + function ProgramaController(ArticleService, $state, $rootScope, $log) {
10 10 $log.debug('ProgramaController');
11 11  
12 12 var vm = this;
... ... @@ -24,12 +24,42 @@
24 24 var params = vm.$state.params;
25 25 var slug = params.slug;
26 26  
27   - vm.ArticleService.getArticleBySlug(slug).then(function(program){
28   - vm.$log.debug('result progam', program);
29   - },function (error) {
  27 + vm.program = null;
  28 +
  29 + vm.ArticleService.getArticleBySlug(slug, function(program){
  30 + vm.program = program;
  31 +
  32 + // load proposals
  33 + // vm.ArticleService.getRandomProposals(program.id).then(function(proposal){
  34 + // vm.program.proposal = proposal;
  35 + // }, function (error){
  36 + // vm.$log.error(error);
  37 + // });
  38 +
  39 + // load events
  40 + // vm.ArticleService.getEvents(program.id).then(function(proposal){
  41 + // vm.program.proposal = proposal;
  42 + // }, function (error){
  43 + // vm.$log.error(error);
  44 + // });
  45 +
  46 + // load body content
  47 + // vm.ArticleService.getBodyContent(program.id).then(function(proposal){
  48 + // vm.program.proposal = proposal;
  49 + // }, function (error){
  50 + // vm.$log.error(error);
  51 + // });
  52 +
  53 + }, function (error) {
30 54 vm.$log.error(error);
31 55 vm.$log.info('Rollback to home page.');
32 56 vm.$state.go('inicio', {}, {location: true});
33 57 });
34 58 };
  59 +
  60 + ProgramaController.prototype.goBack = function () {
  61 + var vm = this;
  62 +
  63 + vm.$log.warn('Not implemented yet!');
  64 + };
35 65 })();
... ...
src/app/partials/programas/programa.html
1 1 <div class="container">
2 2  
3   - <h1>Programa</h1>
  3 + <div class="article-bar">
  4 + <div class="navbar">
  5 + <div class="navbar-header">
  6 + <button class="btn btn-link" ng-click="programa.goBack()">
  7 + <!-- <span class="glyphicon glyphicon-share-alt" aria-hidden="true"></span> -->
  8 + <span class="glyphicon glyphicon-arrow-left" aria-hidden="true"></span>
  9 + Voltar
  10 + </button>
  11 + </div>
  12 + <div class="navbar-left">
  13 + <button class="btn btn-link">
  14 + <span class="glyphicon glyphicon-refresh"></span>
  15 + <span>{{programa.program.categories[0].name}}</span>
  16 + </button>
  17 + </div>
  18 + <div class="navbar-right">
  19 + <select name="selectCategory" id="selectCategory-{{::programa.program.categories[0].id}}" class="form-control">
  20 + <option value="">-- Selectione um Tema --</option>
  21 + </select>
  22 + </div>
  23 + </div>
  24 + </div>
4 25  
  26 + <div ng-if="!programa.program">
  27 + <div class="alert alert-info" role="alert">Carregando informações sobre o progama</div>
  28 + </div>
  29 +
  30 + <div ng-if="programa.program">
  31 + <article>
  32 + <header class="program-banner">
  33 + <img class="program-banner--image" ng-src="{{programa.program.image.url}}" alt="Imagem de apresentação do progama.">
  34 + <div class="program-banner--strip">
  35 + <h1 class="program-banner--title">{{::programa.program.title}}</h1>
  36 + <p class="program-banner--abstract" ng-bind-html="programa.program.abstract"></p>
  37 + </div>
  38 +
  39 + </header>
  40 +
  41 + </article>
  42 + </div>
  43 + <div id="content" ng-bind-html="programa.program.body"></div>
5 44 </div>
  45 +
... ...