diff --git a/contrib/apache/wikilibras.conf.tmpl b/contrib/apache/wikilibras.conf.tmpl new file mode 100644 index 0000000..1ce012c --- /dev/null +++ b/contrib/apache/wikilibras.conf.tmpl @@ -0,0 +1,19 @@ + + ServerName localhost + + WSGIDaemonProcess wikilibras user=user1 group=group1 threads=5 + WSGIScriptAlias / /contrib/wikilibras.wsgi + Alias /view /view + + > + WSGIProcessGroup wikilibras + WSGIApplicationGroup %{GLOBAL} + Order deny,allow + Allow from all + + + ServerAdmin webmaster@localhost + + ErrorLog ${APACHE_LOG_DIR}/error.log + CustomLog ${APACHE_LOG_DIR}/access.log combined + diff --git a/contrib/wikilibras.wsgi.tmpl b/contrib/wikilibras.wsgi.tmpl new file mode 100644 index 0000000..74b13b5 --- /dev/null +++ b/contrib/wikilibras.wsgi.tmpl @@ -0,0 +1,11 @@ +# Check the official documentation http://flask.pocoo.org/docs/deploying/mod_wsgi/ +# Activate the virtual env (we assume that virtualenv is in the env folder) +activate_this = '/env/bin/activate_this.py' +execfile(activate_this, dict(__file__=activate_this)) +import logging, sys +sys.stdout = sys.stderr +logging.basicConfig(stream=sys.stderr) +sys.path.insert(0,'') + +# Run the web-app +from main import app as application diff --git a/main.py b/main.py index 07bdc32..6013dd4 100644 --- a/main.py +++ b/main.py @@ -10,12 +10,6 @@ app = Flask(__name__) CORS(app) controller = None -@app.route("/") -def send_static_files(path): - root_dir = os.path.abspath(os.path.dirname(__file__)) - file_dir = os.path.join(root_dir, "view") - return send_from_directory(file_dir, path) - @app.route("/update_project") def update_project(): try: @@ -39,13 +33,19 @@ def finish_task(): except: pyutil.print_stack_trace() raise - + def read_settings(app): here = os.path.abspath(__file__) config_path = os.path.join(os.path.dirname(here), 'settings_local.py') if os.path.exists(config_path): app.config.from_pyfile(config_path) - app.config['HOST_ENDPOINT'] = "http://" + app.config['SERVER_HOST'] + ":" + str(app.config['SERVER_PORT']) + + if app.config['APACHE_HOST']: + app.config['HOST_ENDPOINT'] = "http://" + app.config['SERVER_HOST'] + app.config['APACHE_HOST_ENDPOINT'] + app.config['HOST_STATIC_FILES_ENDPOINT'] = "http://" + app.config['SERVER_HOST'] + app.config['APACHE_STATIC_FILES_ENDPOINT'] + else: + app.config['HOST_ENDPOINT'] = "http://" + app.config['SERVER_HOST'] + ":" + str(app.config['SERVER_PORT']) + app.config['HOST_STATIC_FILES_ENDPOINT'] = app.config['HOST_ENDPOINT'] def setup_controller(): global controller @@ -53,10 +53,20 @@ def setup_controller(): env = Environment(loader=PackageLoader('main', 'view')) controller = Wikilibras(app.config, env) +def setup_static_files_service(app): + if not app.config['APACHE_HOST']: + @app.route("/") + def send_static_files(path): + root_dir = os.path.abspath(os.path.dirname(__file__)) + file_dir = os.path.join(root_dir, "view") + return send_from_directory(file_dir, path) + def run(): - setup_controller() app.run(host=app.config['SERVER_HOST'], port=app.config['SERVER_PORT']) +setup_controller() +setup_static_files_service(app) + if __name__ == '__main__': try: run() diff --git a/settings_local.py.tmpl b/settings_local.py.tmpl index 6aedc26..4e2709a 100644 --- a/settings_local.py.tmpl +++ b/settings_local.py.tmpl @@ -5,6 +5,11 @@ SERVER_PORT = 8003 AGREEMENT_NUMBER = 2 API_HOST = "http://localhost:5001" +# Apache Configuration +APACHE_HOST = False +APACHE_HOST_ENDPOINT = "/wikilibras-backend" +APACHE_STATIC_FILES_ENDPOINT = "/wikilibras" + # PyBossa Configuration PYBOSSA_APP_NAME = "WikiLibras" PYBOSSA_APP_SHORT_NAME = "wikilibras" diff --git a/view/assets/css/articulation.css b/view/assets/css/articulation.css new file mode 100644 index 0000000..87454ab --- /dev/null +++ b/view/assets/css/articulation.css @@ -0,0 +1,98 @@ +.gray-background { + background-repeat: no-repeat; + background-position: center 15px, 0 0; + background-size: 67% 95%, 100% 100%; + min-width: 285px; + min-height: 361px +} + +.gray-front-avatar { + background-image: url(../../img/pa/gray-front-avatar.png), url(../../img/pa/default-base.png); +} + +.gray-side-avatar { + background-image: url(../../img/pa/gray-side-avatar.png), url(../../img/pa/default-base.png); +} + +.module-x-y { + display: none +} + +.module-x-y.active { + display: block +} + +.grid { + position: relative +} + +.grid .grid-selectors { + width: 315px; + height: 361px; + margin: 5%; + z-index: 10 +} + +.grid .grid-selectors .grid-row { + height: 20%; + padding-top: 10%; + text-align: justify; + z-index: 20 +} + +.grid .grid-selectors .grid-row .ball-selector { + background-color: #A0D0E8; + border-radius: 50%; + z-index: 100; + width: 13px; + height: 13px; + display: inline-block; + margin-right: 6%; + margin-bottom: 13%; + float: left +} + +.grid .grid-selectors .grid-row .ball-selector:nth-last-of-type(1) { + margin-right: 0 +} + +.grid .grid-selectors .grid-row .ball-selector .point-a-selector { + margin-left: -.5px; + margin-top: -7.5px +} + +.grid .avatar-base { + position: absolute; + width: 100%; + height: 100%; + z-index: 0; + top: 0; + left: 0 +} + +.grid .grid-selectors .grid-row .ball-selector.active, +.grid .grid-selectors .grid-row .ball-selector:hover { + box-shadow: 0 0 10px #fff +} + +.grid .grid-selectors .grid-row .ball-selector:hover { + cursor: pointer +} + +.actions .btn { + margin-top: 15px +} + +.module-z .grid-selectors .grid-row { + margin-right: 58%; + padding-top: 3%; +} + +.module-z .grid-selectors .grid-row .ball-selector { + float: right; + margin-right: 15% +} + +.module-z .grid-selectors .grid-row .ball-selector:nth-last-of-type(1) { + margin-right: 15% +} \ No newline at end of file diff --git a/view/assets/css/main.css b/view/assets/css/main.css old mode 100755 new mode 100644 index 68e9f01..9bee760 --- a/view/assets/css/main.css +++ b/view/assets/css/main.css @@ -1,3 +1,5 @@ +@import url("articulation.css"); + /* Main */ @font-face { font-family: 'Titillium Web'; @@ -323,7 +325,7 @@ ul.rig.columns-4 li { width: 60%; } -.selection-panel-option { +.box-panel-option { max-width: 100%; border-radius: 5px; border: 3px solid rgb(128, 168, 210); @@ -334,7 +336,7 @@ ul.rig.columns-4 li { cursor: pointer; } -.selection-panel-option:hover, .selection-panel-option[select=true] { +.box-panel-option:hover, .box-panel-option[select=true] { border-color: #9678b0; } @@ -351,7 +353,7 @@ ul.rig.columns-4 li { display: none; } -.single-column-option-container .selection-panel-option { +.single-column-option-container .box-panel-option { height: 100px; } @@ -369,11 +371,13 @@ ul.rig.columns-4 li { display: none; } -#hand-subconfiguration-options { - display: none; +.subconfiguration-options { + overflow-x: hidden; + white-space: nowrap; } .subconfiguration-panel { + display: none; padding: 10px; margin-top: 10px; margin-bottom: 10px; @@ -392,6 +396,10 @@ ul.rig.columns-4 li { padding-top: 5px; } +.arrow[name=right-arrow] { + padding-left: 10px; +} + /* Hand Configuration */ #moviment-type { display: none; diff --git a/view/assets/fonts/Helvetica.otf b/view/assets/fonts/Helvetica.otf old mode 100755 new mode 100644 index 9b1dc86..9b1dc86 Binary files a/view/assets/fonts/Helvetica.otf and b/view/assets/fonts/Helvetica.otf differ diff --git a/view/assets/fonts/TitilliumWeb-Black.ttf b/view/assets/fonts/TitilliumWeb-Black.ttf old mode 100755 new mode 100644 index fc5c4b5..fc5c4b5 Binary files a/view/assets/fonts/TitilliumWeb-Black.ttf and b/view/assets/fonts/TitilliumWeb-Black.ttf differ diff --git a/view/assets/fonts/TitilliumWeb-Bold.ttf b/view/assets/fonts/TitilliumWeb-Bold.ttf old mode 100755 new mode 100644 index 0af0fe7..0af0fe7 Binary files a/view/assets/fonts/TitilliumWeb-Bold.ttf and b/view/assets/fonts/TitilliumWeb-Bold.ttf differ diff --git a/view/assets/fonts/TitilliumWeb-BoldItalic.ttf b/view/assets/fonts/TitilliumWeb-BoldItalic.ttf old mode 100755 new mode 100644 index 77425ea..77425ea Binary files a/view/assets/fonts/TitilliumWeb-BoldItalic.ttf and b/view/assets/fonts/TitilliumWeb-BoldItalic.ttf differ diff --git a/view/assets/fonts/TitilliumWeb-ExtraLight.ttf b/view/assets/fonts/TitilliumWeb-ExtraLight.ttf old mode 100755 new mode 100644 index 2b506ef..2b506ef Binary files a/view/assets/fonts/TitilliumWeb-ExtraLight.ttf and b/view/assets/fonts/TitilliumWeb-ExtraLight.ttf differ diff --git a/view/assets/fonts/TitilliumWeb-ExtraLightItalic.ttf b/view/assets/fonts/TitilliumWeb-ExtraLightItalic.ttf old mode 100755 new mode 100644 index c1be5ba..c1be5ba Binary files a/view/assets/fonts/TitilliumWeb-ExtraLightItalic.ttf and b/view/assets/fonts/TitilliumWeb-ExtraLightItalic.ttf differ diff --git a/view/assets/fonts/TitilliumWeb-Italic.ttf b/view/assets/fonts/TitilliumWeb-Italic.ttf old mode 100755 new mode 100644 index 42f2c10..42f2c10 Binary files a/view/assets/fonts/TitilliumWeb-Italic.ttf and b/view/assets/fonts/TitilliumWeb-Italic.ttf differ diff --git a/view/assets/fonts/TitilliumWeb-Light.ttf b/view/assets/fonts/TitilliumWeb-Light.ttf old mode 100755 new mode 100644 index ca67971..ca67971 Binary files a/view/assets/fonts/TitilliumWeb-Light.ttf and b/view/assets/fonts/TitilliumWeb-Light.ttf differ diff --git a/view/assets/fonts/TitilliumWeb-LightItalic.ttf b/view/assets/fonts/TitilliumWeb-LightItalic.ttf old mode 100755 new mode 100644 index 2ea724f..2ea724f Binary files a/view/assets/fonts/TitilliumWeb-LightItalic.ttf and b/view/assets/fonts/TitilliumWeb-LightItalic.ttf differ diff --git a/view/assets/fonts/TitilliumWeb-Regular.ttf b/view/assets/fonts/TitilliumWeb-Regular.ttf old mode 100755 new mode 100644 index 6da8219..6da8219 Binary files a/view/assets/fonts/TitilliumWeb-Regular.ttf and b/view/assets/fonts/TitilliumWeb-Regular.ttf differ diff --git a/view/assets/fonts/TitilliumWeb-SemiBold.ttf b/view/assets/fonts/TitilliumWeb-SemiBold.ttf old mode 100755 new mode 100644 index dfdcdbe..dfdcdbe Binary files a/view/assets/fonts/TitilliumWeb-SemiBold.ttf and b/view/assets/fonts/TitilliumWeb-SemiBold.ttf differ diff --git a/view/assets/fonts/TitilliumWeb-SemiBoldItalic.ttf b/view/assets/fonts/TitilliumWeb-SemiBoldItalic.ttf old mode 100755 new mode 100644 index b68a669..b68a669 Binary files a/view/assets/fonts/TitilliumWeb-SemiBoldItalic.ttf and b/view/assets/fonts/TitilliumWeb-SemiBoldItalic.ttf differ diff --git a/view/assets/js/articulation.js b/view/assets/js/articulation.js new file mode 100644 index 0000000..4c6b7b6 --- /dev/null +++ b/view/assets/js/articulation.js @@ -0,0 +1,61 @@ +(function(articulation, $, undefined) { + + function _updateASelector(container, ballSelector, serverhost) { + $(container + " .ball-selector.active").each(function() { + $(this).removeClass("active"), $(this).find(".point-a-selector").remove() + }), ballSelector.addClass("active"), ballSelector.append('
') + } + + function _setupModuleZ(hand, y) { + if (typeof y == "undefined") return; + var articulation_z = "#" + hand + "-articulation .module-z"; + $(articulation_z + " .ball-selector").hide(); + $(articulation_z + " .row-number-" + y + " .ball-selector").show(); + } + + function _setupBallSelector(serverhost, hand) { + var articulation_x_y = "#" + hand + "-articulation .module-x-y"; + $(articulation_x_y + " .ball-selector").on("click", function(a) { + var b = $(a.target), + c = b.parent(".grid-row"), + d = $(articulation_x_y), + f = b.attr("data-x"), + g = c.attr("data-y"); + d.attr("data-x", f), d.attr("data-y", g), _updateASelector(articulation_x_y, b, serverhost) + _setupModuleZ(hand, g); + _updateParameterJSON(hand); + }); + var articulation_z = "#" + hand + "-articulation .module-z"; + $(articulation_z + " .ball-selector").on("click", function(a) { + var b = $(a.target), + c = b.parent(".grid-row"), + e = $(articulation_z), + h = b.attr("data-z"); + b.attr("data-z") && e.attr("data-z", h), _updateASelector(articulation_z, b, serverhost); + _updateParameterJSON(hand); + }); + } + + function _updateParameterJSON(hand) { + var value = _readValue(hand); + wikilibras.updateParameterJSON("articulacao", value); + } + + function _readValue(hand) { + var articulation_x_y = "#" + hand + "-articulation .module-x-y"; + var articulation_z = "#" + hand + "-articulation .module-z"; + var x = parseInt($(articulation_x_y).attr("data-x")); + var y = parseInt($(articulation_x_y).attr("data-y")); + var z = $(articulation_z).attr("data-z"); + z = z == ""? 1 : parseInt(z); + var value = (z-1)*10 + x + 30*(y-1); + //console.log(value); + return value; + } + + articulation.setup = function(serverhost) { + _setupBallSelector(serverhost, "right-hand"); + _setupBallSelector(serverhost, "left-hand"); + }; +}(window.articulation = window.articulation || {}, jQuery)); \ No newline at end of file diff --git a/view/assets/js/wikilibras.js b/view/assets/js/wikilibras.js index 4dcb9e8..11aa23a 100644 --- a/view/assets/js/wikilibras.js +++ b/view/assets/js/wikilibras.js @@ -2,6 +2,7 @@ var videos_url = ""; var base_url = ""; + var server_backend_url = ""; var api_url = ""; var current_task_id = -1; var base_parameter_json = {}; @@ -19,7 +20,6 @@ base_parameter_json["sinal"] = sign_name; base_parameter_json["interpolacao"] = "normal"; base_parameter_json["movimentos"] = []; - // TODO remover propriedade articulação moviment_parameter_json = { "facial" : {}, "mao_direita" : {}, @@ -157,6 +157,8 @@ function _clearPreviousSelection() { $(".selection-panel-body").hide(); $(".subconfiguration-options").hide(); + $(".subconfiguration-panel").hide(); + if (_isSelectingState()) { var current_option = _getCurrentMainConfiguration(); _selectIcon(current_option, false); @@ -267,8 +269,18 @@ function _hasMultipleConfigurations(config) { return $("#" + config).is("[multiple-config]"); } + + function _handleFingersPositionSubConfiguration(main_config) { + var finger_group = $( + "#" + + main_config + + "-fingers-position-1 .selection-panel-option[select=true]") + .attr("group"); + $(".finger-group").hide(); + $(".finger-group[group=" + finger_group + "]").show(); + } - function _setupMultipleConfiguration(config) { + function _setupMultipleConfiguration(config, selectEvent) { var sub_config_id = "#" + config + " [sub-config]"; var has_active_config = $(sub_config_id).is(":visible"); @@ -279,7 +291,7 @@ + "]"; var sub_config = ""; - if (!has_active_config) { + if (!has_active_config || !selectEvent) { sub_config = config + "-1"; if (!$(icon_id).is("[tmp-next]")) { $(icon_id).attr("tmp-next", $(icon_id).attr("next")); @@ -295,15 +307,12 @@ $(icon_id).removeAttr("tmp-next"); $(icon_id).attr("next", tmp_next); config = tmp_next; + if (_hasMultipleConfigurations(config)) { + config = _setupMultipleConfiguration(config, selectEvent); + } } else { if (sub_config.indexOf("fingers-position-2") != -1) { - var finger_group = $( - "#" - + main_config - + "-fingers-position-1 .selection-panel-option[select=true]") - .attr("group"); - $(".finger-group").hide(); - $(".finger-group[group=" + finger_group + "]").show(); + _handleFingersPositionSubConfiguration(main_config); } $("#" + sub_config).show(); } @@ -326,7 +335,7 @@ _setupCheckIcon(iconName, true, subconfig); } - function _showSubConfiguration(next_config) { + function _showSubConfiguration(next_config, selectEvent) { var current_config = _getCurrentSubConfiguration(); var next_has_multiple_config = _hasMultipleConfigurations(next_config); @@ -335,7 +344,7 @@ var onFinish = true; if (next_has_multiple_config) { - next_config = _setupMultipleConfiguration(next_config); + next_config = _setupMultipleConfiguration(next_config, selectEvent); onFinish = next_config != current_config; } @@ -344,6 +353,11 @@ if (next_config != "end") { _selectSubConfigurationIcon(next_config, true); $("#" + next_config).show(); + + var main_config = _getCurrentMainConfiguration(); + if (_isHandMovimentComplete(main_config)) { + $(".subconfiguration-panel").fadeIn(300); + } } else { _hideSelectionPanel(); } @@ -357,7 +371,6 @@ }); } - // TODO REFACT function _setupFacialSelectionPanel() { var previous_select = $("#facial-subconfiguration-options .icon_container[select=true]").length > 0; if (previous_select) { @@ -370,9 +383,14 @@ $("#facial-expression").fadeIn(300); } $("#facial-subconfiguration-options").fadeIn(300); + $(".subconfiguration-panel").fadeIn(300); } - // TODO REFACT + function _isHandMovimentComplete(main_config) { + return $("#" + main_config + + "-subconfiguration-options .icon_container[complete=true][name=hand-moviment]").length > 0; + } + function _setupHandSelectionPanel(option) { var previous_select = $("#" + option + "-subconfiguration-options .icon_container[select=true]").length > 0; @@ -391,7 +409,11 @@ _selectIcon("hand-moviment", true, option + "-moviment"); $("#" + option + "-moviment").fadeIn(300); } + $("#" + option + "-subconfiguration-options").fadeIn(300); + if (_isHandMovimentComplete(option)) { + $(".subconfiguration-panel").fadeIn(300); + } } function _setupConfigurationPanel() { @@ -447,9 +469,7 @@ if (config == "movimento") { var first_key = _getFirstKey(moviment_parameter_json[current_main_config]); if (typeof first_key == "undefined") { - moviment_parameter_json[current_main_config][value] = { - "articulacao" : 71 - }; + moviment_parameter_json[current_main_config][value] = {}; } else if (first_key != value) { moviment_parameter_json[current_main_config][value] = moviment_parameter_json[current_main_config][first_key]; delete moviment_parameter_json[current_main_config][first_key]; @@ -459,27 +479,29 @@ var first_key = _getFirstKey(moviment_parameter_json[current_main_config]); if (typeof first_key == "undefined") { first_key = "placeholder"; - moviment_parameter_json[current_main_config][first_key] = { - "articulacao" : 71 - }; + moviment_parameter_json[current_main_config][first_key] = {}; } moviment_parameter_json[current_main_config][first_key][config] = value; } else { moviment_parameter_json[current_main_config][config] = value; } } + + function _readConfigValue(el, config_name) { + if (typeof config_name == "undefined" || config_name == "articulacao") return; + + return $(el).attr("value"); + } function _selectConfig(el) { var current_config_id = $(".selection-panel-body").has(el).attr("id"); var current_config_name = $(".selection-panel-body").has(el).attr( "name"); - var config_value = $(el).attr("value"); - $("#" + current_config_id + " .selection-panel-option[select=true]") - .removeClass("selection-panel-option-hover"); $("#" + current_config_id + " .selection-panel-option[select=true]") .removeAttr("select"); $(el).attr("select", true); - + + var config_value = _readConfigValue(el, current_config_name); _updateParameterJSON(current_config_name, config_value); } @@ -491,20 +513,20 @@ "click", function() { _selectConfig(this); var next = _getNextSubConfiguration(); - _showSubConfiguration(next); + _showSubConfiguration(next, true); }); $(".subconfiguration-options .icon_container").off("click").on("click", function() { var subconfig = $(this).attr("panel"); - _showSubConfiguration(subconfig); + _showSubConfiguration(subconfig, false); }); $(".arrow[name=right-arrow]").off("click").on("click", function() { var next = _getNextSubConfiguration(); - _showSubConfiguration(next); + _showSubConfiguration(next, false); }); $(".arrow[name=left-arrow]").off("click").on("click", function() { var previous = _getPreviousSubConfiguration(); - _showSubConfiguration(previous); + _showSubConfiguration(previous, false); }); } @@ -565,12 +587,8 @@ "panel")); }); } - - function _setupGUI(task, deferred) { - _clearGUI(); - _setupConfigurationPanel(); - _setupSelectionPanel(); - + + function _setupMainScreen(task, deferred) { $("#initial-screen").fadeIn(300); $("#start-button").off("click").on("click", function() { $("#initial-screen").hide(); @@ -590,6 +608,15 @@ }); } + function _setupGUI(task, deferred) { + _clearGUI(); + _setupConfigurationPanel(); + _setupSelectionPanel(); + _setupMainScreen(task, deferred); + + articulation.setup(base_url); + } + function _saveAnswer(task, deferred) { var answer = {} answer["status"] = "FINISHED"; @@ -619,8 +646,6 @@ _loadTaskInfo(task); _setupGUI(task, deferred) $("#main-container").fadeIn(500); - console.log(base_parameter_json); - console.log(moviment_parameter_json); } else { _showCompletedAllTaskMsg(); } @@ -632,11 +657,16 @@ } // Public methods - wikilibras.run = function(serverhost, projectname, apihost) { + wikilibras.run = function(serverhost, serverbackend, projectname, apihost) { base_url = serverhost; + server_back_url = serverbackend; videos_url = base_url + "/videos/"; api_url = apihost; _run(projectname); }; + + wikilibras.updateParameterJSON = function(config, value) { + _updateParameterJSON(config, value); + } }(window.wikilibras = window.wikilibras || {}, jQuery)); \ No newline at end of file diff --git a/view/facial-configuration.html b/view/facial-configuration.html index 51426aa..5667344 100644 --- a/view/facial-configuration.html +++ b/view/facial-configuration.html @@ -6,47 +6,47 @@
    -
  • 1.
  • -
  • 2.
  • -
  • 3.
  • -
  • 4.
  • -
  • 5.
  • -
  • 6.
  • -
  • 7.
  • -
  • 8.
  • -
  • 9.
  • -
  • 10.
  • -
  • 11.
  • -
  • 12.
  • -
  • 13.
  • -
  • 14.
  • -
  • 15.
  • -
  • 16.
  • -
  • 17.
  • -
  • 18.
  • -
  • 19.
  • -
  • 20.
  • -
  • 21.
@@ -58,7 +58,7 @@
-
-
-
-
-
-
- +
+
Escolha o movimento mais parecido
    -
  • Pontual
  • -
+ +
+ + + +
+
    -
  • 0.
  • -
  • 1.
  • -
  • 2.
  • -
  • 3.
  • -
  • 4.
  • -
  • 5.
@@ -69,196 +190,261 @@
    -
  • 1.
  • -
  • 2.
  • -
  • 3.
  • -
  • 4.
  • -
  • 5.
  • -
  • 6.
  • -
  • 7.
  • -
  • 8.
  • -
  • 9.
  • -
  • 10.
  • -
  • 11.
  • -
  • 12.
  • -
  • 13.
  • -
  • 14.
  • -
  • 15.
  • -
  • 16.
  • -
  • 17.
  • -
  • 18.
  • -
  • 19.
  • +
  • 1.
  • +
  • 2.
  • +
  • 3.
  • +
  • 4.
  • +
  • 5.
  • +
  • 6.
  • +
  • 7.
  • +
  • 8.
  • +
  • 9.
  • +
  • 10.
  • +
  • 11.
  • +
  • 12.
  • +
  • 13.
  • +
  • 14.
  • +
  • 15.
  • +
  • 16.
  • +
  • 17.
  • +
  • 18.
  • +
  • 19.
    -
  • 1.
  • -
  • 2.
  • -
  • 3.
  • -
  • 4.
  • -
  • 5.
  • -
  • 6.
  • -
  • 7.
  • -
  • 8.
  • +
  • 1.
  • +
  • 2.
  • +
  • 3.
  • +
  • 4.
  • +
  • 5.
  • +
  • 6.
  • +
  • 7.
  • +
  • 8.
    -
  • 1.
  • -
  • 2.
  • -
  • 3.
  • -
  • 4.
  • -
  • 5.
  • -
  • 6.
  • -
  • 7.
  • -
  • 8.
  • -
  • 9.
  • +
  • 1.
  • +
  • 2.
  • +
  • 3.
  • +
  • 4.
  • +
  • 5.
  • +
  • 6.
  • +
  • 7.
  • +
  • 8.
  • +
  • 9.
    -
  • 1.
  • -
  • 2.
  • -
  • 3.
  • -
  • 4.
  • -
  • 5.
  • -
  • 6.
  • -
  • 7.
  • -
  • 8.
  • -
  • 9.
  • -
  • 10.
  • -
  • 11.
  • +
  • 1.
  • +
  • 2.
  • +
  • 3.
  • +
  • 4.
  • +
  • 5.
  • +
  • 6.
  • +
  • 7.
  • +
  • 8.
  • +
  • 9.
  • +
  • 10.
  • +
  • 11.
    -
  • 1.
  • -
  • 2.
  • -
  • 3.
  • -
  • 4.
  • +
  • 1.
  • +
  • 2.
  • +
  • 3.
  • +
  • 4.
    -
  • 1.
  • -
  • 2.
  • -
  • 3.
  • -
  • 4.
  • -
  • 5.
  • -
  • 6.
  • -
  • 7.
  • -
  • 8.
  • -
  • 9.
  • +
  • 1.
  • +
  • 2.
  • +
  • 3.
  • +
  • 4.
  • +
  • 5.
  • +
  • 6.
  • +
  • 7.
  • +
  • 8.
  • +
  • 9.
-
+ +
Palma da mão
    -
  • 1.
  • -
  • 2.
  • -
  • 3.
  • -
  • 4.
  • -
  • 5.
  • -
  • 6.
  • -
  • 7.
  • -
  • 8.
  • -
  • 9.
  • -
  • 10.
  • -
  • 11.
  • -
  • 12.
  • +
  • 1.
  • +
  • 2.
  • +
  • 3.
  • +
  • 4.
  • +
  • 5.
  • +
  • 6.
  • +
  • 7.
  • +
  • 8.
  • +
  • 9.
  • +
  • 10.
  • +
  • 11.
  • +
  • 12.
-{%- endmacro %} - -{%- macro subconfigPanel(name) -%} +{%- endmacro %} {%- macro subconfigPanel(name) -%}
+ next="{{ name }}-articulation">
+
+ +
diff --git a/view/img/hand-articulation-icon-check.png b/view/img/hand-articulation-icon-check.png new file mode 100644 index 0000000..5fa37e7 Binary files /dev/null and b/view/img/hand-articulation-icon-check.png differ diff --git a/view/img/hand-articulation-icon-hover.png b/view/img/hand-articulation-icon-hover.png new file mode 100644 index 0000000..c51ff5b Binary files /dev/null and b/view/img/hand-articulation-icon-hover.png differ diff --git a/view/img/hand-articulation-icon.png b/view/img/hand-articulation-icon.png new file mode 100644 index 0000000..458f136 Binary files /dev/null and b/view/img/hand-articulation-icon.png differ diff --git a/view/img/mov/CALAR_old.gif b/view/img/mov/CALAR_old.gif deleted file mode 100644 index 6060a14..0000000 Binary files a/view/img/mov/CALAR_old.gif and /dev/null differ diff --git a/view/img/mov/PONTUAL.webm b/view/img/mov/PONTUAL.webm new file mode 100644 index 0000000..bccdaf4 Binary files /dev/null and b/view/img/mov/PONTUAL.webm differ diff --git a/view/img/pa/A-Seletor.png b/view/img/pa/A-Seletor.png new file mode 100644 index 0000000..eee09ba Binary files /dev/null and b/view/img/pa/A-Seletor.png differ diff --git a/view/img/pa/default-base.png b/view/img/pa/default-base.png new file mode 100644 index 0000000..71824fb Binary files /dev/null and b/view/img/pa/default-base.png differ diff --git a/view/img/pa/gray-front-avatar.png b/view/img/pa/gray-front-avatar.png new file mode 100644 index 0000000..3a2b10d Binary files /dev/null and b/view/img/pa/gray-front-avatar.png differ diff --git a/view/img/pa/gray-side-avatar.png b/view/img/pa/gray-side-avatar.png new file mode 100644 index 0000000..329b916 Binary files /dev/null and b/view/img/pa/gray-side-avatar.png differ diff --git a/view/template.html b/view/template.html index f0cf869..93fead9 100755 --- a/view/template.html +++ b/view/template.html @@ -1,8 +1,5 @@ - - - {% import 'hand-configuration.html' as handConfig with context %} {% import 'facial-configuration.html' as facialConfig with context %} @@ -195,6 +192,11 @@ import 'facial-configuration.html' as facialConfig with context %}
+ + + + + \ No newline at end of file diff --git a/wikilibras.py b/wikilibras.py index 9acd812..d1a490c 100644 --- a/wikilibras.py +++ b/wikilibras.py @@ -33,7 +33,7 @@ class Wikilibras: def __update_project_info(self, project): template = self.env.get_template('template.html') - project.info['task_presenter'] = template.render(server=self.config['HOST_ENDPOINT'], app_shortname=self.config['PYBOSSA_APP_SHORT_NAME'], api_host=self.config['API_HOST']) + 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']) project.info['thumbnail'] = self.config['HOST_ENDPOINT'] + "/img/thumbnail.png" project.info['sched'] = "incremental" project.allow_anonymous_contributors = False -- libgit2 0.21.2