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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
|
/**
* Copyright (c) 2016 Weitian LI <liweitianux@live.com>
* MIT license
*
* Web UI of "fg21sim"
* Configuration form manipulations using the WebSocket communications
*/
"use strict";
/**
* Clear the error states previously marked on the fields with invalid values.
*/
var clearConfigFormErrors = function () {
// TODO
$("#conf-form").find(":input").each(function () {
$(this);
});
};
/**
* Reset the form to its defaults as written in the HTML.
*/
var resetConfigForm = function () {
// Credit: http://stackoverflow.com/a/6364313
$("#conf-form")[0].reset();
// TODO: whether this is required ??
// Clear previously marked errors
clearConfigFormErrors();
};
/**
* Set the configuration form to the supplied data, and mark out the fields
* with error states as specified in the given errors.
*
* @param {Object} data - The input configurations data, key-value pairs.
* @param {Object} errors - The config options with invalid values.
*/
var setConfigForm = function (data, errors) {
// Clear previously marked errors
clearConfigFormErrors();
};
/**
* Reset the server-side configurations to the defaults.
*
* @param {Object} ws - The opened WebSocket object, through which send
* the request for configuration defaults.
*/
var resetServerConfigs = function (ws) {
var msg = {type: "configs", action: "reset"};
ws.send(JSON.stringify(msg));
};
/**
* Get the configurations from the server.
* When the response arrived, the bound function will take appropriate
* reactions (e.g., `setConfigForm()`) to update the form contents.
*
* @param {Array} [keys=null] - List of keys whose values will be requested.
* If `null` then request all configurations.
*
*/
var getServerConfigs = function (ws, keys) {
keys = typeof keys !== "undefined" ? keys : null;
var msg = {type: "configs", action: "get", keys: keys};
ws.send(JSON.stringify(msg));
};
/**
* Set the server-side configurations using the sent data from the client.
*
* NOTE: The server will validate the values and further check the whole
* configurations, and response the config options with invalid values.
*
* @param {Object} [data={}] - Group of key-value pairs that to be sent to
* the server to update the configurations there.
*/
var setServerConfigs = function (ws, data) {
data = typeof data !== "undefined" ? data : {};
var msg = {type: "configs", action: "set", data: data};
ws.send(JSON.stringify(msg));
};
/**
* Request the server side configurations with user configuration file merged.
* When the response arrived, the bound function will delegate an appropriate
* function (i.e., `setConfigForm()`) to update the form contents.
*/
var loadServerConfigFile = function (ws) {
var workdir = $("input[name=workdir]").val().replace(/[\\\/]$/, "");
var configfile = $("input[name=configfile]").val().replace(/^.*[\\\/]/, "");
// FIXME: should use the native system path separator!
var filepath = workdir + "/" + configfile;
var msg = {type: "configs", action: "load", userconfig: filepath};
ws.send(JSON.stringify(msg));
};
/**
* Request the server side configurations with user configuration file merged.
* When the response arrived, the bound function will delegate an appropriate
* function (i.e., `setConfigForm()`) to update the form contents.
*
* @param {Boolean} [clobber=false] - Whether overwrite the existing file.
*/
var saveServerConfigFile = function (ws, clobber) {
clobber = typeof clobber !== "undefined" ? clobber : false;
var workdir = $("input[name=workdir]").val().replace(/[\\\/]$/, "");
var configfile = $("input[name=configfile]").val().replace(/^.*[\\\/]/, "");
// FIXME: should use the native system path separator!
var filepath = workdir + "/" + configfile;
var msg = {type: "configs",
action: "load",
outfile: filepath,
clobber: clobber};
ws.send(JSON.stringify(msg));
};
|