/* CodeQ: an online programming tutor. Copyright (C) 2015 UL FRI This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ /** * Created by robert on 9/29/15. * */ (function(){ "use strict"; var navigationSettings = $('#navigation-settings'), guiLangSelect = $('#gui_lang_select'), robotAddressInput = $('#robot_address_input'), jqDisabledOverlay = $('#disabled'), jqSettForm = $("#settingsForm"), jqSettCancelBtn = $("#settings_cancel_btn"), jqScreenSettings = $('#screen_settings'), jqLayoutSelect = $('#gui_layout_select'); codeq.on('layoutchange', function(){ $("#screen_prolog").removeClass(codeq.supportedLayouts.join(" ")).addClass(codeq.getLayout()); $("#screen_python").removeClass(codeq.supportedLayouts.join(" ")).addClass(codeq.getLayout()); $("#screen_robot").removeClass(codeq.supportedLayouts.join(" ")).addClass(codeq.getLayout()); }); codeq.globalStateMachine.register('settings',{ 'jqScreen': jqScreenSettings, 'isModal': true, 'enter':function(){ jqDisabledOverlay.css('display', ''); navigationSettings.addClass('active'); robotAddressInput.val(codeq.settings['robot_address']);//set the robot address once we enter the state var previousGuiLang = codeq.settings['gui_lang']; var previousLayout = codeq.settings['gui_layout']; jqSettForm.on("submit", function(e) { codeq.settings['robot_address'] = robotAddressInput.val(); codeq.log.debug("settings for update:"+JSON.stringify(codeq.settings)); codeq.comms.updateSettings(codeq.settings) .then(function (data) { if (data.code !== 0) { throw new Error('Updating settings failed, code: ' + data.code + ', message: ' + data.message); } history.back(); }) .fail(function(reason){ codeq.log.error('Settings update failed: ' + reason); alert('Settings update failed: ' + reason); }) .done(); e.preventDefault(); }); jqSettCancelBtn.on("click",function(){ jqLayoutSelect.val(previousLayout); if ($.inArray(previousLayout, codeq.supportedLayouts) >= 0) codeq.setLayout(previousLayout); 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); } }); jqLayoutSelect.on("change",function(){ jqDisabledOverlay.css('display', ''); var newLayout = jqLayoutSelect.val(); if ($.inArray(newLayout, codeq.supportedLayouts) >= 0){ codeq.setLayout(newLayout); } jqDisabledOverlay.css('display', 'none'); }); jqScreenSettings.css('display', ''); jqDisabledOverlay.css('display', 'none'); }, 'exit':function(){ jqSettForm.off('submit'); jqSettCancelBtn.off('click'); guiLangSelect.off('select'); robotAddressInput.val(''); jqScreenSettings.css('display', 'none'); navigationSettings.removeClass('active'); } }); })();