Commit 95ba77865bca9997223fd883aa4d232b82e3a956
1 parent
8a9c29fb
Exists in
master
and in
8 other branches
Add icons with spire. Using css3 transform scale.
Showing
84 changed files
with
331 additions
and
245 deletions
Show diff stats
| ... | ... | @@ -0,0 +1,21 @@ |
| 1 | +'use strict'; | |
| 2 | + | |
| 3 | +var path = require('path'); | |
| 4 | +var gulp = require('gulp'); | |
| 5 | +var conf = require('./conf'); | |
| 6 | + | |
| 7 | +var gulpif = require('gulp-if'); | |
| 8 | +var sprity = require('sprity'); | |
| 9 | + | |
| 10 | +gulp.task('sprites', function () { | |
| 11 | + var src = path.join(conf.paths.src, '/assets/images/icons/*.png'); | |
| 12 | + var destCss = path.join(conf.paths.tmp, '/serve/app/'); | |
| 13 | + var destImg = path.join(conf.paths.tmp, '/serve/assets/images/icons'); | |
| 14 | + | |
| 15 | + return sprity.src({ | |
| 16 | + src: src, | |
| 17 | + style: 'sprite.css', | |
| 18 | + cssPath: '../assets/images/icons/' | |
| 19 | + }) | |
| 20 | + .pipe(gulpif('*.png', gulp.dest(destImg), gulp.dest(destCss))); | |
| 21 | +}); | ... | ... |
gulp/inject.js
| ... | ... | @@ -9,7 +9,7 @@ var $ = require('gulp-load-plugins')(); |
| 9 | 9 | var wiredep = require('wiredep').stream; |
| 10 | 10 | var _ = require('lodash'); |
| 11 | 11 | |
| 12 | -gulp.task('inject', ['scripts', 'styles'], function () { | |
| 12 | +gulp.task('inject', ['scripts', 'styles', 'sprites'], function () { | |
| 13 | 13 | var injectStyles = gulp.src([ |
| 14 | 14 | path.join(conf.paths.tmp, '/serve/app/**/*.css'), |
| 15 | 15 | path.join('!' + conf.paths.tmp, '/serve/app/vendor.css') | ... | ... |
gulp/watch.js
| ... | ... | @@ -25,6 +25,16 @@ gulp.task('watch', ['inject'], function () { |
| 25 | 25 | } |
| 26 | 26 | }); |
| 27 | 27 | |
| 28 | + gulp.watch([ | |
| 29 | + path.join(conf.paths.src, '/assets/images/icons/*.png') | |
| 30 | + ], function(event) { | |
| 31 | + if(isOnlyChange(event)) { | |
| 32 | + gulp.start('sprites'); | |
| 33 | + } else { | |
| 34 | + gulp.start('inject'); | |
| 35 | + } | |
| 36 | + }); | |
| 37 | + | |
| 28 | 38 | gulp.watch(path.join(conf.paths.src, '/app/**/*.js'), function(event) { |
| 29 | 39 | if(isOnlyChange(event)) { |
| 30 | 40 | gulp.start('scripts'); | ... | ... |
package.json
| ... | ... | @@ -32,7 +32,7 @@ |
| 32 | 32 | "gulp-sass": "~2.0.1", |
| 33 | 33 | "gulp-angular-filesort": "~1.1.1", |
| 34 | 34 | "main-bower-files": "~2.8.0", |
| 35 | - "merge-stream": "~0.1.7", | |
| 35 | + "merge-stream": "^1.0.0", | |
| 36 | 36 | "jshint-stylish": "~2.0.0", |
| 37 | 37 | "wiredep": "~2.2.2", |
| 38 | 38 | "karma": "~0.12.36", |
| ... | ... | @@ -47,7 +47,9 @@ |
| 47 | 47 | "http-proxy-middleware": "~0.0.5", |
| 48 | 48 | "chalk": "~1.0.0", |
| 49 | 49 | "uglify-save-license": "~0.4.1", |
| 50 | - "wrench": "~1.5.8" | |
| 50 | + "wrench": "~1.5.8", | |
| 51 | + "gulp-if": "^1.2.5", | |
| 52 | + "sprity": "^1.0.7" | |
| 51 | 53 | }, |
| 52 | 54 | "engines": { |
| 53 | 55 | "node": ">=0.10.0" | ... | ... |
src/app/components/navbar/navbar.directive.js
| ... | ... | @@ -11,7 +11,7 @@ |
| 11 | 11 | restrict: 'E', |
| 12 | 12 | templateUrl: 'app/components/navbar/navbar.html', |
| 13 | 13 | scope: { |
| 14 | - creationDate: '=' | |
| 14 | + creationDate: '=' | |
| 15 | 15 | }, |
| 16 | 16 | controller: NavbarController, |
| 17 | 17 | controllerAs: 'vm', |
| ... | ... | @@ -23,11 +23,15 @@ |
| 23 | 23 | /** @ngInject */ |
| 24 | 24 | function NavbarController($log) { |
| 25 | 25 | $log.debug('NavbarController'); |
| 26 | - // var vm = this; | |
| 27 | 26 | |
| 28 | - // "vm.creation" is avaible by directive option "bindToController: true" | |
| 29 | - // vm.relativeDate = moment(vm.creationDate).fromNow(); | |
| 27 | + var vm = this; | |
| 28 | + | |
| 29 | + vm.scrollTo = function(hash) { | |
| 30 | + var $el = angular.element('#' + hash); | |
| 31 | + angular.element('body').animate({scrollTop: $el.offset().top}, 'slow'); | |
| 32 | + }; | |
| 30 | 33 | } |
| 34 | + | |
| 31 | 35 | } |
| 32 | 36 | |
| 33 | 37 | })(); | ... | ... |
src/app/components/navbar/navbar.html
| 1 | -<nav class="navbar navbar-static-top"> | |
| 1 | +<nav class="header-navbar navbar navbar-static-top"> | |
| 2 | 2 | <div class="container-fluid"> |
| 3 | 3 | <div class="navbar-header"> |
| 4 | 4 | <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false"> |
| ... | ... | @@ -16,7 +16,7 @@ |
| 16 | 16 | <div id="navbar-collapse" class="collapse navbar-collapse"> |
| 17 | 17 | <ul class="nav navbar-nav"> |
| 18 | 18 | <li><a ui-sref="sobre">Sobre</a></li> |
| 19 | - <li><a ui-sref="programas">Programas</a></li> | |
| 19 | + <li><a ui-sref="inicio({'#':'lista-de-programas'})" ng-click="vm.scrollTo('lista-de-programas')">Programas</a></li> | |
| 20 | 20 | <!-- <li><a ui-sref="ranking">Ranking</a></li> --> |
| 21 | 21 | <!-- <li><a ui-sref="duvidas">Dúvidas</a></li> --> |
| 22 | 22 | <!-- <li><a ui-sref="respostas">Respostas</a></li> --> | ... | ... |
src/app/components/navbar/navbar.scss
| 1 | -.navbar-brand { | |
| 2 | - height: auto; | |
| 3 | -} | |
| 1 | +.header-navbar { | |
| 4 | 2 | |
| 5 | -.navbar-nav > li > a { | |
| 6 | - padding-top: 30px; | |
| 7 | - padding-bottom: 30px; | |
| 8 | -} | |
| 3 | + .navbar-brand { | |
| 4 | + height: auto; | |
| 5 | + } | |
| 6 | + | |
| 7 | + .navbar-nav a { | |
| 8 | + padding-top: 30px; | |
| 9 | + padding-bottom: 30px; | |
| 10 | + text-transform: uppercase; | |
| 11 | + color: #03316f; | |
| 12 | + | |
| 13 | + -webkit-transition: all 0.2s ease-in-out; | |
| 14 | + -moz-transition: all 0.2s ease-in-out; | |
| 15 | + -o-transition: all 0.2s ease-in-out; | |
| 16 | + transition: all 0.2s ease-in-out; | |
| 17 | + | |
| 18 | + .contraste & { | |
| 19 | + color: #fff; | |
| 20 | + } | |
| 21 | + } | |
| 9 | 22 | |
| 10 | -.navbar-toggle .icon-bar { | |
| 11 | - background-color: #333; | |
| 23 | + .navbar-toggle .icon-bar { | |
| 24 | + background-color: #333; | |
| 25 | + } | |
| 12 | 26 | } | ... | ... |
src/app/components/programas/programas.directive.js
| ... | ... | @@ -27,10 +27,10 @@ |
| 27 | 27 | vm.init(); |
| 28 | 28 | } |
| 29 | 29 | |
| 30 | - ProgramaListController.prototype.init = function () { | |
| 30 | + ProgramaListController.prototype.init = function() { | |
| 31 | 31 | var vm = this; |
| 32 | 32 | |
| 33 | - if(!vm.article){ | |
| 33 | + if (!vm.article) { | |
| 34 | 34 | vm.$log.warn('no article to display. Tip: use a ng-if before use this directive'); |
| 35 | 35 | return; |
| 36 | 36 | } |
| ... | ... | @@ -38,9 +38,9 @@ |
| 38 | 38 | vm.categories = vm.article.categories; |
| 39 | 39 | vm.programs = vm.article.children; |
| 40 | 40 | vm.orderCriteries = [ |
| 41 | - { label: 'Aleatório', name: 'aleatorio' }, | |
| 42 | 41 | { label: 'Título', name: 'titulo' }, |
| 43 | - { label: 'Tema', name: 'tema' } | |
| 42 | + { label: 'Tema', name: 'tema' }, | |
| 43 | + { label: 'Aleatório', name: 'aleatorio' } | |
| 44 | 44 | ]; |
| 45 | 45 | |
| 46 | 46 | vm.filtredProgramList = vm.getFiltredPrograms(); |
| ... | ... | @@ -59,31 +59,31 @@ |
| 59 | 59 | } |
| 60 | 60 | |
| 61 | 61 | // update window location params |
| 62 | - vm.$scope.$watch('vm.query', function(newValue, oldValue){ | |
| 62 | + vm.$scope.$watch('vm.query', function(newValue/*, oldValue*/) { | |
| 63 | 63 | vm.search.filtro = newValue ? newValue : null; |
| 64 | 64 | vm.$location.search('filtro', vm.search.filtro); |
| 65 | 65 | vm.filtredProgramList = vm.getFiltredPrograms(); |
| 66 | 66 | }); |
| 67 | 67 | |
| 68 | - vm.$scope.$watch('vm.limitTo', function(newValue, oldValue){ | |
| 68 | + vm.$scope.$watch('vm.limitTo', function(newValue/*, oldValue*/) { | |
| 69 | 69 | vm.search.limite = (newValue && newValue !== vm.defaultLimit) ? newValue : null; |
| 70 | 70 | vm.$location.search('limite', vm.search.limite); |
| 71 | 71 | vm.filtredProgramList = vm.getFiltredPrograms(); |
| 72 | 72 | }); |
| 73 | 73 | |
| 74 | - vm.$scope.$watch('vm.categoryFilter', function(newValue, oldValue){ | |
| 74 | + vm.$scope.$watch('vm.categoryFilter', function(newValue/*, oldValue*/) { | |
| 75 | 75 | vm.search.tema = newValue ? newValue.slug : null; |
| 76 | 76 | vm.$location.search('tema', vm.search.tema); |
| 77 | 77 | vm.filtredProgramList = vm.getFiltredPrograms(); |
| 78 | 78 | }); |
| 79 | 79 | |
| 80 | - vm.$scope.$watch('vm.orderCriteria', function(newValue, oldValue){ | |
| 80 | + vm.$scope.$watch('vm.orderCriteria', function(newValue/*, oldValue*/) { | |
| 81 | 81 | vm.search.ordem = (newValue && newValue.name) ? newValue.name : null; |
| 82 | 82 | vm.$location.search('ordem', vm.search.ordem); |
| 83 | 83 | vm.filtredProgramList = vm.getFiltredPrograms(); |
| 84 | 84 | }); |
| 85 | 85 | |
| 86 | - vm.$scope.$watch('vm.reverse', function(newValue, oldValue){ | |
| 86 | + vm.$scope.$watch('vm.reverse', function(newValue/*, oldValue*/) { | |
| 87 | 87 | vm.search.reverso = newValue ? newValue : null; |
| 88 | 88 | vm.$location.search('reverso', vm.search.reverso); |
| 89 | 89 | vm.filtredProgramList = vm.getFiltredPrograms(); |
| ... | ... | @@ -91,7 +91,7 @@ |
| 91 | 91 | |
| 92 | 92 | }; |
| 93 | 93 | |
| 94 | - ProgramaListController.prototype.resetFilterValues = function () { | |
| 94 | + ProgramaListController.prototype.resetFilterValues = function() { | |
| 95 | 95 | var vm = this; |
| 96 | 96 | |
| 97 | 97 | vm.query = null; |
| ... | ... | @@ -100,40 +100,41 @@ |
| 100 | 100 | vm.orderCriteria = null; |
| 101 | 101 | }; |
| 102 | 102 | |
| 103 | - ProgramaListController.prototype.getIconClasses = function (category) { | |
| 103 | + ProgramaListController.prototype.getIconClasses = function(category) { | |
| 104 | 104 | var vm = this; |
| 105 | 105 | |
| 106 | 106 | vm.$log.debug('[TODO] getIconClasses of category:', category); |
| 107 | 107 | return 'glyphicon glyphicon-exclamation-sign'; |
| 108 | 108 | }; |
| 109 | 109 | |
| 110 | - ProgramaListController.prototype.getCategoryBySlug = function (categorySlug) { | |
| 110 | + ProgramaListController.prototype.getCategoryBySlug = function(categorySlug) { | |
| 111 | 111 | var vm = this; |
| 112 | 112 | var result = null; |
| 113 | 113 | |
| 114 | - angular.forEach(vm.categories, function (value, key){ | |
| 115 | - if(value.slug === categorySlug){ | |
| 114 | + angular.forEach(vm.categories, function(value, key) { | |
| 115 | + if (value.slug === categorySlug) { | |
| 116 | 116 | result = value; |
| 117 | 117 | } |
| 118 | - }) | |
| 118 | + }); | |
| 119 | + | |
| 119 | 120 | return result; |
| 120 | - } | |
| 121 | + }; | |
| 121 | 122 | |
| 122 | - ProgramaListController.prototype.filterByCategory = function (category, $event) { | |
| 123 | + ProgramaListController.prototype.filterByCategory = function(category, $event) { | |
| 123 | 124 | var vm = this; |
| 124 | 125 | |
| 125 | 126 | $event.stopPropagation(); |
| 126 | 127 | |
| 127 | - if(category !== vm.categoryFilter){ | |
| 128 | + if (category !== vm.categoryFilter) { | |
| 128 | 129 | |
| 129 | 130 | // selected new filter |
| 130 | 131 | vm.categoryFilter = category; |
| 131 | - }else{ | |
| 132 | + } else { | |
| 132 | 133 | vm.categoryFilter = null; |
| 133 | 134 | } |
| 134 | 135 | }; |
| 135 | 136 | |
| 136 | - ProgramaListController.prototype.showAll = function ($event) { | |
| 137 | + ProgramaListController.prototype.showAll = function($event) { | |
| 137 | 138 | var vm = this; |
| 138 | 139 | |
| 139 | 140 | $event.stopPropagation(); |
| ... | ... | @@ -142,7 +143,7 @@ |
| 142 | 143 | vm.limitTo = vm.programs.length; |
| 143 | 144 | }; |
| 144 | 145 | |
| 145 | - ProgramaListController.prototype.getFiltredPrograms = function () { | |
| 146 | + ProgramaListController.prototype.getFiltredPrograms = function() { | |
| 146 | 147 | var vm = this; |
| 147 | 148 | |
| 148 | 149 | var input = vm.programs; |
| ... | ... | @@ -155,15 +156,15 @@ |
| 155 | 156 | var limitTo = vm.$filter('limitTo'); |
| 156 | 157 | var limit = vm.limitTo ? vm.limitTo : 4; |
| 157 | 158 | |
| 158 | - if(categoryFilter){ | |
| 159 | + if (categoryFilter) { | |
| 159 | 160 | output = _filterByCategory(output, categoryFilter); |
| 160 | 161 | } |
| 161 | 162 | |
| 162 | - if(query){ | |
| 163 | + if (query) { | |
| 163 | 164 | output = filter(output, query, false); |
| 164 | 165 | } |
| 165 | 166 | |
| 166 | - switch(orderCriteria.name) { | |
| 167 | + switch (orderCriteria.name) { | |
| 167 | 168 | case 'titulo': |
| 168 | 169 | output = orderBy(output, 'title', vm.reverse); |
| 169 | 170 | break; |
| ... | ... | @@ -171,21 +172,23 @@ |
| 171 | 172 | output = orderBy(output, 'categories[0].name', vm.reverse); |
| 172 | 173 | break; |
| 173 | 174 | case 'more_participants': |
| 174 | - $log.info('Criteria not handled yet: ', orderCriteria); | |
| 175 | + vm.$log.info('Criteria not handled yet: ', orderCriteria); | |
| 175 | 176 | break; |
| 176 | 177 | case 'aleatorio': |
| 177 | - default: | |
| 178 | 178 | // shuffling |
| 179 | - // if(!vm._isShuffled){ | |
| 180 | - output = vm.filterShuffle(output); | |
| 179 | + // if (!vm._isShuffled){ | |
| 180 | + output = vm.filterShuffle(output); | |
| 181 | 181 | // vm._isShuffled = true; |
| 182 | 182 | // } |
| 183 | 183 | |
| 184 | - if(vm.reverse){ | |
| 184 | + if (vm.reverse) { | |
| 185 | 185 | output = output.slice().reverse(); |
| 186 | 186 | } |
| 187 | 187 | |
| 188 | 188 | break; |
| 189 | + default: | |
| 190 | + vm.$log.warn('Criteria not matched: ', orderCriteria); | |
| 191 | + break; | |
| 189 | 192 | } |
| 190 | 193 | |
| 191 | 194 | output = limitTo(output, limit); |
| ... | ... | @@ -193,7 +196,7 @@ |
| 193 | 196 | return output; |
| 194 | 197 | }; |
| 195 | 198 | |
| 196 | - ProgramaListController.prototype.filterShuffle = function (input) { | |
| 199 | + ProgramaListController.prototype.filterShuffle = function(input) { | |
| 197 | 200 | var result = []; |
| 198 | 201 | var resultByCategory = {}; |
| 199 | 202 | |
| ... | ... | @@ -202,7 +205,7 @@ |
| 202 | 205 | var program = input[i]; |
| 203 | 206 | var categorySlug = program.categories[0].slug; |
| 204 | 207 | |
| 205 | - if(!resultByCategory[categorySlug]){ | |
| 208 | + if (!resultByCategory[categorySlug]) { | |
| 206 | 209 | resultByCategory[categorySlug] = []; |
| 207 | 210 | } |
| 208 | 211 | |
| ... | ... | @@ -210,9 +213,11 @@ |
| 210 | 213 | } |
| 211 | 214 | |
| 212 | 215 | // shuffle each array |
| 213 | - for (var prop in resultByCategory){ | |
| 214 | - if( resultByCategory.hasOwnProperty( prop ) ) { | |
| 215 | - var categoryWithPrograms = resultByCategory[prop]; | |
| 216 | + var prop = null; | |
| 217 | + var categoryWithPrograms = null; | |
| 218 | + for (prop in resultByCategory) { | |
| 219 | + if (resultByCategory.hasOwnProperty(prop)) { | |
| 220 | + categoryWithPrograms = resultByCategory[prop]; | |
| 216 | 221 | resultByCategory[prop] = shuffle(categoryWithPrograms); |
| 217 | 222 | } |
| 218 | 223 | } |
| ... | ... | @@ -224,12 +229,14 @@ |
| 224 | 229 | |
| 225 | 230 | var foundProgram = false; |
| 226 | 231 | // each categoryList with array of program |
| 227 | - for (var prop in resultByCategory){ | |
| 232 | + prop = null; | |
| 233 | + categoryWithPrograms = null; | |
| 234 | + for (prop in resultByCategory) { | |
| 228 | 235 | |
| 229 | - if( resultByCategory.hasOwnProperty( prop ) ) { | |
| 230 | - var categoryWithPrograms = resultByCategory[prop]; | |
| 236 | + if (resultByCategory.hasOwnProperty(prop)) { | |
| 237 | + categoryWithPrograms = resultByCategory[prop]; | |
| 231 | 238 | |
| 232 | - if (categoryWithPrograms.length > 0 ) { | |
| 239 | + if (categoryWithPrograms.length > 0) { | |
| 233 | 240 | var pivotProgram = categoryWithPrograms.pop(); |
| 234 | 241 | result.push(pivotProgram); |
| 235 | 242 | foundProgram = true; |
| ... | ... | @@ -237,13 +244,13 @@ |
| 237 | 244 | } |
| 238 | 245 | } |
| 239 | 246 | |
| 240 | - if(!foundProgram){ | |
| 247 | + if (!foundProgram) { | |
| 241 | 248 | hasProgram = false; |
| 242 | 249 | } |
| 243 | 250 | } |
| 244 | 251 | |
| 245 | 252 | return result; |
| 246 | - } | |
| 253 | + }; | |
| 247 | 254 | |
| 248 | 255 | var directive = { |
| 249 | 256 | restrict: 'E', |
| ... | ... | @@ -259,10 +266,10 @@ |
| 259 | 266 | return directive; |
| 260 | 267 | } |
| 261 | 268 | |
| 262 | - function _filterByCategory (input, category){ | |
| 269 | + function _filterByCategory (input, category) { | |
| 263 | 270 | input = input || []; |
| 264 | 271 | |
| 265 | - if(!category){ | |
| 272 | + if (!category) { | |
| 266 | 273 | // no filter |
| 267 | 274 | return input; |
| 268 | 275 | } |
| ... | ... | @@ -270,7 +277,7 @@ |
| 270 | 277 | var out = []; |
| 271 | 278 | for (var i = 0; i < input.length; i++) { |
| 272 | 279 | var program = input[i]; |
| 273 | - if(program.categories[0].slug === category.slug){ | |
| 280 | + if (program.categories[0].slug === category.slug) { | |
| 274 | 281 | out.push(program); |
| 275 | 282 | } |
| 276 | 283 | } |
| ... | ... | @@ -278,19 +285,6 @@ |
| 278 | 285 | return out; |
| 279 | 286 | } |
| 280 | 287 | |
| 281 | - function _filterByCriteria (input, criteria, reverse){ | |
| 282 | - var vm = this; | |
| 283 | - input = input || []; | |
| 284 | - criteria = criteria || {}; | |
| 285 | - reverse = reverse || false; | |
| 286 | - | |
| 287 | - var out = []; | |
| 288 | - | |
| 289 | - | |
| 290 | - | |
| 291 | - return out; | |
| 292 | - } | |
| 293 | - | |
| 294 | 288 | // -> Fisher–Yates shuffle algorithm |
| 295 | 289 | function shuffle (array) { |
| 296 | 290 | var currentIndex = array.length, temporaryValue, randomIndex ; |
| ... | ... | @@ -311,5 +305,4 @@ |
| 311 | 305 | return array; |
| 312 | 306 | } |
| 313 | 307 | |
| 314 | - | |
| 315 | 308 | })(); | ... | ... |
src/app/components/programas/programas.html
| ... | ... | @@ -2,15 +2,16 @@ |
| 2 | 2 | <div class="col-sm-3"> |
| 3 | 3 | <div class="category-list"> |
| 4 | 4 | <nav class="navigation"> |
| 5 | - <h3 class="title"><b>Programas</b> por Tema</h3> | |
| 5 | + <h3 class="category-list--title"><b>Programas</b> por Tema</h3> | |
| 6 | 6 | <div class="list-group category-list" ng-class="vm.categoryFilter.slug"> |
| 7 | - <button type="button" class="list-group-item category-item" | |
| 7 | + <button type="button" class="list-group-item category-list--item" | |
| 8 | 8 | ng-repeat="category in vm.categories" |
| 9 | 9 | ng-class="{active: vm.categoryFilter.slug === category.slug}" |
| 10 | 10 | ng-click="vm.filterByCategory(category, $event)"> |
| 11 | 11 | |
| 12 | - <span ng-class="[category.iconClass]"></span> | |
| 13 | - <span>{{::category.name}}</span> | |
| 12 | + <span class="category-list--icon-circle" ng-class="category.slug"></span> | |
| 13 | + <span class="category-list--icon icon" ng-class="'icon-tema-' + category.slug"></span> | |
| 14 | + <span class="category-list--label">{{::category.name}}</span> | |
| 14 | 15 | <span class="glyphicon glyphicon-chevron-right pull-right"></span> |
| 15 | 16 | |
| 16 | 17 | </button> |
| ... | ... | @@ -44,15 +45,15 @@ |
| 44 | 45 | <option value="">-- Ordernar por: --</option> |
| 45 | 46 | </select> |
| 46 | 47 | |
| 47 | - <div class="checkbox"> | |
| 48 | + <!-- <div class="checkbox"> | |
| 48 | 49 | <label> |
| 49 | 50 | <input type="checkbox" ng-model="vm.reverse"> |
| 50 | 51 | Reverso |
| 51 | 52 | </label> |
| 52 | - </div> | |
| 53 | + </div> --> | |
| 53 | 54 | |
| 54 | - <input id="programListLimit" type="number" class="form-control input-sm" size="4" step="2" ng-model="vm.limitTo" aria-label="Limitar" > | |
| 55 | - <label for="programListLimit" class="control-label">Limite</label> | |
| 55 | + <!-- <input id="programListLimit" type="number" class="form-control input-sm" size="4" step="2" ng-model="vm.limitTo" aria-label="Limitar" > | |
| 56 | + <label for="programListLimit" class="control-label">Limite</label> --> | |
| 56 | 57 | |
| 57 | 58 | </div> |
| 58 | 59 | </aside> | ... | ... |
src/app/components/programas/programas.scss
| 1 | 1 | .program-list { |
| 2 | + .header { | |
| 3 | + position: relative; | |
| 4 | + height: 40px; | |
| 5 | + margin-bottom: 10px; | |
| 2 | 6 | |
| 3 | - .header { | |
| 4 | - position: relative; | |
| 5 | - height: 40px; | |
| 6 | - margin-bottom: 10px; | |
| 7 | - | |
| 8 | - button { | |
| 9 | - position: absolute; | |
| 10 | - right: 0; | |
| 11 | - top: 2px; | |
| 7 | + button { | |
| 8 | + position: absolute; | |
| 9 | + right: 0; | |
| 10 | + top: 2px; | |
| 11 | + } | |
| 12 | 12 | } |
| 13 | - } | |
| 14 | - | |
| 15 | 13 | } |
| 16 | 14 | |
| 17 | 15 | .category-list { |
| 16 | + &--title { | |
| 17 | + color: #ffffff; | |
| 18 | + font-size: 16px; | |
| 19 | + margin: 0; | |
| 20 | + padding: 20px; | |
| 21 | + background-color: #484848; | |
| 22 | + border-top-left-radius: 5px; | |
| 23 | + border-top-right-radius: 5px; | |
| 24 | + overflow: hidden; | |
| 25 | + } | |
| 26 | + | |
| 27 | + | |
| 28 | + &--group { | |
| 29 | + } | |
| 30 | + | |
| 31 | + &--item { | |
| 32 | + position: relative; | |
| 33 | + text-transform: uppercase; | |
| 34 | + font-weight: bold; | |
| 35 | + padding: 0; | |
| 36 | + height: 68px; | |
| 37 | + display: table-cell; | |
| 38 | + vertical-align: middle; | |
| 39 | + } | |
| 40 | + | |
| 41 | + &--label { | |
| 42 | + margin-left: 70px; | |
| 43 | + margin-right: 30px; | |
| 44 | + display: inline-block; | |
| 45 | + } | |
| 46 | + | |
| 47 | + &--icon-circle { | |
| 48 | + width: 48px; | |
| 49 | + height: 48px; | |
| 50 | + position: absolute; | |
| 51 | + top: 10px; | |
| 52 | + left: 10px; | |
| 53 | + border: 1px solid #fff; | |
| 54 | + border-radius: 48px; | |
| 55 | + | |
| 56 | + @each $category, $color in $categories { | |
| 57 | + &.#{$category} { | |
| 58 | + background-color: $color; | |
| 59 | + } | |
| 60 | + } | |
| 61 | + } | |
| 62 | + | |
| 63 | + .category-list--icon { | |
| 64 | + position: absolute; | |
| 65 | + top: -16px; | |
| 66 | + left: -14px; | |
| 67 | + transform: scale(0.4); | |
| 68 | + } | |
| 18 | 69 | |
| 19 | 70 | @each $category, $color in $categories { |
| 20 | 71 | &.#{$category} { | ... | ... |
src/app/index.route.js
| ... | ... | @@ -45,18 +45,6 @@ |
| 45 | 45 | 'footer': { templateUrl: 'app/partials/footer/footer.html' } |
| 46 | 46 | } |
| 47 | 47 | }) |
| 48 | - .state('programas', { | |
| 49 | - url: '/programas', | |
| 50 | - views: { | |
| 51 | - 'header': { templateUrl: 'app/partials/header/header.html' }, | |
| 52 | - 'main': { | |
| 53 | - templateUrl: 'app/partials/programas/programas.html', | |
| 54 | - controller: 'ProgramasController', | |
| 55 | - controllerAs: 'programas' | |
| 56 | - }, | |
| 57 | - 'footer': { templateUrl: 'app/partials/footer/footer.html' } | |
| 58 | - } | |
| 59 | - }) | |
| 60 | 48 | .state('programa', { |
| 61 | 49 | url: '/programa/:slug', |
| 62 | 50 | views: { | ... | ... |
src/app/index.run.js
| ... | ... | @@ -12,11 +12,12 @@ |
| 12 | 12 | .run(runBlock); |
| 13 | 13 | |
| 14 | 14 | /** @ngInject */ |
| 15 | - function runAuth($rootScope, $cookies, USER_ROLES, AUTH_EVENTS, AuthService, $log){ | |
| 15 | + function runAuth($rootScope, $cookies, USER_ROLES, AUTH_EVENTS, AuthService, $log) { | |
| 16 | 16 | |
| 17 | 17 | // Listner url/state changes, and check permission |
| 18 | - $rootScope.$on('$stateChangeStart', function (event, next) { | |
| 19 | - if(!next.data || !next.data.authorizedRoles){ | |
| 18 | + $rootScope.$on('$stateChangeStart', function(event, next) { | |
| 19 | + | |
| 20 | + if (!next.data || !next.data.authorizedRoles) { | |
| 20 | 21 | $log.debug('public url/state'); |
| 21 | 22 | return; |
| 22 | 23 | } |
| ... | ... | @@ -42,32 +43,34 @@ |
| 42 | 43 | /** @ngInject */ |
| 43 | 44 | function runAccessibility($rootScope, $timeout, $cookies, $log) { |
| 44 | 45 | |
| 45 | - var contrast = $cookies.get('dialoga_contraste') === "true"; | |
| 46 | + var contrast = $cookies.get('dialoga_contraste') === 'true'; | |
| 46 | 47 | adjustContrast(contrast); |
| 47 | 48 | |
| 48 | - function adjustContrast(state){ | |
| 49 | + function adjustContrast(state) { | |
| 49 | 50 | var bodyEl = angular.element(document).find('body'); |
| 50 | 51 | angular.element(bodyEl).toggleClass('contraste', !!state); |
| 51 | 52 | } |
| 52 | 53 | |
| 53 | - $rootScope.toggleContrast = function () { | |
| 54 | + $rootScope.toggleContrast = function() { | |
| 54 | 55 | contrast = !contrast; |
| 55 | 56 | $cookies.put('dialoga_contraste', contrast); |
| 56 | 57 | adjustContrast(contrast); |
| 57 | 58 | }; |
| 58 | 59 | |
| 59 | - $rootScope.focusMainContent = function ($event) { | |
| 60 | + $rootScope.focusMainContent = function($event) { | |
| 60 | 61 | |
| 61 | 62 | // prevent skip link from redirecting |
| 62 | 63 | if ($event) { $event.preventDefault(); } |
| 63 | 64 | |
| 64 | 65 | var mainContentArea = document.querySelector('[role="main"]'); |
| 65 | 66 | |
| 66 | - if ( mainContentArea ) { | |
| 67 | - $timeout(function(){ | |
| 68 | - mainContentArea.focus(); | |
| 69 | - },90); | |
| 70 | - }else{ | |
| 67 | + if (mainContentArea) { | |
| 68 | + $timeout(function() { | |
| 69 | + var $el = angular.element(mainContentArea); | |
| 70 | + | |
| 71 | + angular.element('body').animate({scrollTop: $el.offset().top}, 'slow'); | |
| 72 | + }, 90); | |
| 73 | + } else { | |
| 71 | 74 | $log.warn('role="main" not found.'); |
| 72 | 75 | } |
| 73 | 76 | }; |
| ... | ... | @@ -76,42 +79,45 @@ |
| 76 | 79 | } |
| 77 | 80 | |
| 78 | 81 | /** @ngInject */ |
| 79 | - function runHistory($rootScope, $log) { | |
| 82 | + function runHistory($rootScope) { | |
| 80 | 83 | $rootScope.$on('$stateChangeSuccess', function(event, toState, toStateParams, fromState, fromStateParams) { |
| 81 | 84 | $rootScope.$previousState = { state: fromState, params: fromStateParams}; |
| 82 | 85 | }); |
| 83 | 86 | } |
| 84 | 87 | |
| 85 | 88 | /** @ngInject */ |
| 86 | - function runPath($rootScope, api, $log) { | |
| 87 | - var isProduction = (/^http:\/\/dialoga\.gov\.br\//.test(window.location.href)); | |
| 89 | + function runPath($rootScope, api, $window, $log) { | |
| 90 | + var isProduction = (/^http:\/\/dialoga\.gov\.br\//.test($window.location.href)); | |
| 88 | 91 | $rootScope.basePath = isProduction ? api.hostProd : api.hostHom; |
| 89 | 92 | |
| 90 | 93 | $log.debug('runPath end.'); |
| 91 | 94 | } |
| 92 | 95 | |
| 93 | 96 | /** @ngInject */ |
| 94 | - function runColorUtils($log) { | |
| 95 | - | |
| 96 | - window.ColorLuminance = function (hex, lum) { | |
| 97 | + function runColorUtils($window) { | |
| 98 | + | |
| 99 | + $window.ColorLuminance = function(hex, lum) { | |
| 97 | 100 | |
| 98 | 101 | // validate hex string |
| 99 | 102 | hex = String(hex).replace(/[^0-9a-f]/gi, ''); |
| 100 | 103 | if (hex.length < 6) { |
| 101 | - hex = hex[0]+hex[0]+hex[1]+hex[1]+hex[2]+hex[2]; | |
| 104 | + hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2]; | |
| 102 | 105 | } |
| 103 | 106 | lum = lum || 0; |
| 104 | 107 | |
| 105 | 108 | // convert to decimal and change luminosity |
| 106 | - var rgb = "#", c, i; | |
| 109 | + var rgb = '#'; | |
| 110 | + var c; | |
| 111 | + var i; | |
| 112 | + | |
| 107 | 113 | for (i = 0; i < 3; i++) { |
| 108 | - c = parseInt(hex.substr(i*2,2), 16); | |
| 114 | + c = parseInt(hex.substr(i * 2, 2), 16); | |
| 109 | 115 | c = Math.round(Math.min(Math.max(0, c + (c * lum)), 255)).toString(16); |
| 110 | - rgb += ("00"+c).substr(c.length); | |
| 116 | + rgb += ('00' + c).substr(c.length); | |
| 111 | 117 | } |
| 112 | 118 | |
| 113 | 119 | return rgb; |
| 114 | - } | |
| 120 | + }; | |
| 115 | 121 | } |
| 116 | 122 | |
| 117 | 123 | /** @ngInject */ | ... | ... |
src/app/index.scss
| ... | ... | @@ -28,6 +28,21 @@ $categories-descriptions: (saude: "Saúde é direito de todos e dever do Estado. |
| 28 | 28 | |
| 29 | 29 | body { |
| 30 | 30 | // font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; |
| 31 | + &.contraste { | |
| 32 | + color: #fff; | |
| 33 | + background-color: #000; | |
| 34 | + | |
| 35 | + a, | |
| 36 | + .btn { | |
| 37 | + color: #fff; | |
| 38 | + background-color: #000; | |
| 39 | + } | |
| 40 | + | |
| 41 | + .skip-links a:focus { | |
| 42 | + background-color: #000 !important; | |
| 43 | + border-color: #fff; | |
| 44 | + } | |
| 45 | + } | |
| 31 | 46 | } |
| 32 | 47 | |
| 33 | 48 | ... | ... |
src/app/partials/article/article.controller.js
| ... | ... | @@ -23,12 +23,13 @@ |
| 23 | 23 | |
| 24 | 24 | vm.page = vm.$state.current.name; |
| 25 | 25 | vm.article = null; |
| 26 | - switch(vm.page){ | |
| 26 | + vm.loading = true; | |
| 27 | + switch (vm.page){ | |
| 27 | 28 | case 'sobre': |
| 28 | - vm.ArticleService.getAbout(handleSuccess); | |
| 29 | + vm.ArticleService.getAbout(handleSuccess, handleError); | |
| 29 | 30 | break; |
| 30 | 31 | case 'termos-de-uso': |
| 31 | - vm.ArticleService.getTerms(handleSuccess); | |
| 32 | + vm.ArticleService.getTerms(handleSuccess, handleError); | |
| 32 | 33 | break; |
| 33 | 34 | default: |
| 34 | 35 | vm.$log.warn('Page not handled:', vm.page); |
| ... | ... | @@ -36,8 +37,14 @@ |
| 36 | 37 | } |
| 37 | 38 | |
| 38 | 39 | function handleSuccess (data) { |
| 40 | + vm.loading = false; | |
| 39 | 41 | vm.article = data.article; |
| 40 | 42 | // vm.article.body = vm.$sce.trustAsHtml(vm.article.body); |
| 41 | 43 | } |
| 44 | + | |
| 45 | + function handleError (error) { | |
| 46 | + vm.loading = false; | |
| 47 | + vm.error = error; | |
| 48 | + } | |
| 42 | 49 | }; |
| 43 | 50 | })(); | ... | ... |
src/app/partials/article/article.html
| 1 | 1 | <div class="container" role="main"> |
| 2 | 2 | <span class="hide">{{::article.page}}</span> |
| 3 | + | |
| 4 | + <div ng-if="article.loading"> | |
| 5 | + <div class="alert alert-info"> | |
| 6 | + Carregando conteúdo... | |
| 7 | + </div> | |
| 8 | + </div> | |
| 9 | + | |
| 10 | + <div ng-if="article.error"> | |
| 11 | + <div class="alert alert-info"> | |
| 12 | + Erro ao carregar conteúdo. | |
| 13 | + </div> | |
| 14 | + </div> | |
| 15 | + | |
| 3 | 16 | <div ng-if="article.article"> |
| 4 | 17 | <article> |
| 5 | 18 | <header> | ... | ... |
src/app/partials/auth/auth.scss
| 1 | -.btn-social { | |
| 2 | - color: #fff; | |
| 3 | - font-weight: bold; | |
| 4 | - | |
| 5 | - &:hover, | |
| 6 | - &:focus {color: #fff;} | |
| 7 | - | |
| 8 | - &.btn-facebook { | |
| 9 | - background-color: #33477a; | |
| 10 | - &:hover, | |
| 11 | - &:focus {background-color: #304373; } | |
| 12 | - &:active {background-color: #33477a; } | |
| 13 | - } | |
| 14 | - &.btn-google-plus { | |
| 15 | - background-color: #b92d25; | |
| 16 | - &:hover, | |
| 17 | - &:focus {background-color: #b12b23; } | |
| 18 | - &:active {background-color: #b92d25; } | |
| 19 | - } | |
| 20 | -} | |
| 1 | +.auth-content{ | |
| 21 | 2 | |
| 22 | -.glyphicon { | |
| 23 | - &.icon-white { | |
| 24 | - fill: white; | |
| 25 | - } | |
| 26 | -} | |
| 3 | + .btn-social { | |
| 4 | + color: #fff; | |
| 5 | + font-weight: bold; | |
| 6 | + | |
| 7 | + &:hover, | |
| 8 | + &:focus {color: #fff;} | |
| 9 | + | |
| 10 | + &.btn-facebook { | |
| 11 | + background-color: #33477a; | |
| 12 | + &:hover, | |
| 13 | + &:focus {background-color: #304373; } | |
| 14 | + &:active {background-color: #33477a; } | |
| 15 | + } | |
| 16 | + &.btn-google-plus { | |
| 17 | + background-color: #b92d25; | |
| 18 | + &:hover, | |
| 19 | + &:focus {background-color: #b12b23; } | |
| 20 | + &:active {background-color: #b92d25; } | |
| 21 | + } | |
| 22 | + } | |
| 23 | + | |
| 24 | + .btn { | |
| 25 | + .contraste & { | |
| 26 | + color: #fff; | |
| 27 | + } | |
| 28 | + } | |
| 29 | + .btn-primary { | |
| 30 | + .contraste & { | |
| 31 | + background-color: #262626; | |
| 32 | + border-color: #666; | |
| 33 | + } | |
| 34 | + } | |
| 35 | + | |
| 36 | + .glyphicon { | |
| 37 | + &.icon-white { | |
| 38 | + fill: white; | |
| 39 | + } | |
| 40 | + } | |
| 41 | + | |
| 42 | + .separator-or { | |
| 43 | + border-top: 2px solid #d8d8d8; | |
| 44 | + text-align: center; | |
| 45 | + font-weight: bold; | |
| 46 | + | |
| 47 | + &:after { | |
| 48 | + content: "ou"; | |
| 49 | + position: absolute; | |
| 50 | + top: 4px; | |
| 51 | + left: 50%; | |
| 52 | + margin-left: -26px; | |
| 53 | + font-size: 30px; | |
| 54 | + line-height: 30px; | |
| 55 | + padding: 0 0.25em; | |
| 56 | + background: $gray; | |
| 27 | 57 | |
| 28 | -.separator-or { | |
| 29 | - border-top: 2px solid #d8d8d8; | |
| 30 | - text-align: center; | |
| 31 | - font-weight: bold; | |
| 32 | - | |
| 33 | - &:after { | |
| 34 | - content: "ou"; | |
| 35 | - position: absolute; | |
| 36 | - top: 4px; | |
| 37 | - left: 50%; | |
| 38 | - margin-left: -26px; | |
| 39 | - font-size: 30px; | |
| 40 | - line-height: 30px; | |
| 41 | - padding: 0 0.25em; | |
| 42 | - background: $gray; | |
| 43 | - } | |
| 58 | + .contraste & { | |
| 59 | + background: #000; | |
| 60 | + } | |
| 61 | + } | |
| 62 | + } | |
| 44 | 63 | } | ... | ... |
src/app/partials/auth/signin.html
src/app/partials/auth/signup.html
| 1 | +<!-- Facebook --> | |
| 2 | +<!-- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 33 33" width="25" height="25"><path d="M18 32L12 32 12 16l-4 0 0-5.5 4 0 0-3.2C12 2.7 13.2 0 18.5 0l4.4 0 0 5.5 -2.8 0c-2.1 0-2.2 0.8-2.2 2.2l0 2.8 5 0 -0.6 5.5L18 16 18 32z"/></svg> --> | |
| 3 | +<!-- Twitter --> | |
| 4 | +<!-- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 33 33" width="25" height="25"><path d="M32 6.1c-1.2 0.5-2.4 0.9-3.8 1 1.4-0.8 2.4-2.1 2.9-3.6 -1.3 0.8-2.7 1.3-4.2 1.6 -1.2-1.3-2.9-2.1-4.8-2.1 -3.6 0-6.6 2.9-6.6 6.6 0 0.5 0.1 1 0.2 1.5 -5.5-0.3-10.3-2.9-13.5-6.9 -0.6 1-0.9 2.1-0.9 3.3 0 2.3 1.2 4.3 2.9 5.5 -1.1 0-2.1-0.3-3-0.8 0 0 0 0.1 0 0.1 0 3.2 2.3 5.8 5.3 6.4 -0.6 0.2-1.1 0.2-1.7 0.2 -0.4 0-0.8 0-1.2-0.1 0.8 2.6 3.3 4.5 6.1 4.6 -2.2 1.8-5.1 2.8-8.2 2.8 -0.5 0-1.1 0-1.6-0.1 2.9 1.9 6.4 3 10.1 3 12.1 0 18.7-10 18.7-18.7 0-0.3 0-0.6 0-0.8C30 8.5 31.1 7.4 32 6.1z"/></svg> --> | |
| 5 | +<!-- Google Plus --> | |
| 6 | +<!-- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 33 33" width="25" height="25"><path d="M17.5 2c0 0-6.3 0-8.4 0C5.3 2 1.8 4.8 1.8 8.1c0 3.4 2.6 6.1 6.4 6.1 0.3 0 0.5 0 0.8 0 -0.2 0.5-0.4 1-0.4 1.6 0 0.9 0.5 1.7 1.1 2.3 -0.5 0-0.9 0-1.5 0C3.6 18.1 0 21.1 0 24.1c0 3 3.9 4.9 8.6 4.9 5.3 0 8.2-3 8.2-6 0-2.4-0.7-3.9-2.9-5.4 -0.8-0.5-2.2-1.8-2.2-2.6 0-0.9 0.3-1.3 1.6-2.4 1.4-1.1 2.4-2.6 2.4-4.4 0-2.1-0.9-4.2-2.7-4.8l2.7 0L17.5 2zM14.5 22.5c0.1 0.3 0.1 0.6 0.1 0.9 0 2.4-1.6 4.4-6.1 4.4 -3.2 0-5.5-2-5.5-4.5 0-2.4 2.9-4.4 6.1-4.4 0.8 0 1.4 0.1 2.1 0.3C12.9 20.4 14.2 21.1 14.5 22.5zM9.4 13.4c-2.2-0.1-4.2-2.4-4.6-5.2 -0.4-2.8 1.1-5 3.2-4.9 2.2 0.1 4.2 2.3 4.6 5.2C13 11.2 11.6 13.4 9.4 13.4zM26 8L26 2 24 2 24 8 18 8 18 10 24 10 24 16 26 16 26 10 32 10 32 8z"/></svg> --> | |
| 7 | + | |
| 1 | 8 | <section> |
| 2 | 9 | <div class="container"> |
| 3 | 10 | <div class="row"> |
| ... | ... | @@ -8,7 +15,7 @@ |
| 8 | 15 | </div> |
| 9 | 16 | </div> |
| 10 | 17 | </section> |
| 11 | -<section role="main" class="section-gray"> | |
| 18 | +<section role="main" class="section-gray auth-content"> | |
| 12 | 19 | <div class="container"> |
| 13 | 20 | <div class="row"> |
| 14 | 21 | <div class="col-sm-8 col-sm-offset-2"> |
| ... | ... | @@ -18,9 +25,6 @@ |
| 18 | 25 | <span class="glyphicon icon-facebook icon-white" aria-hidden="true"> |
| 19 | 26 | <!-- Facebook --> |
| 20 | 27 | <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 33 33" width="25" height="25"><path d="M18 32L12 32 12 16l-4 0 0-5.5 4 0 0-3.2C12 2.7 13.2 0 18.5 0l4.4 0 0 5.5 -2.8 0c-2.1 0-2.2 0.8-2.2 2.2l0 2.8 5 0 -0.6 5.5L18 16 18 32z"/></svg> |
| 21 | - | |
| 22 | - <!-- Twitter --> | |
| 23 | - <!-- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 33 33" width="25" height="25"><path d="M32 6.1c-1.2 0.5-2.4 0.9-3.8 1 1.4-0.8 2.4-2.1 2.9-3.6 -1.3 0.8-2.7 1.3-4.2 1.6 -1.2-1.3-2.9-2.1-4.8-2.1 -3.6 0-6.6 2.9-6.6 6.6 0 0.5 0.1 1 0.2 1.5 -5.5-0.3-10.3-2.9-13.5-6.9 -0.6 1-0.9 2.1-0.9 3.3 0 2.3 1.2 4.3 2.9 5.5 -1.1 0-2.1-0.3-3-0.8 0 0 0 0.1 0 0.1 0 3.2 2.3 5.8 5.3 6.4 -0.6 0.2-1.1 0.2-1.7 0.2 -0.4 0-0.8 0-1.2-0.1 0.8 2.6 3.3 4.5 6.1 4.6 -2.2 1.8-5.1 2.8-8.2 2.8 -0.5 0-1.1 0-1.6-0.1 2.9 1.9 6.4 3 10.1 3 12.1 0 18.7-10 18.7-18.7 0-0.3 0-0.6 0-0.8C30 8.5 31.1 7.4 32 6.1z"/></svg> --> | |
| 24 | 28 | </span> |
| 25 | 29 | <span class="text"> |
| 26 | 30 | Conectar pelo Facebook |
| ... | ... | @@ -30,7 +34,7 @@ |
| 30 | 34 | <div class="col-sm-6"> |
| 31 | 35 | <button type="button" class="btn btn-lg btn-block btn-social btn-google-plus"> |
| 32 | 36 | <span class="glyphicon icon-google-plus icon-white" aria-hidden="true"> |
| 33 | - <!-- Google + --> | |
| 37 | + <!-- Google Plus --> | |
| 34 | 38 | <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 33 33" width="25" height="25"><path d="M17.5 2c0 0-6.3 0-8.4 0C5.3 2 1.8 4.8 1.8 8.1c0 3.4 2.6 6.1 6.4 6.1 0.3 0 0.5 0 0.8 0 -0.2 0.5-0.4 1-0.4 1.6 0 0.9 0.5 1.7 1.1 2.3 -0.5 0-0.9 0-1.5 0C3.6 18.1 0 21.1 0 24.1c0 3 3.9 4.9 8.6 4.9 5.3 0 8.2-3 8.2-6 0-2.4-0.7-3.9-2.9-5.4 -0.8-0.5-2.2-1.8-2.2-2.6 0-0.9 0.3-1.3 1.6-2.4 1.4-1.1 2.4-2.6 2.4-4.4 0-2.1-0.9-4.2-2.7-4.8l2.7 0L17.5 2zM14.5 22.5c0.1 0.3 0.1 0.6 0.1 0.9 0 2.4-1.6 4.4-6.1 4.4 -3.2 0-5.5-2-5.5-4.5 0-2.4 2.9-4.4 6.1-4.4 0.8 0 1.4 0.1 2.1 0.3C12.9 20.4 14.2 21.1 14.5 22.5zM9.4 13.4c-2.2-0.1-4.2-2.4-4.6-5.2 -0.4-2.8 1.1-5 3.2-4.9 2.2 0.1 4.2 2.3 4.6 5.2C13 11.2 11.6 13.4 9.4 13.4zM26 8L26 2 24 2 24 8 18 8 18 10 24 10 24 16 26 16 26 10 32 10 32 8z"/></svg> |
| 35 | 39 | </span> |
| 36 | 40 | <span class="text"> | ... | ... |
src/app/partials/header/header.controller.js
| ... | ... | @@ -1,16 +0,0 @@ |
| 1 | -(function() { | |
| 2 | - 'use strict'; | |
| 3 | - | |
| 4 | - angular | |
| 5 | - .module('dialoga') | |
| 6 | - .controller('HeaderController', HeaderController); | |
| 7 | - | |
| 8 | - /** @ngInject */ | |
| 9 | - function HeaderController($log) { | |
| 10 | - var vm = this; | |
| 11 | - | |
| 12 | - vm.$log = $log; | |
| 13 | - vm.$log.debug('HeaderController'); | |
| 14 | - } | |
| 15 | - | |
| 16 | -})(); |
src/app/partials/header/header.html
src/app/partials/inicio/inicio.controller.js
src/app/partials/programas/programas.controller.js
| ... | ... | @@ -1,24 +0,0 @@ |
| 1 | -(function() { | |
| 2 | - 'use strict'; | |
| 3 | - | |
| 4 | - angular | |
| 5 | - .module('dialoga') | |
| 6 | - .controller('ProgramasController', ProgramasController); | |
| 7 | - | |
| 8 | - /** @ngInject */ | |
| 9 | - function ProgramasController(ArticleService, $log) { | |
| 10 | - $log.debug('ProgramasController'); | |
| 11 | - | |
| 12 | - var vm = this; | |
| 13 | - | |
| 14 | - vm.ArticleService = ArticleService; | |
| 15 | - vm.$log = $log; | |
| 16 | - | |
| 17 | - vm.init(); | |
| 18 | - } | |
| 19 | - | |
| 20 | - ProgramasController.prototype.init = function () { | |
| 21 | - | |
| 22 | - vm.programaList = []; | |
| 23 | - }; | |
| 24 | -})(); |
src/app/partials/programas/programas.controller.spec.js
| ... | ... | @@ -1,15 +0,0 @@ |
| 1 | -(function() { | |
| 2 | - 'use strict'; | |
| 3 | - | |
| 4 | - describe('controllers', function(){ | |
| 5 | - | |
| 6 | - beforeEach(module('dialoga')); | |
| 7 | - | |
| 8 | - // it('should define more than 5 awesome things', inject(function($controller) { | |
| 9 | - // var vm = $controller('SobreController'); | |
| 10 | - | |
| 11 | - // // expect(angular.isArray(vm.awesomeThings)).toBeTruthy(); | |
| 12 | - // // expect(vm.awesomeThings.length > 5).toBeTruthy(); | |
| 13 | - // })); | |
| 14 | - }); | |
| 15 | -})(); |
src/app/partials/programas/programas.html
src/assets/images/angular.png
13.2 KB
src/assets/images/bootstrap.png
12.6 KB
src/assets/images/browsersync.png
11.3 KB
src/assets/images/gulp.png
10.4 KB
4.29 KB
4.4 KB
4.33 KB
3.86 KB
3.53 KB
3.63 KB
3.53 KB
3.15 KB
3.2 KB
1.34 KB
15.2 KB
1.52 KB
1.77 KB
15.5 KB
1.93 KB
1.43 KB
15.4 KB
1.72 KB
2.02 KB
15.7 KB
2.17 KB
2.05 KB
1.63 KB
2.04 KB
1.59 KB
1.37 KB
1.19 KB
2.56 KB
2.3 KB
2.99 KB
3.2 KB
1.78 KB
1.13 KB
2.4 KB
2.1 KB
1.77 KB
1.17 KB
1.83 KB
1.2 KB
3.32 KB
2.94 KB
2.48 KB
2.19 KB
2.86 KB
2.95 KB
1.16 KB
1.23 KB
2.03 KB
1.94 KB
src/assets/images/jasmine.png
15.5 KB
src/assets/images/karma.png
9.89 KB
src/assets/images/node-sass.png
4.85 KB
src/assets/images/protractor.png
9.95 KB
src/assets/images/yeoman.png
13.2 KB
src/assets/images/youtube-background.webp
No preview for this file type
src/index.html
| ... | ... | @@ -20,11 +20,12 @@ |
| 20 | 20 | <!-- css files will be automatically insert here --> |
| 21 | 21 | <!-- endinject --> |
| 22 | 22 | <!-- endbuild --> |
| 23 | + <link rel="stylesheet" href="/app/sprite.css"> | |
| 23 | 24 | </head> |
| 24 | 25 | <body ng-cloak> |
| 25 | 26 | |
| 26 | 27 | <div class="skip-links"> |
| 27 | - <a href="#content" class="sr-only sr-only-focusable" tabindex="0" ng-click="focusMainContent($event)">Ir para o conteúdo principal</a> | |
| 28 | + <a href="#content" class="sr-only sr-only-focusable btn btn-link" tabindex="0" ng-click="focusMainContent($event)">Ir para o conteúdo principal</a> | |
| 28 | 29 | </div> |
| 29 | 30 | |
| 30 | 31 | <div id="barra-brasil" style="background:#7F7F7F; height: 20px; padding:0 0 0 10px;display:block;"> | ... | ... |