Commit ee0034e29eb08a5c9c634ea79c06515a39b0c65f
1 parent
9de8d912
Exists in
master
Volunteers and Ranking section integrated with PyBossa API
Showing
19 changed files
with
421 additions
and
81 deletions
Show diff stats
assets/css/base.css
| @@ -12,7 +12,7 @@ | @@ -12,7 +12,7 @@ | ||
| 12 | 12 | ||
| 13 | html, body { | 13 | html, body { |
| 14 | font-family: 'Roboto', 'Open Sans', sans-serif; | 14 | font-family: 'Roboto', 'Open Sans', sans-serif; |
| 15 | - color: #000000; | 15 | + color: #2d2d2d; |
| 16 | } | 16 | } |
| 17 | 17 | ||
| 18 | img { | 18 | img { |
| @@ -34,28 +34,6 @@ img { | @@ -34,28 +34,6 @@ img { | ||
| 34 | background-color: #337ab7; | 34 | background-color: #337ab7; |
| 35 | } | 35 | } |
| 36 | 36 | ||
| 37 | -.wl-section-title { | ||
| 38 | - position: absolute; | ||
| 39 | - top: -15px; | ||
| 40 | - font-size: 14px; | ||
| 41 | - font-weight: bold; | ||
| 42 | - color: #ffffff; | ||
| 43 | - text-transform: uppercase; | ||
| 44 | - text-align: center; | ||
| 45 | - font-family: 'Oswald'; | ||
| 46 | - z-index: 1; | ||
| 47 | - width: 100%; | ||
| 48 | - margin: 0 auto; | ||
| 49 | -} | ||
| 50 | - | ||
| 51 | -.wl-section-title .title { | ||
| 52 | - padding: 5px 0; | ||
| 53 | - background-color: #0f78a7; | ||
| 54 | - -webkit-border-radius: 6px; | ||
| 55 | - -moz-border-radius: 6px; | ||
| 56 | - border-radius: 6px; | ||
| 57 | -} | ||
| 58 | - | ||
| 59 | /* Header */ | 37 | /* Header */ |
| 60 | #wl-header { | 38 | #wl-header { |
| 61 | position: relative; | 39 | position: relative; |
| @@ -151,6 +129,36 @@ img { | @@ -151,6 +129,36 @@ img { | ||
| 151 | cursor: pointer; | 129 | cursor: pointer; |
| 152 | } | 130 | } |
| 153 | 131 | ||
| 132 | +/* Sections */ | ||
| 133 | +.wl-section-title { | ||
| 134 | + position: absolute; | ||
| 135 | + top: -15px; | ||
| 136 | + font-size: 14px; | ||
| 137 | + font-weight: bold; | ||
| 138 | + color: #ffffff; | ||
| 139 | + text-transform: uppercase; | ||
| 140 | + text-align: center; | ||
| 141 | + font-family: 'Oswald'; | ||
| 142 | + z-index: 1; | ||
| 143 | + width: 100%; | ||
| 144 | + margin: 0 auto; | ||
| 145 | +} | ||
| 146 | + | ||
| 147 | +.wl-section-title .title { | ||
| 148 | + padding: 5px 0; | ||
| 149 | + background-color: #0f78a7; | ||
| 150 | + -webkit-border-radius: 6px; | ||
| 151 | + -moz-border-radius: 6px; | ||
| 152 | + border-radius: 6px; | ||
| 153 | +} | ||
| 154 | + | ||
| 155 | +.wl-section-description { | ||
| 156 | + margin-top: 90px; | ||
| 157 | + font-size: 14px; | ||
| 158 | + line-height: 24px; | ||
| 159 | + text-align: center; | ||
| 160 | +} | ||
| 161 | + | ||
| 154 | /* Presentation Section */ | 162 | /* Presentation Section */ |
| 155 | #wl-presentation-video { | 163 | #wl-presentation-video { |
| 156 | height: 100vh; | 164 | height: 100vh; |
| @@ -191,13 +199,6 @@ img { | @@ -191,13 +199,6 @@ img { | ||
| 191 | z-index: 1; | 199 | z-index: 1; |
| 192 | } | 200 | } |
| 193 | 201 | ||
| 194 | -.wl-overview-description { | ||
| 195 | - margin-top: 90px; | ||
| 196 | - font-size: 14px; | ||
| 197 | - line-height: 24px; | ||
| 198 | - text-align: center; | ||
| 199 | -} | ||
| 200 | - | ||
| 201 | .wl-overview-progress-wrapper { | 202 | .wl-overview-progress-wrapper { |
| 202 | padding-bottom: 20px; | 203 | padding-bottom: 20px; |
| 203 | } | 204 | } |
| @@ -362,11 +363,116 @@ img { | @@ -362,11 +363,116 @@ img { | ||
| 362 | width: 100%; | 363 | width: 100%; |
| 363 | } | 364 | } |
| 364 | 365 | ||
| 366 | +/* Signs and Ranking Section */ | ||
| 367 | +#wl-signs-and-ranking { | ||
| 368 | + position: relative; | ||
| 369 | + z-index: 1; | ||
| 370 | + background: #ffffff; | ||
| 371 | + height: 100vh; | ||
| 372 | +} | ||
| 373 | + | ||
| 374 | +.wl-signs-and-ranking-container { | ||
| 375 | + display: flex; | ||
| 376 | + flex-direction: row; | ||
| 377 | + flex-wrap: wrap; | ||
| 378 | +} | ||
| 379 | + | ||
| 380 | +.wl-signs-and-ranking-wrapper { | ||
| 381 | + flex: 1; | ||
| 382 | + position: relative; | ||
| 383 | + min-width: 330px; | ||
| 384 | +} | ||
| 385 | + | ||
| 386 | +.wl-signs-and-ranking-wrapper .wl-section-title { | ||
| 387 | + padding: 0 15px; | ||
| 388 | +} | ||
| 389 | + | ||
| 390 | +.wl-signs-container { | ||
| 391 | + display: flex; | ||
| 392 | + flex-wrap: wrap; | ||
| 393 | + margin-top: 30px; | ||
| 394 | +} | ||
| 395 | + | ||
| 396 | +.wl-signs-wrapper { | ||
| 397 | + flex: 1 0 33%; | ||
| 398 | + padding: 3px; | ||
| 399 | +} | ||
| 400 | + | ||
| 401 | +.wl-ranking-header-wrapper { | ||
| 402 | + padding-left: 0; | ||
| 403 | + padding-right: 0; | ||
| 404 | + cursor: pointer; | ||
| 405 | +} | ||
| 406 | + | ||
| 407 | +.wl-ranking-header-wrapper:first-child { | ||
| 408 | + padding-left: 30px; | ||
| 409 | +} | ||
| 410 | + | ||
| 411 | +.wl-ranking-header-wrapper:last-child { | ||
| 412 | + padding-right: 15px; | ||
| 413 | +} | ||
| 414 | + | ||
| 415 | +.wl-ranking-header-wrapper:last-child .title { | ||
| 416 | + border-right: 0; | ||
| 417 | +} | ||
| 418 | + | ||
| 419 | +.wl-ranking-header { | ||
| 420 | + text-align: center; | ||
| 421 | + line-height: 35px; | ||
| 422 | + border-bottom: 1px solid #ccc; | ||
| 423 | +} | ||
| 424 | + | ||
| 425 | +.wl-ranking-header.-active { | ||
| 426 | + border-bottom: 1px solid #bb6a1a; | ||
| 427 | +} | ||
| 428 | + | ||
| 429 | +.wl-ranking-header .title { | ||
| 430 | + margin-bottom: 10px; | ||
| 431 | + border-right: 1px solid #ccc; | ||
| 432 | +} | ||
| 433 | + | ||
| 434 | +.wl-ranking-header.-active .title { | ||
| 435 | + color: #bb6a1a; | ||
| 436 | + font-weight: bold; | ||
| 437 | +} | ||
| 438 | + | ||
| 439 | +.wl-ranking-container { | ||
| 440 | + padding: 15px; | ||
| 441 | + color: #bb6a1a; | ||
| 442 | +} | ||
| 443 | + | ||
| 444 | +.wl-rank { | ||
| 445 | + padding-bottom: 20px; | ||
| 446 | +} | ||
| 447 | + | ||
| 448 | +.star-wrapper { | ||
| 449 | + position: absolute; | ||
| 450 | + margin-top: -2px; | ||
| 451 | + height: 14px; | ||
| 452 | +} | ||
| 453 | + | ||
| 454 | +.position-wrapper { | ||
| 455 | + padding-left: 50px; | ||
| 456 | +} | ||
| 457 | + | ||
| 365 | /* Responsiveness */ | 458 | /* Responsiveness */ |
| 366 | @media screen and (min-width: 768px) { | 459 | @media screen and (min-width: 768px) { |
| 460 | + .wl-section-title { | ||
| 461 | + top: -22px; | ||
| 462 | + font-size: 24px; | ||
| 463 | + } | ||
| 464 | + .wl-section-title .title { | ||
| 465 | + width: 360px; | ||
| 466 | + margin: 0 auto; | ||
| 467 | + padding: 6px 0; | ||
| 468 | + } | ||
| 469 | + | ||
| 470 | + /* Overview */ | ||
| 367 | #wl-overview { | 471 | #wl-overview { |
| 368 | height: 100vh; | 472 | height: 100vh; |
| 369 | } | 473 | } |
| 474 | + | ||
| 475 | + /* Features */ | ||
| 370 | #wl-features { | 476 | #wl-features { |
| 371 | height: 100vh; | 477 | height: 100vh; |
| 372 | } | 478 | } |
| @@ -375,14 +481,20 @@ img { | @@ -375,14 +481,20 @@ img { | ||
| 375 | padding-top: 0; | 481 | padding-top: 0; |
| 376 | padding-bottom: 0; | 482 | padding-bottom: 0; |
| 377 | } | 483 | } |
| 378 | - .wl-section-title { | ||
| 379 | - top: -30px; | ||
| 380 | - font-size: 26px; | 484 | + |
| 485 | + /* Volunteers */ | ||
| 486 | + | ||
| 487 | + /* Signs and Ranking */ | ||
| 488 | + .wl-signs-and-ranking-wrapper .wl-section-title .title { | ||
| 489 | + width: 100%; | ||
| 381 | } | 490 | } |
| 382 | - .wl-section-title .title { | ||
| 383 | - width: 360px; | ||
| 384 | - margin: 0 auto; | ||
| 385 | - padding: 12px 0; | 491 | + |
| 492 | + .wl-signs-and-ranking-wrapper .wl-section-title { | ||
| 493 | + padding: 0 50px; | ||
| 494 | + } | ||
| 495 | + | ||
| 496 | + .wl-signs-and-ranking-wrapper { | ||
| 497 | + padding: 0 15px; | ||
| 386 | } | 498 | } |
| 387 | } | 499 | } |
| 388 | 500 |
279 Bytes
278 Bytes
15.1 KB
277 Bytes
assets/js/main.controller.js
| 1 | (function () { | 1 | (function () { |
| 2 | 'use strict'; | 2 | 'use strict'; |
| 3 | 3 | ||
| 4 | - angular.module('wikilibras').controller('wikilibrasCtrl', ['$scope', function ($scope) { | ||
| 5 | - var baseUrl = 'assets/img/user-avatar-'; | ||
| 6 | - $scope.avatars = []; | ||
| 7 | - for (var i = 0; i < 50; i++) { | ||
| 8 | - $scope.avatars.push({ url: baseUrl + getRandomInt(1, 5) + '.png'}); | ||
| 9 | - } | ||
| 10 | - function getRandomInt(min, max) { | ||
| 11 | - return Math.floor(Math.random() * (max - min + 1)) + min; | ||
| 12 | - } | ||
| 13 | - }]); | 4 | + angular.module('wikilibras').controller('wikilibrasCtrl', ['$scope', function ($scope) {}]); |
| 14 | }()); | 5 | }()); |
| 15 | \ No newline at end of file | 6 | \ No newline at end of file |
assets/js/main.module.js
| 1 | (function () { | 1 | (function () { |
| 2 | 'use strict'; | 2 | 'use strict'; |
| 3 | 3 | ||
| 4 | - angular.module('wikilibras', ['wikilibras.progress', 'duScroll', 'angularMoment']).value('duScrollOffset', 70); | 4 | + angular.module('wikilibras', ['wikilibras.progress', 'wikilibras.ranking', 'wikilibras.volunteers', 'duScroll', 'angularMoment']).value('duScrollOffset', 70); |
| 5 | }()); | 5 | }()); |
| 6 | \ No newline at end of file | 6 | \ No newline at end of file |
assets/js/progress/progress.controller.js
| @@ -11,6 +11,7 @@ | @@ -11,6 +11,7 @@ | ||
| 11 | progressService.getProjectsProgressData().then(function(response) { | 11 | progressService.getProjectsProgressData().then(function(response) { |
| 12 | angular.forEach(response, function(progress) { | 12 | angular.forEach(response, function(progress) { |
| 13 | var projectProgress = $scope.progress[progress.short_name]; | 13 | var projectProgress = $scope.progress[progress.short_name]; |
| 14 | + if (!projectProgress || typeof projectProgress === "undefined") return; | ||
| 14 | projectProgress.n_tasks = progress.n_tasks; | 15 | projectProgress.n_tasks = progress.n_tasks; |
| 15 | projectProgress.n_task_runs = progress.n_task_runs; | 16 | projectProgress.n_task_runs = progress.n_task_runs; |
| 16 | projectProgress.n_completed_tasks = progress.n_completed_tasks; | 17 | projectProgress.n_completed_tasks = progress.n_completed_tasks; |
assets/js/progress/progress.service.js
| 1 | (function () { | 1 | (function () { |
| 2 | 'use strict'; | 2 | 'use strict'; |
| 3 | 3 | ||
| 4 | - angular.module('wikilibras.progress').service("progressService", ['$http', '$q', function ($http, $q) { | ||
| 5 | - var API_ENDPOINT = 'http://localhost/pybossa/api'; | ||
| 6 | - var PROJECTS_PROGRESS_API_URL = API_ENDPOINT + '/projects_progress'; | ||
| 7 | - var PROJECTS_GOALS_URL = 'conf/goals.json'; | 4 | + angular.module('wikilibras.progress').service("progressService", ['$http', function ($http) { |
| 5 | + var PROJECT_CONF_URL = 'conf/app-conf.json'; | ||
| 6 | + var PROJECTS_PROGRESS_ENDPOINT = '/api/projects_progress'; | ||
| 8 | 7 | ||
| 9 | - function accesGoalsData(goals, projectName, param) { | 8 | + function accessGoalsData(goals, projectName, param) { |
| 10 | var projectGoals = goals[projectName]; | 9 | var projectGoals = goals[projectName]; |
| 11 | if (!projectGoals || typeof projectGoals === 'undefined') return ''; | 10 | if (!projectGoals || typeof projectGoals === 'undefined') return ''; |
| 12 | var goal = projectGoals[param]; | 11 | var goal = projectGoals[param]; |
| @@ -16,17 +15,19 @@ | @@ -16,17 +15,19 @@ | ||
| 16 | 15 | ||
| 17 | return { | 16 | return { |
| 18 | getProjectsProgressData: function() { | 17 | getProjectsProgressData: function() { |
| 19 | - var requestProgress = $http.get(PROJECTS_PROGRESS_API_URL); | ||
| 20 | - var requestGoals = $http.get(PROJECTS_GOALS_URL); | ||
| 21 | - return $q.all([requestProgress, requestGoals]).then(function(responses) { | ||
| 22 | - var responseProgress = responses[0].data; | ||
| 23 | - var responseGoals = responses[1].data; | ||
| 24 | - angular.forEach(responseProgress, function(progress) { | ||
| 25 | - progress['goal_n_tasks'] = accesGoalsData(responseGoals, progress.short_name,'goal_n_tasks'); | ||
| 26 | - progress['goal_deadline'] = moment(accesGoalsData(responseGoals, progress.short_name,'goal_deadline'), "DD/MM/YYYY"); | ||
| 27 | - progress['last_activity'] = moment(progress['last_activity']); | 18 | + return $http.get(PROJECT_CONF_URL).then(function(response) { |
| 19 | + var baseApiUrl = response.data.pybossa_url; | ||
| 20 | + var responseGoals = response.data.goals; | ||
| 21 | + | ||
| 22 | + return $http.get(baseApiUrl + PROJECTS_PROGRESS_ENDPOINT).then(function(response) { | ||
| 23 | + var responseProgress = response.data; | ||
| 24 | + angular.forEach(responseProgress, function(progress) { | ||
| 25 | + progress['goal_n_tasks'] = accessGoalsData(responseGoals, progress.short_name,'goal_n_tasks'); | ||
| 26 | + progress['goal_deadline'] = moment(accessGoalsData(responseGoals, progress.short_name,'goal_deadline'), "DD/MM/YYYY"); | ||
| 27 | + progress['last_activity'] = moment(progress['last_activity']); | ||
| 28 | + }); | ||
| 29 | + return responseProgress; | ||
| 28 | }); | 30 | }); |
| 29 | - return responseProgress; | ||
| 30 | }); | 31 | }); |
| 31 | } | 32 | } |
| 32 | }; | 33 | }; |
| @@ -0,0 +1,17 @@ | @@ -0,0 +1,17 @@ | ||
| 1 | +(function () { | ||
| 2 | + 'use strict'; | ||
| 3 | + | ||
| 4 | + angular.module('wikilibras.ranking').controller('rankingCtrl', ['$scope', 'rankingService', function ($scope, rankingService) { | ||
| 5 | + $scope.activeTab = 0; | ||
| 6 | + $scope.rankingData = {}; | ||
| 7 | + | ||
| 8 | + $scope.setActiveTab = function(tab) { | ||
| 9 | + $scope.activeTab = tab; | ||
| 10 | + }; | ||
| 11 | + | ||
| 12 | + rankingService.getRankingData().then(function(response) { | ||
| 13 | + $scope.rankingData = response; | ||
| 14 | + console.log(response); | ||
| 15 | + }); | ||
| 16 | + }]); | ||
| 17 | +}()); | ||
| 0 | \ No newline at end of file | 18 | \ No newline at end of file |
| @@ -0,0 +1,20 @@ | @@ -0,0 +1,20 @@ | ||
| 1 | +(function () { | ||
| 2 | + 'use strict'; | ||
| 3 | + | ||
| 4 | + angular.module('wikilibras.ranking').service("rankingService", ['$http', '$q', function ($http, $q) { | ||
| 5 | + var PROJECT_CONF_URL = 'conf/app-conf.json'; | ||
| 6 | + var RANKING_ENDPOINT = '/api/leaderboard?limit=20'; | ||
| 7 | + | ||
| 8 | + return { | ||
| 9 | + getRankingData: function() { | ||
| 10 | + return $http.get(PROJECT_CONF_URL).then(function(response) { | ||
| 11 | + var baseApiUrl = response.data.pybossa_url; | ||
| 12 | + return $http.get(baseApiUrl + RANKING_ENDPOINT).then(function(response) { | ||
| 13 | + console.log(response); | ||
| 14 | + return response.data; | ||
| 15 | + }); | ||
| 16 | + }); | ||
| 17 | + } | ||
| 18 | + }; | ||
| 19 | + }]); | ||
| 20 | +}()); | ||
| 0 | \ No newline at end of file | 21 | \ No newline at end of file |
| @@ -0,0 +1,10 @@ | @@ -0,0 +1,10 @@ | ||
| 1 | +(function () { | ||
| 2 | + 'use strict'; | ||
| 3 | + | ||
| 4 | + angular.module('wikilibras.volunteers').controller('volunteersCtrl', ['$scope', 'volunteersService', function ($scope, volunteersService) { | ||
| 5 | + $scope.volunteersData = {}; | ||
| 6 | + volunteersService.getVolunteersData().then(function(response) { | ||
| 7 | + $scope.volunteersData = response; | ||
| 8 | + }); | ||
| 9 | + }]); | ||
| 10 | +}()); | ||
| 0 | \ No newline at end of file | 11 | \ No newline at end of file |
| @@ -0,0 +1,24 @@ | @@ -0,0 +1,24 @@ | ||
| 1 | +(function () { | ||
| 2 | + 'use strict'; | ||
| 3 | + | ||
| 4 | + angular.module('wikilibras.volunteers').service("volunteersService", ['$http', function ($http) { | ||
| 5 | + var PROJECT_CONF_URL = 'conf/app-conf.json'; | ||
| 6 | + var VOLUNTEERS_ENDPOINT = '/api/user?limit=50'; | ||
| 7 | + | ||
| 8 | + return { | ||
| 9 | + getVolunteersData: function() { | ||
| 10 | + return $http.get(PROJECT_CONF_URL).then(function(response) { | ||
| 11 | + var baseApiUrl = response.data.pybossa_url; | ||
| 12 | + return $http.get(baseApiUrl + VOLUNTEERS_ENDPOINT).then(function(response) { | ||
| 13 | + var volunteersData = response.data; | ||
| 14 | + angular.forEach(volunteersData, function(data) { | ||
| 15 | + data.info['avatar_url'] = data.info.container && data.info.avatar? baseApiUrl + '/uploads/' + data.info.container + '/' + data.info.avatar : ''; | ||
| 16 | + }); | ||
| 17 | + console.log(volunteersData); | ||
| 18 | + return volunteersData; | ||
| 19 | + }); | ||
| 20 | + }); | ||
| 21 | + } | ||
| 22 | + }; | ||
| 23 | + }]); | ||
| 24 | +}()); | ||
| 0 | \ No newline at end of file | 25 | \ No newline at end of file |
assets/templates/sections.html
| @@ -21,7 +21,7 @@ | @@ -21,7 +21,7 @@ | ||
| 21 | </div> | 21 | </div> |
| 22 | </div> | 22 | </div> |
| 23 | </div> | 23 | </div> |
| 24 | - <div class="col-xs-12 wl-overview-description"> | 24 | + <div class="col-xs-12 wl-section-description"> |
| 25 | <p>Lorem Ipsum é simplesmente uma simulação de texto da indústria tipográfica e de impressos, e vem | 25 | <p>Lorem Ipsum é simplesmente uma simulação de texto da indústria tipográfica e de impressos, e vem |
| 26 | sendo utilizado desde o século XVI, quando um impressor desconhecido pegou uma bandeja de tipos | 26 | sendo utilizado desde o século XVI, quando um impressor desconhecido pegou uma bandeja de tipos |
| 27 | e os embaralhou para fazer um livro de modelos de tipos. Lorem Ipsum sobreviveu não só a cinco | 27 | e os embaralhou para fazer um livro de modelos de tipos. Lorem Ipsum sobreviveu não só a cinco |
| @@ -186,7 +186,7 @@ | @@ -186,7 +186,7 @@ | ||
| 186 | </div> | 186 | </div> |
| 187 | </div> | 187 | </div> |
| 188 | </section> | 188 | </section> |
| 189 | -<section id="wl-volunteers"> | 189 | +<section id="wl-volunteers" ng-controller="volunteersCtrl"> |
| 190 | <div class="container-fluid"> | 190 | <div class="container-fluid"> |
| 191 | <div class="row"> | 191 | <div class="row"> |
| 192 | <div class="col-xs-12 wl-section-title"> | 192 | <div class="col-xs-12 wl-section-title"> |
| @@ -194,8 +194,8 @@ | @@ -194,8 +194,8 @@ | ||
| 194 | colaborando</div> | 194 | colaborando</div> |
| 195 | </div> | 195 | </div> |
| 196 | <div class="col-xs-12 wl-volunteers-container"> | 196 | <div class="col-xs-12 wl-volunteers-container"> |
| 197 | - <div ng-repeat="avatar in avatars" class="wl-volunteers-wrapper"> | ||
| 198 | - <img ng-src="{{ avatar.url }}"> | 197 | + <div ng-repeat="volunteers in volunteersData" class="wl-volunteers-wrapper" ng-if="volunteers.info.avatar_url !== ''"> |
| 198 | + <img ng-src="{{ volunteers.info.avatar_url }}"> | ||
| 199 | </div> | 199 | </div> |
| 200 | <div ng-repeat="avatar in avatars" | 200 | <div ng-repeat="avatar in avatars" |
| 201 | ng-if="avatars.length % 10 === 0? false: $index <= avatars.length - avatars.length % 10" | 201 | ng-if="avatars.length % 10 === 0? false: $index <= avatars.length - avatars.length % 10" |
| @@ -204,4 +204,149 @@ | @@ -204,4 +204,149 @@ | ||
| 204 | </div> | 204 | </div> |
| 205 | </div> | 205 | </div> |
| 206 | </div> | 206 | </div> |
| 207 | +</section> | ||
| 208 | +<section id="wl-signs-and-ranking"> | ||
| 209 | + <div class="container-fluid"> | ||
| 210 | + <div class="row"> | ||
| 211 | + <div class="col-xs-12 wl-signs-and-ranking-container"> | ||
| 212 | + <div class="wl-signs-and-ranking-wrapper"> | ||
| 213 | + <div class="wl-section-title"> | ||
| 214 | + <div class="title">sinais | ||
| 215 | + construídos | ||
| 216 | + </div> | ||
| 217 | + </div> | ||
| 218 | + <div class="wl-section-description"> | ||
| 219 | + <p>Lorem Ipsum é simplesmente uma simulação de texto da indústria tipográfica e de impressos, e vem sendo utilizado desde o século XVI.</p> | ||
| 220 | + </div> | ||
| 221 | + <div class="wl-signs-container"> | ||
| 222 | + <div class="wl-signs-wrapper" ng-repeat="i in [1,2,3,4,5,6,7,8,9]"> | ||
| 223 | + <img src="assets/img/sign-placeholder.png"> | ||
| 224 | + </div> | ||
| 225 | + </div> | ||
| 226 | + </div> | ||
| 227 | + <div class="wl-signs-and-ranking-wrapper" ng-controller="rankingCtrl"> | ||
| 228 | + <div class="wl-section-title"> | ||
| 229 | + <div class="title">ranking | ||
| 230 | + dos colaborandores | ||
| 231 | + </div> | ||
| 232 | + </div> | ||
| 233 | + <div class="wl-section-description"></div> | ||
| 234 | + <div class="row"> | ||
| 235 | + <div class="col-xs-3 wl-ranking-header-wrapper" ng-click="setActiveTab(0)"> | ||
| 236 | + <div class="wl-ranking-header" ng-class="{'-active': activeTab === 0}"> | ||
| 237 | + <div class="title"> | ||
| 238 | + Sinais construídos | ||
| 239 | + </div> | ||
| 240 | + </div> | ||
| 241 | + </div> | ||
| 242 | + <div class="col-xs-3 wl-ranking-header-wrapper" ng-click="setActiveTab(1)"> | ||
| 243 | + <div class="wl-ranking-header" ng-class="{'-active': activeTab === 1}"> | ||
| 244 | + <div class="title"> | ||
| 245 | + Sinais corrigidos | ||
| 246 | + </div> | ||
| 247 | + </div> | ||
| 248 | + </div> | ||
| 249 | + <div class="col-xs-3 wl-ranking-header-wrapper" ng-click="setActiveTab(2)"> | ||
| 250 | + <div class="wl-ranking-header" ng-class="{'-active': activeTab === 2}"> | ||
| 251 | + <div class="title"> | ||
| 252 | + Sinais avaliados | ||
| 253 | + </div> | ||
| 254 | + </div> | ||
| 255 | + </div> | ||
| 256 | + <div class="col-xs-3 wl-ranking-header-wrapper" ng-click="setActiveTab(3)"> | ||
| 257 | + <div class="wl-ranking-header" ng-class="{'-active': activeTab === 3}"> | ||
| 258 | + <div class="title"> | ||
| 259 | + Vídeos enviados | ||
| 260 | + </div> | ||
| 261 | + </div> | ||
| 262 | + </div> | ||
| 263 | + </div> | ||
| 264 | + <div ng-show="activeTab == 0" class="wl-ranking-container"> | ||
| 265 | + <div class="row"> | ||
| 266 | + <div class="col-xs-6" ng-repeat="user in rankingData.wikilibras"> | ||
| 267 | + <div class="wl-rank"> | ||
| 268 | + <div class="row"> | ||
| 269 | + <div class="col-xs-4"> | ||
| 270 | + <div class="star-wrapper"> | ||
| 271 | + <img ng-if="[0,1,2].indexOf($index) !== -1" ng-src="assets/img/{{$index === 0? 'gold':($index === 1? 'silver': 'bronze')}}-star-icon.png"> | ||
| 272 | + </div> | ||
| 273 | + <div class="position-wrapper"> | ||
| 274 | + {{ $index+1 }}. | ||
| 275 | + </div> | ||
| 276 | + </div> | ||
| 277 | + <div class="col-xs-8 wl-ranked-volunteer"> | ||
| 278 | + {{ user.name }} | ||
| 279 | + </div> | ||
| 280 | + </div> | ||
| 281 | + </div> | ||
| 282 | + </div> | ||
| 283 | + </div> | ||
| 284 | + </div> | ||
| 285 | + <div ng-show="activeTab === 1" class="wl-ranking-container"> | ||
| 286 | + <div class="row"> | ||
| 287 | + <div class="col-xs-6" ng-repeat="user in rankingData.corretor_sinais"> | ||
| 288 | + <div class="wl-rank"> | ||
| 289 | + <div class="row"> | ||
| 290 | + <div class="col-xs-4"> | ||
| 291 | + <div class="star-wrapper"> | ||
| 292 | + <img ng-if="[0,1,2].indexOf($index) !== -1" ng-src="assets/img/{{$index === 0? 'gold':($index === 1? 'silver': 'bronze')}}-star-icon.png"> | ||
| 293 | + </div> | ||
| 294 | + <div class="position-wrapper"> | ||
| 295 | + {{ $index+1 }}. | ||
| 296 | + </div> | ||
| 297 | + </div> | ||
| 298 | + <div class="col-xs-8 wl-ranked-volunteer"> | ||
| 299 | + {{ user.name }} | ||
| 300 | + </div> | ||
| 301 | + </div> | ||
| 302 | + </div> | ||
| 303 | + </div> | ||
| 304 | + </div> | ||
| 305 | + </div> | ||
| 306 | + <div ng-show="activeTab === 2" class="wl-ranking-container"> | ||
| 307 | + <div class="row"> | ||
| 308 | + <div class="col-xs-6" ng-repeat="user in rankingData.validador_sinais"> | ||
| 309 | + <div class="wl-rank"> | ||
| 310 | + <div class="row"> | ||
| 311 | + <div class="col-xs-4"> | ||
| 312 | + <div class="star-wrapper"> | ||
| 313 | + <img ng-if="[0,1,2].indexOf($index) !== -1" ng-src="assets/img/{{$index === 0? 'gold':($index === 1? 'silver': 'bronze')}}-star-icon.png"> | ||
| 314 | + </div> | ||
| 315 | + <div class="position-wrapper"> | ||
| 316 | + {{ $index+1 }}. | ||
| 317 | + </div> | ||
| 318 | + </div> | ||
| 319 | + <div class="col-xs-8 wl-ranked-volunteer"> | ||
| 320 | + {{ user.fullname }} | ||
| 321 | + </div> | ||
| 322 | + </div> | ||
| 323 | + </div> | ||
| 324 | + </div> | ||
| 325 | + </div> | ||
| 326 | + </div> | ||
| 327 | + <div ng-show="activeTab === 3" class="wl-ranking-container"> | ||
| 328 | + <div class="row"> | ||
| 329 | + <div class="col-xs-6" ng-repeat="i in [0,1,2,3,4,5,6,7,8,9]"> | ||
| 330 | + <div class="wl-rank"> | ||
| 331 | + <div class="row"> | ||
| 332 | + <div class="col-xs-4"> | ||
| 333 | + <div class="star-wrapper"> | ||
| 334 | + <img ng-if="[0,1,2].indexOf($index) !== -1" ng-src="assets/img/{{$index === 0? 'gold':($index === 1? 'silver': 'bronze')}}-star-icon.png"> | ||
| 335 | + </div> | ||
| 336 | + <div class="position-wrapper"> | ||
| 337 | + {{ $index+1 }}. | ||
| 338 | + </div> | ||
| 339 | + </div> | ||
| 340 | + <div class="col-xs-8 wl-ranked-volunteer"> | ||
| 341 | + {{ 'Teste ' + (i + 1) }} | ||
| 342 | + </div> | ||
| 343 | + </div> | ||
| 344 | + </div> | ||
| 345 | + </div> | ||
| 346 | + </div> | ||
| 347 | + </div> | ||
| 348 | + </div> | ||
| 349 | + </div> | ||
| 350 | + </div> | ||
| 351 | + </div> | ||
| 207 | </section> | 352 | </section> |
| 208 | \ No newline at end of file | 353 | \ No newline at end of file |
| @@ -0,0 +1,17 @@ | @@ -0,0 +1,17 @@ | ||
| 1 | +{ | ||
| 2 | + "pybossa_url": "http://localhost/pybossa", | ||
| 3 | + "goals": { | ||
| 4 | + "wikilibras": { | ||
| 5 | + "goal_n_tasks": 20, | ||
| 6 | + "goal_deadline": "30/09/2016" | ||
| 7 | + }, | ||
| 8 | + "corretor_sinais": { | ||
| 9 | + "goal_n_tasks": 30, | ||
| 10 | + "goal_deadline": "29/09/2016" | ||
| 11 | + }, | ||
| 12 | + "validador_sinais": { | ||
| 13 | + "goal_n_tasks": 40, | ||
| 14 | + "goal_deadline": "28/09/2016" | ||
| 15 | + } | ||
| 16 | + } | ||
| 17 | +} | ||
| 0 | \ No newline at end of file | 18 | \ No newline at end of file |
conf/goals.json
| @@ -1,14 +0,0 @@ | @@ -1,14 +0,0 @@ | ||
| 1 | -{ | ||
| 2 | - "wikilibras": { | ||
| 3 | - "goal_n_tasks": 20, | ||
| 4 | - "goal_deadline": "30/09/2016" | ||
| 5 | - }, | ||
| 6 | - "corretor_sinais": { | ||
| 7 | - "goal_n_tasks": 30, | ||
| 8 | - "goal_deadline": "29/09/2016" | ||
| 9 | - }, | ||
| 10 | - "validador_sinais": { | ||
| 11 | - "goal_n_tasks": 40, | ||
| 12 | - "goal_deadline": "28/09/2016" | ||
| 13 | - } | ||
| 14 | -} | ||
| 15 | \ No newline at end of file | 0 | \ No newline at end of file |
index.html
| @@ -28,6 +28,12 @@ | @@ -28,6 +28,12 @@ | ||
| 28 | <script src="assets/js/libs/moment.min.js"></script> | 28 | <script src="assets/js/libs/moment.min.js"></script> |
| 29 | <script src="assets/js/libs/angular-moment.min.js"></script> | 29 | <script src="assets/js/libs/angular-moment.min.js"></script> |
| 30 | 30 | ||
| 31 | + <script src="assets/js/volunteers/volunteers.module.js"></script> | ||
| 32 | + <script src="assets/js/volunteers/volunteers.service.js"></script> | ||
| 33 | + <script src="assets/js/volunteers/volunteers.controller.js"></script> | ||
| 34 | + <script src="assets/js/ranking/ranking.module.js"></script> | ||
| 35 | + <script src="assets/js/ranking/ranking.service.js"></script> | ||
| 36 | + <script src="assets/js/ranking/ranking.controller.js"></script> | ||
| 31 | <script src="assets/js/progress/progress.module.js"></script> | 37 | <script src="assets/js/progress/progress.module.js"></script> |
| 32 | <script src="assets/js/progress/progress.service.js"></script> | 38 | <script src="assets/js/progress/progress.service.js"></script> |
| 33 | <script src="assets/js/progress/progress.controller.js"></script> | 39 | <script src="assets/js/progress/progress.controller.js"></script> |