diff --git a/view/assets/js/articulation.js b/view/assets/js/articulation.js index 38f97a2..f4dff3a 100644 --- a/view/assets/js/articulation.js +++ b/view/assets/js/articulation.js @@ -31,7 +31,7 @@ $(articulation_x_y + " .ball-selector").off("click").on("click", function(a) { var b = $(a.target); if (!b.hasClass("ball-selector")) { - dynworkflow.selectedConfig(); + dynworkflow.userSelectedAnOption(); return; } var c = b.parent(".grid-row"), @@ -42,7 +42,7 @@ selectedY = g; _setupModuleZ(hand); //_updateParameterJSON(hand); - dynworkflow.selectedConfig(); + dynworkflow.userSelectedAnOption(); }); } @@ -52,7 +52,7 @@ $(articulation_z + " .ball-selector").off("click").on("click", function(a) { var b = $(a.target); if (!b.hasClass("ball-selector")) { - dynworkflow.selectedConfig(); + dynworkflow.userSelectedAnOption(); return; } var c = b.parent(".grid-row"), @@ -60,7 +60,7 @@ h = b.attr("data-z"); b.attr("data-z") && e.attr("data-z", h), _updateASelector(articulation_z, b); //_updateParameterJSON(hand); - dynworkflow.selectedConfig(); + dynworkflow.userSelectedAnOption(); }); } diff --git a/view/assets/js/configuration.js b/view/assets/js/configuration.js index c62470a..6495183 100644 --- a/view/assets/js/configuration.js +++ b/view/assets/js/configuration.js @@ -4,8 +4,8 @@ var baseId = ".selection-panel-body[mainConfig=right-hand][subConfig=configuracao][step=1]"; $(baseId + " .selection-panel-option" ).off("click").on("click", function() { - wikilibras.selectConfig(baseId, this); - dynworkflow.selectedConfig(); + wikilibras.selectAnOption(baseId, this); + dynworkflow.userSelectedAnOption(); }); }; @@ -13,8 +13,8 @@ var stepTwoBaseId = ".selection-panel-body[mainConfig=right-hand][subConfig=configuracao][step=2]"; $(stepTwoBaseId + " .selection-panel-option").off("click").on( "click", function() { - wikilibras.selectConfig(stepTwoBaseId, this); - dynworkflow.selectedConfig(); + wikilibras.selectAnOption(stepTwoBaseId, this); + dynworkflow.userSelectedAnOption(); }); var stepOneBaseId = ".selection-panel-body[mainConfig=right-hand][subConfig=configuracao][step=1]"; diff --git a/view/assets/js/dynamic-selection-workflow.js b/view/assets/js/dynamic-selection-workflow.js index 1f071a0..fcd96b8 100644 --- a/view/assets/js/dynamic-selection-workflow.js +++ b/view/assets/js/dynamic-selection-workflow.js @@ -1,20 +1,24 @@ (function(dynworkflow, $, undefined) { + // Workflow configuration var jsonWF = {}; var baseUrl = ""; + // Main configurations: right-hand, left-hand and facial var mainConfig = ""; + // The converted Main Config (right/left-hand) to hand for using the same configuration var preprocessedMainConfig = ""; - var currentSubconfigParent = ""; + // Subconfigurations: Movimento, articulacao, configuracao, orientacao, etc var currentSubconfig = ""; var currentSubConfigName = ""; + var currentSubconfigParent = ""; var currentStep = 0; function _preprocessMainConfig(config) { config = config.replace("right-hand", "hand"); config = config.replace("left-hand", "hand"); return config; - }; + } function _getFirstKey(json) { var first_key = undefined; @@ -44,6 +48,7 @@ _showSubconfiguration(mainConfig, currentSubConfigName, currentStep); } + // It checks if a selection panel is already loaded function _isSubconfigurationPanelLoaded(mainConfig, subConfig, stepNumber) { var stepNumber = stepNumber + 1; return $(".selection-panel-body[mainConfig=" + mainConfig + "][subConfig=" + subConfig + @@ -56,9 +61,9 @@ "][step=" + stepNumber + "]").show(); } + // It renders or shows the requested selection panel function _showSubconfiguration(mainConfig, subConfig, stepNumber) { $(".selection-panel-body").hide(); - if (_isSubconfigurationPanelLoaded(mainConfig, subConfig, stepNumber)) { _showLoadedSubconfigurationPanel(mainConfig, subConfig, stepNumber); } else { @@ -67,36 +72,9 @@ dynengine.render(baseUrl, "/" + preprocessedMainConfig + "/" + subConfig + "/" + step + ".html", "#selection-panel", true); } - _selectTimelineIcon(mainConfig, subConfig, true); } - dynworkflow.selectMainConfig = function(config) { - mainConfig = config; - preprocessedMainConfig = _preprocessMainConfig(mainConfig) - currentSubConfigName = _getFirstKey(jsonWF[preprocessedMainConfig]); - currentSubconfig = jsonWF[preprocessedMainConfig][currentSubConfigName]; - currentSubconfigParent = jsonWF[preprocessedMainConfig]; - currentStep = 0; - - _showCurrentSubconfig(); - - if (preprocessedMainConfig != "hand" || _isTimelineLoaded()) { - _setupTimeline(); - } - } - - dynworkflow.selectMovement = function(movement) { - var subconfigJSON = currentSubconfig[movement] - currentSubConfigName = _getFirstKey(subconfigJSON); - currentSubconfigParent = subconfigJSON; - currentSubconfig = subconfigJSON[currentSubConfigName]; - currentStep = 0; - - _showCurrentSubconfig(); - _setupTimeline(); - } - function _selectSubConfig(subConfig) { currentSubConfigName = subConfig; currentSubconfig = currentSubconfigParent[currentSubConfigName]; @@ -105,15 +83,8 @@ _showCurrentSubconfig(); } - dynworkflow.selectSubConfig = function(subConfig) { - _selectSubConfig(subConfig); - } - - dynworkflow.nextSubConfig = function() { - _nextSubConfig(); - } - - function _nextSubConfig() { + // It show the next selection panel on the workflow + function _showNextSubConfig() { currentStep = currentStep + 1; if (currentStep < currentSubconfig.length) { _showCurrentSubconfig(); @@ -127,17 +98,15 @@ } } - function _selectedConfig() { + // A callback function to be called when the user selects a option on a panel + function _userSelectedAnOption() { if (currentStep == currentSubconfig.length - 1) { _setupCheckIcon(mainConfig, currentSubConfigName); } - _nextSubConfig(); - } - - dynworkflow.selectedConfig = function() { - _selectedConfig(); + _showNextSubConfig(); } + // Timeline functions function _selectTimelineIcon(mainConfig, subConfig) { var icon_id = ".subconfiguration-panel[mainConfig=" + mainConfig + "] .icon_container[json_name=" + subConfig + "]"; @@ -177,7 +146,7 @@ } function _setupTimelineIcons(timelineBaseId) { - $(timelineBaseId + " .icon_container").hide(); + $(timelineBaseId + " .icon_container[json_name]").hide(); for (var name in currentSubconfigParent) { $(timelineBaseId + " .icon_container[json_name=" + name + "]").show(); @@ -188,8 +157,7 @@ //TODO Refact _selectTimelineIcon(mainConfig, "articulacao"); } - - $(timelineBaseId + " .icon_container").off("click").on("click", + $(timelineBaseId + " .icon_container[json_name]").off("click").on("click", function() { var subConfig = $(this).attr("json_name"); _selectSubConfig(subConfig); @@ -210,12 +178,42 @@ } } - dynworkflow.setupTimeline = function() { + // Public methods + dynworkflow.selectMainConfig = function(config) { + mainConfig = config; + preprocessedMainConfig = _preprocessMainConfig(mainConfig); + currentSubConfigName = _getFirstKey(jsonWF[preprocessedMainConfig]); + currentSubconfig = jsonWF[preprocessedMainConfig][currentSubConfigName]; + currentSubconfigParent = jsonWF[preprocessedMainConfig]; + currentStep = 0; + + _showCurrentSubconfig(); + + if (preprocessedMainConfig != "hand" || _isTimelineLoaded()) { + _setupTimeline(); + } + } + + dynworkflow.selectMovement = function(movement) { + var subconfigJSON = currentSubconfig[movement] + currentSubConfigName = _getFirstKey(subconfigJSON); + currentSubconfigParent = subconfigJSON; + currentSubconfig = subconfigJSON[currentSubConfigName]; + currentStep = 0; + + _showCurrentSubconfig(); _setupTimeline(); } - + + dynworkflow.selectSubConfig = function(subConfig) { + _selectSubConfig(subConfig); + } + + dynworkflow.userSelectedAnOption = function() { + _userSelectedAnOption(); + } + dynworkflow.load = function() { - loadedPanel = {}; baseUrl = $('#server-url').data('url'); $.get(baseUrl + "/conf/selection-workflow-json", function(result) { jsonWF = $.parseJSON(result); diff --git a/view/assets/js/movement.js b/view/assets/js/movement.js index dc3b492..cf20e47 100644 --- a/view/assets/js/movement.js +++ b/view/assets/js/movement.js @@ -4,7 +4,7 @@ var baseId = ".selection-panel-body[mainConfig=right-hand][subConfig=movimento][step=1]"; $(baseId + " .selection-panel-option").off("click").on( "click", function() { - wikilibras.selectConfig(baseId, this); + wikilibras.selectAnOption(baseId, this); dynworkflow.selectMovement($(this).attr("value")); }); }; diff --git a/view/assets/js/orientation.js b/view/assets/js/orientation.js index fecc50e..9db8b75 100644 --- a/view/assets/js/orientation.js +++ b/view/assets/js/orientation.js @@ -4,8 +4,8 @@ var baseId = ".selection-panel-body[mainConfig=right-hand][subConfig=orientacao][step=1]"; $(baseId + " .selection-panel-option").off("click").on( "click", function() { - wikilibras.selectConfig(baseId, this); - dynworkflow.selectedConfig(); + wikilibras.selectAnOption(baseId, this); + dynworkflow.userSelectedAnOption(); }); }; diff --git a/view/assets/js/wikilibras.js b/view/assets/js/wikilibras.js index 255eee7..79b1911 100644 --- a/view/assets/js/wikilibras.js +++ b/view/assets/js/wikilibras.js @@ -186,8 +186,6 @@ } function _hideSelectionPanel() { - _setupCurrentSubConfiguration(true, false); - var config = _getCurrentMainConfiguration(); _deselectIcon(config); if (_isConfigurationComplete(config)) { @@ -225,148 +223,6 @@ $("#ready-button").addClass("disabled"); } } - ; - - // Subconfigurations - function _getCurrentSubConfiguration() { - var config = _getCurrentMainConfiguration(); - return $( - "#" + - config + - "-subconfiguration-options .icon_container[select=true]") - .attr("panel"); - } - - function _getNextSubConfiguration() { - var config = _getCurrentMainConfiguration(); - return $( - "#" + - config + - "-subconfiguration-options .icon_container[select=true]") - .attr("next"); - } - - function _getPreviousSubConfiguration() { - var config = _getCurrentMainConfiguration(); - return $( - "#" + - config + - "-subconfiguration-options .icon_container[select=true]") - .attr("previous"); - } - - function _setupCurrentSubConfiguration(onHide, onFinish) { - var current_subconfig = _getCurrentSubConfiguration(); - - if (!onHide) { - _selectSubConfigurationIcon(current_subconfig, false); - } - - // Add a check if the user finished a configuration - if (onFinish && _hasSelectedAnOption(current_subconfig)) { - _setupCheckSubConfigurationIcon(current_subconfig); - } - - // Hide the current selection panel - $("#" + current_subconfig).hide(); - } - - 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, selectEvent) { - var sub_config_id = "#" + config + " [sub-config]"; - var has_active_config = $(sub_config_id).is(":visible"); - - var main_config = _getCurrentMainConfiguration(); - var icon_name = _getSubConfigurationIconName(config); - var icon_id = "#" + main_config + - "-subconfiguration-options .icon_container[name=" + icon_name + - "]"; - var sub_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")); - $(icon_id).attr("next", config); - } - } else { - sub_config = $(sub_config_id + ":visible").attr("next"); - } - $(sub_config_id).hide(); - - if (sub_config == "end") { - var tmp_next = $(icon_id).attr("tmp-next"); - $(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) { - _handleFingersPositionSubConfiguration(main_config); - } - $("#" + sub_config).show(); - } - return config; - } - - function _getSubConfigurationIconName(subconfig) { - subconfig = subconfig.replace("right-hand", "hand"); - subconfig = subconfig.replace("left-hand", "hand"); - return subconfig; - } - - function _selectSubConfigurationIcon(subconfig, isSelect) { - var iconName = _getSubConfigurationIconName(subconfig); - _selectIcon(iconName, isSelect, subconfig); - } - - function _setupCheckSubConfigurationIcon(subconfig) { - var iconName = _getSubConfigurationIconName(subconfig); - _setupCheckIcon(iconName, true, subconfig); - } - - function _showSubConfiguration(next_config, selectEvent) { - var current_config = _getCurrentSubConfiguration(); - var next_has_multiple_config = _hasMultipleConfigurations(next_config); - - if (current_config == next_config && !next_has_multiple_config) - return; - - var onFinish = true; - if (next_has_multiple_config) { - next_config = _setupMultipleConfiguration(next_config, selectEvent); - onFinish = next_config != current_config; - } - - _setupCurrentSubConfiguration(false, onFinish); - - 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(); - } - } function _setupGUIOnSelection(option) { $("#ready-button").fadeOut(300); @@ -497,7 +353,7 @@ return $(el).attr("value"); } - function _selectConfig(parentId, el) { + function _selectAnOption(parentId, el) { $(parentId + " .selection-panel-option[select=true]") .removeAttr("select"); $(el).attr("select", true); @@ -510,17 +366,6 @@ $("#selection-panel .x").off("click").on("click", function() { _hideSelectionPanel(); }); - // $(".selection-panel-body .selection-panel-option").off("click").on( - // "click", function() { - // _selectConfig(this); - // var next = _getNextSubConfiguration(); - // _showSubConfiguration(next, true); - // }); - // $(".subconfiguration-options .icon_container").off("click").on("click", - // function() { - // var subconfig = $(this).attr("panel"); - // _showSubConfiguration(subconfig, false); - // }); // $(".arrow[name=right-arrow]").off("click").on("click", function() { // var next = _getNextSubConfiguration(); // _showSubConfiguration(next, false); @@ -683,8 +528,8 @@ _hideSelectionPanel(); } - wikilibras.selectConfig = function(parentId, el) { - _selectConfig(parentId, el); + wikilibras.selectAnOption = function(parentId, el) { + _selectAnOption(parentId, el); } wikilibras.enableIconHover = function(container, isHover) { -- libgit2 0.21.2