1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
/* 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 <http://www.gnu.org/licenses/>. */
/**
* Created by robert on 9/29/15.
*
*/
(function(){
"use strict";
var navigationSettings = $('#navigation-settings'),
guiLangSelect = $('#settings-gui-lang'),
robotAddressInput = $('#settings-robot-address'),
jqDisabledOverlay = $('#disabled'),
jqSettForm = $("#settings-form"),
jqSettCancelBtn = $("#settings-cancel"),
jqScreenSettings = $('#screen-settings'),
jqLayoutSelect = $('#settings-layout');
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');
}
});
})();
|