Commit d33b21cf018b87a7dc13be36ee80ea616a804a73
1 parent
e2f24bee
Exists in
master
and in
8 other branches
Sync
Showing
18 changed files
with
217 additions
and
197 deletions
Show diff stats
| ... | ... | @@ -0,0 +1,68 @@ |
| 1 | +(function() { | |
| 2 | + 'use strict'; | |
| 3 | + | |
| 4 | + angular | |
| 5 | + .module('dialoga') | |
| 6 | + .directive('articleBar', articleBar); | |
| 7 | + | |
| 8 | + /** @ngInject */ | |
| 9 | + function articleBar() { | |
| 10 | + var directive = { | |
| 11 | + restrict: 'E', | |
| 12 | + templateUrl: 'app/components/articleBar/articleBar.html', | |
| 13 | + scope: { | |
| 14 | + category: '=', | |
| 15 | + categories: '=' | |
| 16 | + }, | |
| 17 | + controller: ArticleBarController, | |
| 18 | + controllerAs: 'vm', | |
| 19 | + bindToController: true | |
| 20 | + }; | |
| 21 | + | |
| 22 | + return directive; | |
| 23 | + | |
| 24 | + /** @ngInject */ | |
| 25 | + function ArticleBarController($scope, $rootScope, $state, $log) { | |
| 26 | + $log.debug('ArticleBarController'); | |
| 27 | + | |
| 28 | + var vm = this; | |
| 29 | + | |
| 30 | + vm.$scope = $scope; | |
| 31 | + vm.$rootScope = $rootScope; | |
| 32 | + vm.$state = $state; | |
| 33 | + vm.theme = 'blue'; | |
| 34 | + | |
| 35 | + // if(!vm.category) { | |
| 36 | + // throw 'article bar without category'; | |
| 37 | + // } | |
| 38 | + | |
| 39 | + // if(!vm.categories) { | |
| 40 | + // throw 'article bar without categories list'; | |
| 41 | + // } | |
| 42 | + | |
| 43 | + vm.currentCategory = vm.category; | |
| 44 | + | |
| 45 | + vm.$scope.$watch('vm.currentCategory', function(newValue, oldValue){ | |
| 46 | + if(newValue !== oldValue){ | |
| 47 | + vm.$state.go('inicio', { | |
| 48 | + tema: newValue.slug | |
| 49 | + }, { | |
| 50 | + location: true | |
| 51 | + }); | |
| 52 | + } | |
| 53 | + }); | |
| 54 | + | |
| 55 | + vm.goBack = function (){ | |
| 56 | + var vm = this; | |
| 57 | + var prevState = vm.$rootScope.$previousState; | |
| 58 | + if(prevState && prevState.state.name){ | |
| 59 | + vm.$state.go(prevState.state.name, prevState.params); | |
| 60 | + } else { | |
| 61 | + vm.$state.go('inicio'); | |
| 62 | + } | |
| 63 | + }; | |
| 64 | + } | |
| 65 | + | |
| 66 | + } | |
| 67 | + | |
| 68 | +})(); | ... | ... |
| ... | ... | @@ -0,0 +1,23 @@ |
| 1 | +<div class="article-bar" ng-class="vm.theme"> | |
| 2 | + <div class="navbar"> | |
| 3 | + <div class="navbar-header"> | |
| 4 | + <button class="article-bar--item btn btn-link" ng-click="vm.goBack()"> | |
| 5 | + <!-- <span class="glyphicon glyphicon-share-alt" aria-hidden="true"></span> --> | |
| 6 | + <span class="glyphicon glyphicon-arrow-left" aria-hidden="true"></span> | |
| 7 | + Voltar | |
| 8 | + </button> | |
| 9 | + </div> | |
| 10 | + <div class="navbar-left" ng-if="vm.category"> | |
| 11 | + <button class="article-bar--item article-bar--category-button btn btn-link"> | |
| 12 | + <span class="icon" ng-class="'icon-tema-' + vm.category.slug"></span> | |
| 13 | + <span class="category-name">{{::vm.category.name}}</span> | |
| 14 | + </button> | |
| 15 | + </div> | |
| 16 | + <div class="navbar-right" ng-if="vm.categories"> | |
| 17 | + <label for="selectCategory" class="control-label sr-only" title="Selecione uma opção para acessar os programas do tema">Temas:</label> | |
| 18 | + <select id="selectCategory" name="selectCategory" class="article-bar--item form-control" ng-model="vm.currentCategory" ng-options="category.name for category in vm.categories track by category.slug"> | |
| 19 | + </select> | |
| 20 | + </div> | |
| 21 | + </div> | |
| 22 | + </div> | |
| 23 | +</div> | ... | ... |
| ... | ... | @@ -0,0 +1,53 @@ |
| 1 | +.article-bar { | |
| 2 | + position: relative; | |
| 3 | + background-color: #0042b1; | |
| 4 | + | |
| 5 | + .btn { | |
| 6 | + color: #fff; | |
| 7 | + font-weight: bold; | |
| 8 | + } | |
| 9 | + | |
| 10 | + &--item { | |
| 11 | + margin: 8px 0; | |
| 12 | + | |
| 13 | + @media (max-width: $screen-xs) { | |
| 14 | + margin: 8px; | |
| 15 | + } | |
| 16 | + | |
| 17 | + } | |
| 18 | + | |
| 19 | + &--category-button { | |
| 20 | + position: relative; | |
| 21 | + width: 125px; | |
| 22 | + text-align: right; | |
| 23 | + margin-left: 10px; | |
| 24 | + font-size: 24px; | |
| 25 | + line-height: 20px; | |
| 26 | + font-family: 'Open Sans'; | |
| 27 | + | |
| 28 | + .icon { | |
| 29 | + position: absolute; | |
| 30 | + top: -34px; | |
| 31 | + left: -34px; | |
| 32 | + transform: scale(.37); | |
| 33 | + } | |
| 34 | + } | |
| 35 | + | |
| 36 | + .navbar { | |
| 37 | + margin-bottom: 0; | |
| 38 | + } | |
| 39 | + | |
| 40 | + .navbar-right { | |
| 41 | + margin-right: 15px; | |
| 42 | + } | |
| 43 | + | |
| 44 | + @each $category, $color in $categories { | |
| 45 | + &.#{$category} { | |
| 46 | + background-color: $color; | |
| 47 | + } | |
| 48 | + } | |
| 49 | + | |
| 50 | + .contraste & { | |
| 51 | + background-color: #262626; | |
| 52 | + } | |
| 53 | +} | ... | ... |
src/app/components/programa/programa.directive.js
| ... | ... | @@ -9,11 +9,12 @@ |
| 9 | 9 | function programaBox($rootScope) { |
| 10 | 10 | |
| 11 | 11 | /** @ngInject */ |
| 12 | - function ProgramaController(ArticleService, $state, Slug, $log) { | |
| 12 | + function ProgramaController(ArticleService, $scope, $state, Slug, $log) { | |
| 13 | 13 | $log.debug('ProgramaController'); |
| 14 | 14 | |
| 15 | 15 | var vm = this; |
| 16 | 16 | vm.ArticleService = ArticleService; |
| 17 | + vm.$scope = $scope; | |
| 17 | 18 | vm.$state = $state; |
| 18 | 19 | vm.Slug = Slug; |
| 19 | 20 | vm.$log = $log; |
| ... | ... | @@ -28,6 +29,17 @@ |
| 28 | 29 | vm.program.slug = vm.Slug.slugify(vm.program.title); |
| 29 | 30 | } |
| 30 | 31 | |
| 32 | + if(!vm.category){ | |
| 33 | + vm.category = vm.program.categories[0]; | |
| 34 | + } | |
| 35 | + | |
| 36 | + if(!vm.banner){ | |
| 37 | + vm.banner = { | |
| 38 | + src: $rootScope.basePath + vm.program.image.url, | |
| 39 | + alt: 'Imagem de destaque do programa' | |
| 40 | + }; | |
| 41 | + } | |
| 42 | + | |
| 31 | 43 | vm.displayType = vm.display; |
| 32 | 44 | |
| 33 | 45 | // if(vm.program.color && !vm.program.bgColor){ |
| ... | ... | @@ -36,33 +48,6 @@ |
| 36 | 48 | // } |
| 37 | 49 | }; |
| 38 | 50 | |
| 39 | - ProgramaController.prototype.getCategory = function () { | |
| 40 | - var vm = this; | |
| 41 | - | |
| 42 | - return vm.program.categories[0]; | |
| 43 | - }; | |
| 44 | - | |
| 45 | - ProgramaController.prototype.getCategoryName = function () { | |
| 46 | - return this.getCategory().name; | |
| 47 | - }; | |
| 48 | - | |
| 49 | - ProgramaController.prototype.getCategorySlug = function () { | |
| 50 | - return this.getCategory().slug; | |
| 51 | - }; | |
| 52 | - | |
| 53 | - ProgramaController.prototype.getImageUrl = function () { | |
| 54 | - var vm = this; | |
| 55 | - | |
| 56 | - return $rootScope.basePath + vm.program.image.url; | |
| 57 | - }; | |
| 58 | - | |
| 59 | - ProgramaController.prototype.getImageAlt = function () { | |
| 60 | - var vm = this; | |
| 61 | - | |
| 62 | - vm.$log.warn('image is not accessible.'); | |
| 63 | - return 'TODO: create image alt on server-side.'; | |
| 64 | - }; | |
| 65 | - | |
| 66 | 51 | ProgramaController.prototype.isDisplay = function (display) { |
| 67 | 52 | return this.display === display; |
| 68 | 53 | }; |
| ... | ... | @@ -75,10 +60,6 @@ |
| 75 | 60 | return this.isDisplay('preview'); |
| 76 | 61 | }; |
| 77 | 62 | |
| 78 | - ProgramaController.prototype.isDisplayContent = function () { | |
| 79 | - return this.isDisplay('content'); | |
| 80 | - }; | |
| 81 | - | |
| 82 | 63 | ProgramaController.prototype.showContent = function () { |
| 83 | 64 | var vm = this; |
| 84 | 65 | ... | ... |
src/app/components/programa/programa.html
| 1 | -<div ng-if="vm.program" class="{{::vm.getCategorySlug()}}"> | |
| 1 | +<div ng-if="vm.program" class="{{vm.category.slug}}"> | |
| 2 | 2 | <article ng-if="vm.displayType == 'box'" class="program-box" ng-click="vm.showPreview()"> |
| 3 | 3 | <div> |
| 4 | - <h2 class="program-box--category">{{::vm.getCategoryName()}}</h2> | |
| 4 | + <h2 class="program-box--category">{{vm.category.name}}</h2> | |
| 5 | 5 | <div class="program-box--image-wrapper"> |
| 6 | - <!-- <img class="program-box--image img-responsive" ng-src="{{::vm.getImageUrl()}}" alt="{{::vm.getImageAlt()}}" /> --> | |
| 7 | - <div class="program-box--image" ng-style="{'background-image':'url( {{::vm.getImageUrl()}} )'}"></div> | |
| 6 | + <!-- <img class="program-box--image img-responsive" ng-src="{{vm.banner.src}}" alt="{{vm.banner.alt}}" /> --> | |
| 7 | + <div class="program-box--image" ng-style="{'background-image':'url( {{vm.banner.src}} )'}"></div> | |
| 8 | 8 | </div> |
| 9 | 9 | <div class="program-box--title"> |
| 10 | 10 | <h1>{{::vm.program.title}}</h1> |
| ... | ... | @@ -20,7 +20,7 @@ |
| 20 | 20 | |
| 21 | 21 | <article ng-if="vm.displayType == 'preview'" class="program-preview"> |
| 22 | 22 | <header class="program-banner"> |
| 23 | - <img class="program-banner--image" ng-src="{{vm.getImageUrl()}}" alt="{{::vm.getImageAlt()}}"> | |
| 23 | + <img class="program-banner--image" ng-src="{{vm.banner.src}}" alt="{{vm.banner.alt}}"> | |
| 24 | 24 | <div class="program-banner--strip"> |
| 25 | 25 | <h1 class="program-banner--title">{{::vm.program.title}}</h1> |
| 26 | 26 | <p class="program-banner--abstract" ng-bind-html="vm.program.abstract"></p> | ... | ... |
src/app/components/programas/programas.html
| ... | ... | @@ -12,8 +12,7 @@ |
| 12 | 12 | <span class="category-list--icon-circle" ng-class="category.slug"></span> |
| 13 | 13 | <span class="category-list--icon icon" ng-class="'icon-tema-' + category.slug"></span> |
| 14 | 14 | <span class="category-list--label">{{::category.name}}</span> |
| 15 | - <span class="glyphicon glyphicon-chevron-right pull-right"></span> | |
| 16 | - | |
| 15 | + <span class="category-list--icon--right glyphicon glyphicon-chevron-right"></span> | |
| 17 | 16 | </button> |
| 18 | 17 | </div> |
| 19 | 18 | </nav> | ... | ... |
src/app/components/programas/programas.scss
| ... | ... | @@ -67,6 +67,14 @@ |
| 67 | 67 | transform: scale(0.35); |
| 68 | 68 | } |
| 69 | 69 | |
| 70 | + .category-list--icon--right { | |
| 71 | + position: absolute; | |
| 72 | + right: 9px; | |
| 73 | + top: 50%; | |
| 74 | + margin-top: -9px; | |
| 75 | + transform: scale(1.4); | |
| 76 | + } | |
| 77 | + | |
| 70 | 78 | @each $category, $color in $categories { |
| 71 | 79 | &.#{$category} { |
| 72 | 80 | .list-group-item.active, | ... | ... |
src/app/index.scss
| ... | ... | @@ -5,6 +5,7 @@ |
| 5 | 5 | // $navbar-inverse-link-color: #5AADBB; |
| 6 | 6 | $icon-font-path: "../../bower_components/bootstrap-sass-official/assets/fonts/bootstrap/"; |
| 7 | 7 | |
| 8 | + | |
| 8 | 9 | /** |
| 9 | 10 | * Do not remove this comments bellow. It's the markers used by wiredep to inject |
| 10 | 11 | * sass dependencies when defined in the bower.json of your dependencies | ... | ... |
src/app/pages/article/article.html
src/app/pages/article/article.service.js
| ... | ... | @@ -63,8 +63,11 @@ |
| 63 | 63 | vm.getHome(function (data) { |
| 64 | 64 | var mainArticle = data.article; |
| 65 | 65 | var programList = mainArticle.children; |
| 66 | - var result = null; | |
| 66 | + var categories = mainArticle.categories; | |
| 67 | + | |
| 68 | + $rootScope._CATEGORIES = $rootScope._CATEGORIES ? $rootScope._CATEGORIES : categories; | |
| 67 | 69 | |
| 70 | + var result = null; | |
| 68 | 71 | for (var i = programList.length - 1; i >= 0; i--) { |
| 69 | 72 | var program = programList[i]; |
| 70 | 73 | ... | ... |
src/app/pages/inicio/inicio.controller.js
| ... | ... | @@ -7,7 +7,7 @@ |
| 7 | 7 | .controller('InicioPageController', InicioPageController); |
| 8 | 8 | |
| 9 | 9 | /** @ngInject */ |
| 10 | - function InicioPageController(ArticleService, $sce, $log) { | |
| 10 | + function InicioPageController(ArticleService, $rootScope, $sce, $log) { | |
| 11 | 11 | var vm = this; |
| 12 | 12 | |
| 13 | 13 | // aliases | ... | ... |
src/app/pages/inicio/inicio.html
| ... | ... | @@ -18,7 +18,7 @@ |
| 18 | 18 | <div ng-if="pageInicio.loading && !pageInicio.error"> |
| 19 | 19 | <div class="alert alert-info">Carregando conteúdo...</div> |
| 20 | 20 | </div> |
| 21 | - | |
| 21 | + | |
| 22 | 22 | <div ng-if="pageInicio.error"> |
| 23 | 23 | <div class="alert alert-danger">{{pageInicio.error}}</div> |
| 24 | 24 | </div> |
| ... | ... | @@ -26,7 +26,7 @@ |
| 26 | 26 | </div> |
| 27 | 27 | </section> |
| 28 | 28 | |
| 29 | -<section class="section-gray" ng-if="pageInicio.article"> | |
| 29 | +<section class="section-gray section-space-up" ng-if="pageInicio.article"> | |
| 30 | 30 | <div class="container"> |
| 31 | 31 | <programa-list article="pageInicio.article"></programa-list> |
| 32 | 32 | </div> | ... | ... |
src/app/pages/inicio/inicio.scss
src/app/pages/programas/conheca-o-programa.html
| 1 | 1 | <div class="container page--conheca-o-programa"> |
| 2 | - <div class="row"> | |
| 3 | - <div class="col-xs-12"> | |
| 4 | - <div class="article-bar" ng-class="pageProgramaContent.program.categories[0].slug"> | |
| 5 | - <div class="navbar"> | |
| 6 | - <div class="navbar-header"> | |
| 7 | - <button class="article-bar--item btn btn-link" ng-click="pageProgramaContent.goBack()"> | |
| 8 | - <!-- <span class="glyphicon glyphicon-share-alt" aria-hidden="true"></span> --> | |
| 9 | - <span class="glyphicon glyphicon-arrow-left" aria-hidden="true"></span> | |
| 10 | - Voltar | |
| 11 | - </button> | |
| 12 | - </div> | |
| 13 | - <div class="navbar-left"> | |
| 14 | - <button class="article-bar--item btn btn-link"> | |
| 15 | - <span class="glyphicon glyphicon-refresh"></span> | |
| 16 | - <span class="category-name">{{::pageProgramaContent.program.categories[0].name}}</span> | |
| 17 | - </button> | |
| 18 | - </div> | |
| 19 | - <div class="navbar-right" ng-if="pageProgramaContent.categories"> | |
| 20 | - <label for="selectCategory" class="control-label sr-only" title="Selecione uma opção para acessar os programas do tema">Temas:</label> | |
| 21 | - <select id="selectCategory" name="selectCategory" class="article-bar--item form-control" ng-model="pageProgramaContent.currentCategory" ng-options="category.name for category in pageProgramaContent.categories track by category.slug"> | |
| 22 | - </select> | |
| 23 | - </div> | |
| 24 | - </div> | |
| 25 | - </div> | |
| 26 | - </div> | |
| 2 | + <div ng-if="pageProgramaContent.program && pageProgramaContent.categories"> | |
| 3 | + <article-bar category="pageProgramaContent.program.categories[0]" categories="pageProgramaContent.categories"></article-bar> | |
| 4 | + </div> | |
| 5 | + | |
| 6 | + <div ng-if="!pageProgramaContent.program.body"> | |
| 7 | + <div ng-if="!pageProgramaContent.error" class="alert alert-info" role="alert">Carregando detalhes sobre o progama...</div> | |
| 8 | + <div ng-if="pageProgramaContent.error" class="alert alert-warning" role="alert">{{pageProgramaContent}}</div> | |
| 27 | 9 | </div> |
| 28 | 10 | |
| 29 | - <div class="row"> | |
| 11 | + <div ng-if="pageProgramaContent.program.body"> | |
| 30 | 12 | <article class="program-content"> |
| 31 | - <div ng-if="!pageProgramaContent.program.body"> | |
| 32 | - <div ng-if="!pageProgramaContent.error" class="alert alert-info" role="alert">Carregando detalhes sobre o progama...</div> | |
| 33 | - <div ng-if="pageProgramaContent.error" class="alert alert-warning" role="alert">{{pageProgramaContent}}</div> | |
| 34 | - </div> | |
| 35 | - <div ng-if="pageProgramaContent.program.body"> | |
| 13 | + <div> | |
| 36 | 14 | <section ng-bind-html="pageProgramaContent.program.body"></section> |
| 37 | 15 | </div> |
| 38 | 16 | </article> |
| 39 | - </div> | |
| 40 | - <div class="row"> | |
| 41 | 17 | <aside class="program--aside"ng-class="pageProgramaContent.program.categories[0].slug"> |
| 42 | 18 | <div class="col-sm-6" > |
| 43 | 19 | <div class="button--themed"> | ... | ... |
src/app/pages/programas/programa.content.controller.js
| ... | ... | @@ -28,13 +28,15 @@ |
| 28 | 28 | var slug = params.slug; |
| 29 | 29 | |
| 30 | 30 | vm.program = null; |
| 31 | + vm.categories = null; | |
| 31 | 32 | vm.currentCategory = null; |
| 32 | - vm.loadingContent = null; | |
| 33 | - vm.error = null; | |
| 33 | + vm.loading = true; | |
| 34 | + vm.error = false; | |
| 34 | 35 | |
| 35 | 36 | vm.ArticleService.getHome(function(data){ |
| 36 | 37 | vm.categories = data.article.categories; |
| 37 | 38 | }, function (error) { |
| 39 | + vm.error = error; | |
| 38 | 40 | vm.$log.error(error); |
| 39 | 41 | }); |
| 40 | 42 | |
| ... | ... | @@ -42,16 +44,6 @@ |
| 42 | 44 | vm.program = program; |
| 43 | 45 | vm.currentCategory = vm.program.categories[0]; |
| 44 | 46 | |
| 45 | - vm.$scope.$watch('programa.currentCategory', function(newValue, oldValue){ | |
| 46 | - if(newValue !== oldValue){ | |
| 47 | - vm.$state.go('inicio', { | |
| 48 | - tema: newValue.slug | |
| 49 | - }, { | |
| 50 | - location: true | |
| 51 | - }); | |
| 52 | - } | |
| 53 | - }); | |
| 54 | - | |
| 55 | 47 | vm.loadContent(); |
| 56 | 48 | |
| 57 | 49 | }, function (error) { |
| ... | ... | @@ -64,29 +56,16 @@ |
| 64 | 56 | ProgramaContentPageController.prototype.loadContent = function () { |
| 65 | 57 | var vm = this; |
| 66 | 58 | |
| 67 | - vm.loadingContent = true; | |
| 59 | + vm.loading = true; | |
| 68 | 60 | if(!vm.program.body){ |
| 69 | 61 | vm.ArticleService.getContentById(vm.program.id, function (data) { |
| 70 | 62 | vm.program.body = data.article.body; |
| 71 | - vm.loadingContent = false; | |
| 63 | + vm.loading = false; | |
| 72 | 64 | }, function (error) { |
| 73 | - vm.loadingContent = false; | |
| 65 | + vm.loading = false; | |
| 74 | 66 | vm.error = error; |
| 75 | 67 | }); |
| 76 | 68 | } |
| 77 | - vm.loadingContent = false; | |
| 78 | - }; | |
| 79 | - | |
| 80 | - ProgramaContentPageController.prototype.goBack = function () { | |
| 81 | - var vm = this; | |
| 82 | - | |
| 83 | - var prevState = vm.$rootScope.$previousState; | |
| 84 | - if(prevState && prevState.state.name){ | |
| 85 | - vm.$state.go(prevState.state.name, prevState.params); | |
| 86 | - } else { | |
| 87 | - vm.$state.go('programa', { | |
| 88 | - slug: vm.program.slug | |
| 89 | - }); | |
| 90 | - } | |
| 69 | + vm.loading = false; | |
| 91 | 70 | }; |
| 92 | 71 | })(); | ... | ... |
src/app/pages/programas/programa.controller.js
| ... | ... | @@ -28,12 +28,15 @@ |
| 28 | 28 | var slug = params.slug; |
| 29 | 29 | |
| 30 | 30 | vm.program = null; |
| 31 | + vm.categories = null; | |
| 31 | 32 | vm.currentCategory = null; |
| 32 | - vm.loadingContent = null; | |
| 33 | + vm.loading = true; | |
| 34 | + vm.error = false; | |
| 33 | 35 | |
| 34 | 36 | vm.ArticleService.getHome(function(data){ |
| 35 | 37 | vm.categories = data.article.categories; |
| 36 | 38 | }, function (error) { |
| 39 | + vm.error = error; | |
| 37 | 40 | vm.$log.error(error); |
| 38 | 41 | }); |
| 39 | 42 | |
| ... | ... | @@ -41,52 +44,25 @@ |
| 41 | 44 | vm.program = program; |
| 42 | 45 | vm.currentCategory = vm.program.categories[0]; |
| 43 | 46 | |
| 44 | - vm.$scope.$watch('programa.currentCategory', function(newValue, oldValue){ | |
| 45 | - if(newValue !== oldValue){ | |
| 46 | - vm.$state.go('inicio', { | |
| 47 | - tema: newValue.slug | |
| 48 | - }, { | |
| 49 | - location: true | |
| 50 | - }); | |
| 51 | - } | |
| 52 | - }); | |
| 53 | - | |
| 54 | 47 | // load proposals |
| 55 | - // vm.ArticleService.getRandomProposals(program.id).then(function(proposal){ | |
| 48 | + // vm.ArticleService.getRandomProposal(program.id, function(proposal){ | |
| 56 | 49 | // vm.program.proposal = proposal; |
| 57 | 50 | // }, function (error){ |
| 58 | 51 | // vm.$log.error(error); |
| 59 | 52 | // }); |
| 60 | 53 | |
| 61 | 54 | // load events |
| 62 | - // vm.ArticleService.getEvents(program.id).then(function(proposal){ | |
| 63 | - // vm.program.proposal = proposal; | |
| 64 | - // }, function (error){ | |
| 65 | - // vm.$log.error(error); | |
| 66 | - // }); | |
| 67 | - | |
| 68 | - // load body content | |
| 69 | - // vm.ArticleService.getBodyContent(program.id).then(function(proposal){ | |
| 55 | + // vm.ArticleService.getEvents(program.id, function(proposal){ | |
| 70 | 56 | // vm.program.proposal = proposal; |
| 71 | 57 | // }, function (error){ |
| 72 | 58 | // vm.$log.error(error); |
| 73 | 59 | // }); |
| 74 | 60 | |
| 75 | 61 | }, function (error) { |
| 62 | + vm.error = error; | |
| 76 | 63 | vm.$log.error(error); |
| 77 | 64 | vm.$log.info('Rollback to home page.'); |
| 78 | 65 | vm.$state.go('inicio', {}, {location: true}); |
| 79 | 66 | }); |
| 80 | 67 | }; |
| 81 | - | |
| 82 | - ProgramaPageController.prototype.goBack = function () { | |
| 83 | - var vm = this; | |
| 84 | - | |
| 85 | - var prevState = vm.$rootScope.$previousState; | |
| 86 | - if(prevState && prevState.state.name){ | |
| 87 | - vm.$state.go(prevState.state.name, prevState.params); | |
| 88 | - } else { | |
| 89 | - vm.$state.go('inicio'); | |
| 90 | - } | |
| 91 | - }; | |
| 92 | 68 | })(); | ... | ... |
src/app/pages/programas/programa.html
| 1 | 1 | <div class="container"> |
| 2 | 2 | |
| 3 | - <div class="row"> | |
| 4 | - <div class="col-xs-12"> | |
| 5 | - <div class="article-bar" ng-class="pagePrograma.program.categories[0].slug"> | |
| 6 | - <div class="navbar"> | |
| 7 | - <div class="navbar-header"> | |
| 8 | - <button class="article-bar--item btn btn-link" ng-click="pagePrograma.goBack()"> | |
| 9 | - <!-- <span class="glyphicon glyphicon-share-alt" aria-hidden="true"></span> --> | |
| 10 | - <span class="glyphicon glyphicon-arrow-left" aria-hidden="true"></span> | |
| 11 | - Voltar | |
| 12 | - </button> | |
| 13 | - </div> | |
| 14 | - <div class="navbar-left"> | |
| 15 | - <button class="article-bar--item btn btn-link"> | |
| 16 | - <span class="glyphicon glyphicon-refresh"></span> | |
| 17 | - <span class="category-name">{{::pagePrograma.program.categories[0].name}}</span> | |
| 18 | - </button> | |
| 19 | - </div> | |
| 20 | - <div class="navbar-right" ng-if="pagePrograma.categories"> | |
| 21 | - <label for="selectCategory" class="control-label sr-only" title="Selecione uma opção para acessar os programas do tema">Temas:</label> | |
| 22 | - <select id="selectCategory" name="selectCategory" class="article-bar--item form-control" ng-model="pagePrograma.currentCategory" ng-options="category.name for category in pagePrograma.categories track by category.slug"> | |
| 23 | - </select> | |
| 24 | - </div> | |
| 25 | - </div> | |
| 26 | - </div> | |
| 27 | - </div> | |
| 3 | + <div ng-if="pagePrograma.program && pagePrograma.categories"> | |
| 4 | + <article-bar category="pagePrograma.program.categories[0]" categories="pagePrograma.categories"></article-bar> | |
| 28 | 5 | </div> |
| 29 | 6 | |
| 30 | 7 | <div ng-if="!pagePrograma.program"> |
| 31 | 8 | <div class="alert alert-info" role="alert">Carregando informações sobre o progama</div> |
| 32 | 9 | </div> |
| 33 | 10 | |
| 34 | - <div ng-if="pagePrograma.program"> | |
| 11 | + <div ng-if="pagePrograma.program && pagePrograma.categories"> | |
| 35 | 12 | <programa-box program="pagePrograma.program" display="'preview'"></programa-box> |
| 36 | 13 | </div> |
| 37 | 14 | </div> | ... | ... |
src/app/pages/programas/programas.scss
| 1 | -.article-bar { | |
| 2 | - | |
| 3 | - .btn { | |
| 4 | - color: #fff; | |
| 5 | - font-weight: bold; | |
| 6 | - } | |
| 7 | - | |
| 8 | - &--item { | |
| 9 | - margin: 8px 0; | |
| 10 | - | |
| 11 | - @media (max-width: $screen-xs) { | |
| 12 | - margin: 8px; | |
| 13 | - } | |
| 14 | - } | |
| 15 | - | |
| 16 | - .navbar { | |
| 17 | - margin-bottom: 0; | |
| 18 | - } | |
| 19 | - | |
| 20 | - .navbar-right { | |
| 21 | - margin-right: 15px; | |
| 22 | - } | |
| 23 | - | |
| 24 | - @each $category, $color in $categories { | |
| 25 | - &.#{$category} { | |
| 26 | - background-color: $color; | |
| 27 | - } | |
| 28 | - } | |
| 29 | - | |
| 30 | - .contraste & { | |
| 31 | - background-color: #262626; | |
| 32 | - } | |
| 33 | -} | |
| 34 | - | |
| 35 | 1 | .program--aside { |
| 36 | 2 | margin-top: 20px; |
| 3 | + padding-top: 20px; | |
| 4 | + | |
| 5 | + .button--themed { | |
| 6 | + padding-top: 0; | |
| 7 | + } | |
| 37 | 8 | } |
| 38 | 9 | ... | ... |