summaryrefslogtreecommitdiff
path: root/js
diff options
context:
space:
mode:
Diffstat (limited to 'js')
-rw-r--r--js/codeq/navigation.js4
-rw-r--r--js/codeq/settings.js71
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');
}
});
})();