Commit 7a1e3356ef4ad609fa2a22e5df65111928694c34
1 parent
4423508e
Exists in
master
and in
1 other branch
Versão inicial da tela de sinais ensinados.
Showing
6 changed files
with
182 additions
and
21 deletions
Show diff stats
view/assets/css/main.css
... | ... | @@ -0,0 +1,36 @@ |
1 | +.teached-signs-msg[type=one] { | |
2 | + display: none; | |
3 | +} | |
4 | + | |
5 | +.teached-signs-msg[type=more] { | |
6 | + display: none; | |
7 | +} | |
8 | + | |
9 | +.col-btn { | |
10 | + padding-right: 5px; | |
11 | + margin-bottom: 10px; | |
12 | +} | |
13 | + | |
14 | +.modal { | |
15 | + top: 100px; | |
16 | +} | |
17 | + | |
18 | +.modal-xlg { | |
19 | + width: 100%; | |
20 | +} | |
21 | + | |
22 | +.modal-content { | |
23 | + background: none; | |
24 | + border: none; | |
25 | + box-shadow: none; | |
26 | +} | |
27 | + | |
28 | +#teached-sign-name { | |
29 | + color: #ffffff; | |
30 | + font-weight: bold; | |
31 | +} | |
32 | + | |
33 | +#teached-sign-video-container video { | |
34 | + height: 100%; | |
35 | + width: 100%; | |
36 | +} | |
0 | 37 | \ No newline at end of file | ... | ... |
... | ... | @@ -0,0 +1,108 @@ |
1 | +(function(teachedSigns, $, undefined) { | |
2 | + | |
3 | + var totalTasks = 0; | |
4 | + var doneTasks = 0; | |
5 | + var userId = -1; | |
6 | + var pybossaUrl = '/'; | |
7 | + var projectname = 'wikilibras'; | |
8 | + var projectId = -1; | |
9 | + | |
10 | + function _getProjectId() { | |
11 | + return $.ajax({ | |
12 | + url : pybossaUrl + 'api/project?short_name=' + projectname | |
13 | + }); | |
14 | + } | |
15 | + | |
16 | + function _getUserProgress() { | |
17 | + return $.ajax({ | |
18 | + url : pybossaUrl + 'api/project/' + projectname + '/userprogress', | |
19 | + cache : false, | |
20 | + dataType : 'json' | |
21 | + }); | |
22 | + } | |
23 | + | |
24 | + function _getAnswers() { | |
25 | + return $.ajax({ | |
26 | + url : pybossaUrl + 'api/taskrun?project_id=' + projectId | |
27 | + + '&user_id=' + userId | |
28 | + }); | |
29 | + } | |
30 | + | |
31 | + function _updateTeachedSignsMessage() { | |
32 | + $(".teached-signs-msg").hide(); | |
33 | + if (doneTasks == 0) { | |
34 | + $(".teached-signs-msg[type=none]").show(); | |
35 | + } else if (doneTasks == 1) { | |
36 | + $(".teached-signs-msg[type=one]").show(); | |
37 | + } else { | |
38 | + $(".teached-signs-msg[type=more] span").text(doneTasks); | |
39 | + $(".teached-signs-msg[type=more]").show(); | |
40 | + } | |
41 | + } | |
42 | + | |
43 | + function _createSigns(answers) { | |
44 | + _updateTeachedSignsMessage(); | |
45 | + for (i = 0; i < answers.length; i++) { | |
46 | + _addSign(answers[i].info); | |
47 | + } | |
48 | + } | |
49 | + | |
50 | + function _addSign(answer) { | |
51 | + var signName = answer.parameter_json.sinal; | |
52 | + var apiUserId = answer.parameter_json.userId; | |
53 | + var videoUrl = wikilibras.getRenderedAvatarUrl(apiUserId, signName); | |
54 | + $("#signs-list-container").append( | |
55 | + '<div class="col-btn col-xs-6 col-sm-3 col-md-2" sign-name="' | |
56 | + + signName | |
57 | + + '"><button class="btn btn-danger btn-block">' | |
58 | + + signName + '</button></div>'); | |
59 | + $("#signs-list-container .col-btn[sign-name=" + signName + "]") | |
60 | + .off("click") | |
61 | + .on( | |
62 | + "click", | |
63 | + function() { | |
64 | + $('#teached-sign-video-container') | |
65 | + .html( | |
66 | + "<video autoplay loop><source src='" | |
67 | + + videoUrl | |
68 | + + "' type='video/webm'>Sem suporte a videos</video>"); | |
69 | + $('#teached-sign-name').html(signName); | |
70 | + $('#teached-sign-modal').modal('show'); | |
71 | + }); | |
72 | + | |
73 | + } | |
74 | + | |
75 | + function _updateTeachedSignsContainer() { | |
76 | + $("#signs-list-container").html(""); | |
77 | + _getAnswers().done(function(answers) { | |
78 | + _createSigns(answers); | |
79 | + }); | |
80 | + } | |
81 | + | |
82 | + teachedSigns.setup = function() { | |
83 | + _getProjectId().done(function(response) { | |
84 | + console.log(response); | |
85 | + if (typeof response == "undefined" || response.length < 1) { | |
86 | + return; | |
87 | + } | |
88 | + projectId = response[0].id; | |
89 | + _getUserProgress().done(function(response) { | |
90 | + totalTasks = response.total; | |
91 | + doneTasks = response.done; | |
92 | + userId = response.user_id; | |
93 | + _updateTeachedSignsContainer(); | |
94 | + | |
95 | + console.log(totalTasks); | |
96 | + console.log(doneTasks); | |
97 | + console.log(userId); | |
98 | + }); | |
99 | + }); | |
100 | + }; | |
101 | + | |
102 | + teachedSigns.addNewSignal = function(answer) { | |
103 | + doneTasks = doneTasks + 1; | |
104 | + _updateTeachedSignsMessage(); | |
105 | + _addSign(answer); | |
106 | + } | |
107 | + | |
108 | +}(window.teachedSigns = window.teachedSigns || {}, jQuery)); | ... | ... |
view/assets/js/wikilibras.js
... | ... | @@ -405,13 +405,10 @@ |
405 | 405 | } |
406 | 406 | |
407 | 407 | function _setupGUI(task, deferred) { |
408 | - dynengine.load(); | |
409 | - dynworkflow.load(); | |
410 | 408 | _clearGUI(); |
411 | 409 | _setupConfigurationPanel(); |
412 | 410 | _setupSelectionPanel(); |
413 | 411 | _setupMainScreen(task, deferred); |
414 | - submitSign.setup(); | |
415 | 412 | } |
416 | 413 | |
417 | 414 | function _createAnswer(task, status) { |
... | ... | @@ -450,6 +447,7 @@ |
450 | 447 | |
451 | 448 | function _saveAnswer(task, deferred, answer) { |
452 | 449 | pybossa.saveTask(task.id, answer).done(function() { |
450 | + teachedSigns.addNewSignal(answer); | |
453 | 451 | setTimeout(function() { |
454 | 452 | $("#thanks-screen").hide(); |
455 | 453 | deferred.resolve(); |
... | ... | @@ -464,8 +462,16 @@ |
464 | 462 | // It removes the PyBossa default message |
465 | 463 | $(".row .col-md-12 p").remove(); |
466 | 464 | } |
467 | - | |
465 | + | |
466 | + function _loadMainComponents(task) { | |
467 | + dynengine.load(); | |
468 | + dynworkflow.load(); | |
469 | + submitSign.setup(); | |
470 | + teachedSigns.setup(); | |
471 | + } | |
472 | + | |
468 | 473 | pybossa.presentTask(function(task, deferred) { |
474 | + _loadMainComponents(); | |
469 | 475 | if (!$.isEmptyObject(task) && current_task_id != task.id) { |
470 | 476 | _loadTaskInfo(task); |
471 | 477 | _setupGUI(task, deferred) |
... | ... | @@ -509,6 +515,10 @@ |
509 | 515 | wikilibras.enableIconCheck = function(container, isHover) { |
510 | 516 | _enableIconCheck(container, isHover); |
511 | 517 | } |
518 | + | |
519 | + wikilibras.getRenderedAvatarUrl = function(userId, signName) { | |
520 | + return _getRenderedAvatarUrl(userId, signName); | |
521 | + } | |
512 | 522 | |
513 | 523 | wikilibras.showTeachContainer = function() { |
514 | 524 | $(".sub-main-container").hide(); | ... | ... |
view/template.html
... | ... | @@ -297,7 +297,26 @@ |
297 | 297 | </form> |
298 | 298 | </div> |
299 | 299 | <div id="teached-signs-container" class="sub-main-container"> |
300 | - <span>Sinais ensinados</span> | |
300 | + <h4 class="teached-signs-msg" type="none">Você ainda não ensinou | |
301 | + sinais.</h4> | |
302 | + <h4 class="teached-signs-msg" type="one"> | |
303 | + Você já ensinou 1 sinal de LIBRAS. | |
304 | + </h4> | |
305 | + <h4 class="teached-signs-msg" type="more"> | |
306 | + Você já ensinou <span>x</span> sinais de LIBRAS. | |
307 | + </h4> | |
308 | + <div id="signs-list-container" class="row"></div> | |
309 | + <div id="teached-sign-modal" class="modal fade" tabindex="-1" | |
310 | + role="dialog" aria-labelledby="modalUserSignal"> | |
311 | + <div class="modal-dialog" role="document"> | |
312 | + <div class="modal-content"> | |
313 | + <div class="modal-body"> | |
314 | + <div id="teached-sign-video-container"></div> | |
315 | + <p id="teached-sign-name" class="text-center"></p> | |
316 | + </div> | |
317 | + </div> | |
318 | + </div> | |
319 | + </div> | |
301 | 320 | </div> |
302 | 321 | <div id="tutorial-container" class="sub-main-container"> |
303 | 322 | <span>Tutorial</span> |
... | ... | @@ -306,11 +325,11 @@ |
306 | 325 | |
307 | 326 | <script src="{{ server }}/assets/js/jquery.scrollTo.js"></script> |
308 | 327 | <script src="{{ server }}/assets/js/js.cookie.js"></script> |
309 | - | |
310 | 328 | <script src="{{ server }}/assets/js/jquery.ui.widget.js"></script> |
311 | 329 | <script src="{{ server }}/assets/js/jquery.iframe-transport.js"></script> |
312 | 330 | <script src="{{ server }}/assets/js/jquery.fileupload.js"></script> |
313 | 331 | |
332 | +<script src="{{ server }}/assets/js/teached-signs.js"></script> | |
314 | 333 | <script src="{{ server }}/assets/js/submit-sign.js"></script> |
315 | 334 | <script src="{{ server }}/assets/js/facial.js"></script> |
316 | 335 | <script src="{{ server }}/assets/js/movement.js"></script> |
... | ... | @@ -326,17 +345,4 @@ |
326 | 345 | <script type="text/javascript"> |
327 | 346 | wikilibras.run("{{ server }}", "{{ server_backend }}", |
328 | 347 | "{{ app_shortname }}", "{{ api_host }}"); |
329 | - $(document).ready(function() { | |
330 | - // Make it possible the elements trigger the show or hide event | |
331 | - (function($) { | |
332 | - $.each([ 'show', 'hide' ], function(i, ev) { | |
333 | - var el = $.fn[ev]; | |
334 | - $.fn[ev] = function() { | |
335 | - this.trigger(ev); | |
336 | - el.apply(this, arguments); | |
337 | - return el; | |
338 | - }; | |
339 | - }); | |
340 | - })(jQuery); | |
341 | - }); | |
342 | -</script> | |
348 | +</script> | |
343 | 349 | \ No newline at end of file | ... | ... |
wikilibras.py
... | ... | @@ -34,7 +34,7 @@ class Wikilibras: |
34 | 34 | def __update_project_info(self, project): |
35 | 35 | template = self.env.get_template('template.html') |
36 | 36 | project.info['task_presenter'] = template.render(server=self.config['HOST_STATIC_FILES_ENDPOINT'], server_backend=self.config['HOST_ENDPOINT'], app_shortname=self.config['PYBOSSA_APP_SHORT_NAME'], api_host=self.config['API_HOST']) |
37 | - project.info['thumbnail'] = self.config['HOST_ENDPOINT'] + "/img/thumbnail.png" | |
37 | + project.info['thumbnail'] = self.config['HOST_STATIC_FILES_ENDPOINT'] + "/img/thumbnail.png" | |
38 | 38 | project.info['sched'] = "incremental" |
39 | 39 | project.allow_anonymous_contributors = False |
40 | 40 | #project.published = True | ... | ... |