Skip to content

Commit 4ccebec

Browse files
committed
feat: add utils/config.html
This page should be used to generate JSON for the new config.json file.
1 parent 1920cf3 commit 4ccebec

6 files changed

+476
-3
lines changed

dist/first-bundle.js

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/last-bundle.js

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/stylesheet.css

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

utils/conf.js

+183
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,183 @@
1+
$.fn.serializeObject = function () {
2+
var self = this,
3+
json = {},
4+
push_counters = {},
5+
patterns = {
6+
"validate": /^[a-zA-Z][a-zA-Z0-9_]*(?:\[(?:\d*|[a-zA-Z0-9_]+)\])*$/,
7+
"key": /[a-zA-Z0-9_]+|(?=\[\])/g,
8+
"push": /^$/,
9+
"fixed": /^\d+$/,
10+
"named": /^[a-zA-Z0-9_]+$/
11+
};
12+
this.build = function (base, key, value) {
13+
if (value == "true" || value == "false") value = (value == "true");
14+
base[key] = value;
15+
return base;
16+
};
17+
18+
this.push_counter = function (key) {
19+
if (push_counters[key] === undefined) {
20+
push_counters[key] = 0;
21+
}
22+
return push_counters[key]++;
23+
};
24+
25+
$.each($(this).serializeArray(), function () {
26+
27+
// skip invalid keys
28+
if (!patterns.validate.test(this.name)) {
29+
return;
30+
}
31+
32+
var k,
33+
keys = this.name.match(patterns.key),
34+
merge = this.value,
35+
reverse_key = this.name;
36+
37+
while ((k = keys.pop()) !== undefined) {
38+
39+
// adjust reverse_key
40+
reverse_key = reverse_key.replace(new RegExp("\\[" + k + "\\]$"), '');
41+
42+
// push
43+
if (k.match(patterns.push)) {
44+
merge = self.build([], self.push_counter(reverse_key), merge);
45+
}
46+
47+
// fixed
48+
else if (k.match(patterns.fixed)) {
49+
merge = self.build([], k, merge);
50+
}
51+
52+
// named
53+
else if (k.match(patterns.named)) {
54+
merge = self.build({}, k, merge);
55+
}
56+
}
57+
58+
json = $.extend(true, json, merge);
59+
});
60+
61+
return json;
62+
};
63+
64+
function clean(obj){
65+
for (var propName in obj) {
66+
67+
if (typeof(obj[propName]) === "object"){
68+
clean(obj[propName]);
69+
if (Object.keys(obj[propName]).length == 0){
70+
obj[propName] = null;
71+
}
72+
}
73+
74+
if (obj[propName] === "" || obj[propName] === null || obj[propName] === undefined) {
75+
delete obj[propName];
76+
}
77+
}
78+
}
79+
80+
window.serversToAdd = {};
81+
window.editingServer = false;
82+
83+
$("#generateConfigBtn").click(function (e) {
84+
e.preventDefault();
85+
86+
$("#mainFormThatContainsDefaults").validate();
87+
88+
if ($("#mainFormThatContainsDefaults").valid()) {
89+
var configObject = $("#mainFormThatContainsDefaults").serializeObject();
90+
console.log(configObject);
91+
configObject["servers"] = window.serversToAdd;
92+
93+
$("#outputArea").val(JSON.stringify(configObject, null, 4));
94+
} else {
95+
createAlert({
96+
title: "<strong>Couldn't generate config!</strong>",
97+
message: "Please make sure the fields have valid values"
98+
});
99+
}
100+
101+
});
102+
$("#addServerButton").click(function (e) {
103+
e.preventDefault();
104+
$("#secondaryServerConfigForm").trigger("reset"); //Reset the form
105+
$("#serverConfigBitThatFades").fadeIn("slow"); // Fade it in
106+
});
107+
108+
$("#deleteServerButton").click(function (e) {
109+
e.preventDefault();
110+
if (Object.keys(window.serversToAdd).length == 0) {
111+
createAlert("Cannot delete server as you haven't added any yet.");
112+
return;
113+
}
114+
115+
var selectedIndex = $("#serverSelect").children("option:selected").val();
116+
var elem = $("#serverSelect option[value='" + selectedIndex + "']");
117+
console.log(elem);
118+
elem.remove();
119+
120+
delete window.serversToAdd[selectedIndex.replace("_", " ")];
121+
});
122+
123+
$("#editServerButton").click(function (e) {
124+
e.preventDefault();
125+
126+
if (Object.keys(window.serversToAdd).length == 0) {
127+
createAlert("Cannot edit server as you haven't added any yet.");
128+
return;
129+
}
130+
131+
var selectedIndex = $("#serverSelect").children("option:selected").val();
132+
var obj = window.serversToAdd[selectedIndex.replace("_", " ")];
133+
console.log(obj);
134+
for (const key in obj) {
135+
console.log(key + " = " + obj[key]);
136+
$("#" + key).val(obj[key]);
137+
}
138+
$("#name").val($("#serverSelect").children("option:selected").text());
139+
140+
window.editingServer = true;
141+
window.editingName = $("#serverSelect").children("option:selected").text();
142+
});
143+
144+
$("#serverConfigAdd").click(function (e) {
145+
e.preventDefault();
146+
147+
var f = $("#secondaryServerConfigForm");
148+
149+
f.validate();
150+
if (!(f.valid())){
151+
createAlert("Please make sure the server config is valid.");
152+
return;
153+
}
154+
155+
var name = $("#name").val(); // Just to index it in the array and allow selecting for edditing/deleting.
156+
157+
if (name in window.serversToAdd && !window.editingServer){
158+
createAlert("Name already used. Please choose a different one.");
159+
return;
160+
}
161+
162+
var server = f.serializeObject();
163+
clean(server);
164+
console.log(name);
165+
window.serversToAdd[name] = server;
166+
167+
if(window.editingServer && name != window.editingName){
168+
// We want to remove the old one
169+
delete window.serversToAdd[window.editingName];
170+
$("#serverSelect option[value='" + window.editingName.replace(/\s/g, "_") + "']").remove();
171+
}
172+
173+
$("#serverSelect").append(`<option id="serverName_${name.replace(/\s/g, '_')}" value="${name.replace(/\s/g, '_')}">${name}</option>`);
174+
if(window.editingServer){
175+
window.editingServer = false;
176+
}
177+
178+
$("#secondaryServerConfigForm").trigger("reset");
179+
});
180+
$("#serverConfigReset").click(function (e) {
181+
e.preventDefault();
182+
$("#secondaryServerConfigForm").trigger("reset");
183+
});

0 commit comments

Comments
 (0)