diff options
Diffstat (limited to 'js/codeq')
-rw-r--r-- | js/codeq/navigation.js | 4 | ||||
-rw-r--r-- | js/codeq/settings.js | 71 |
2 files changed, 45 insertions, 30 deletions
diff --git a/js/codeq/navigation.js b/js/codeq/navigation.js index 5dbbf1e..9483e05 100644 --- a/js/codeq/navigation.js +++ b/js/codeq/navigation.js @@ -130,5 +130,9 @@ codeq.globalStateMachine.transition('changePassword'); e.preventDefault();//prevent this since we'll trigger a page reload otherwise }); + $('#settingsTrigger').on('click',function(e){ + codeq.globalStateMachine.transition('settings'); + e.preventDefault(); + }); })(); diff --git a/js/codeq/settings.js b/js/codeq/settings.js index dd844a5..1c15ad0 100644 --- a/js/codeq/settings.js +++ b/js/codeq/settings.js @@ -5,37 +5,48 @@ var guiLangSelect = $('#gui_lang_select'), robotAddressInput = $('#robot_address_input'), - previousGuiLang = guiLangSelect.val(), - closedWithSave = false; + jqDisabledOverlay = $('#disabled'), + jqSettForm = $("#settingsForm"), + jqSettCancelBtn = $("#settings_cancel_btn"), + jqScreenSettings = $('#screen_settings'); - guiLangSelect.on("change",function() { - var lang = guiLangSelect.val(); - if (lang in codeq.supportedLangs) { - codeq.setLang(lang); - } - }); - - $("#settings_save_btn").on("click", function() { - closedWithSave = true; - }); - - $("#settings_dropdown_menu").on("shown.bs.dropdown", function() { - closedWithSave = false; - previousGuiLang = codeq.settings['gui_lang']; - }).on("hidden.bs.dropdown", function() { - if(closedWithSave){ - codeq.settings['robot_address'] = robotAddressInput.val(); - codeq.comms.updateSettings(codeq.settings) - .then(function (data) { - if (data.code !== 0) { - throw new Error('Updating settings failed, code: ' + data.code + ', message: ' + data.message); - } - }) - .done(); - }else{ - guiLangSelect.val(previousGuiLang); - if (previousGuiLang in codeq.supportedLangs) codeq.setLang(previousGuiLang); - robotAddressInput.val(codeq.settings['robot_address']); + codeq.globalStateMachine.register('settings',{ + 'enter':function(){ + jqDisabledOverlay.css('display', ''); + robotAddressInput.val(codeq.settings['robot_address']);//set the robot address once we enter the state + var previousGuiLang = codeq.settings['gui_lang']; + jqSettForm.on("submit", function() { + codeq.settings['robot_address'] = robotAddressInput.val(); + codeq.comms.updateSettings(codeq.settings) + .then(function (data) { + if (data.code !== 0) { + throw new Error('Updating settings failed, code: ' + data.code + ', message: ' + data.message); + } + }) + .done(); + history.back(); + return false; + }); + jqSettCancelBtn.on("click",function(){ + guiLangSelect.val(previousGuiLang); + if (previousGuiLang in codeq.supportedLangs) codeq.setLang(previousGuiLang); + history.back(); + }); + guiLangSelect.on("change",function() { + var lang = guiLangSelect.val(); + if (lang in codeq.supportedLangs) { + codeq.setLang(lang); + } + }); + jqScreenSettings.css('display', ''); + jqDisabledOverlay.css('display', 'none'); + }, + 'exit':function(){ + jqSettForm.off('submit'); + jqSettCancelBtn.off('click'); + guiLangSelect.off('select'); + robotAddressInput.val(''); + jqScreenSettings.css('display', 'none'); } }); })(); |