Skip to content

Commit 0d3547e

Browse files
committed
Handle form fields with arrays and visibility field
1 parent 8418de4 commit 0d3547e

File tree

1 file changed

+69
-43
lines changed

1 file changed

+69
-43
lines changed

ui/App/components/ConfigContent.jsx

Lines changed: 69 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,21 @@ class ConfigContent extends React.Component {
3131
var change = this.state.serverSettings;
3232

3333
if (e.target.value === "true" || e.target.value === "false") {
34+
// Ensure Boolean type is used if required
35+
if (e.target.id === "lan" || e.target.id === "public") {
36+
if (e.target.value == "true") {
37+
fieldValue = true
38+
} else {
39+
fieldValue = false
40+
}
41+
change["visibility"][e.target.id] = fieldValue
42+
this.setState({serverSettings: change});
43+
return;
44+
}
3445
fieldValue = Boolean(e.target.value)
46+
} else if (e.target.id === "admins" || e.target.id === "tags") {
47+
// Split settings values that are stored as arrays
48+
fieldValue = e.target.value.split(",")
3549
} else {
3650
fieldValue = e.target.value
3751
}
@@ -105,66 +119,78 @@ class ConfigContent extends React.Component {
105119
switch(typeof setting) {
106120
case "number":
107121
return (
108-
<input
109-
key={key}
110-
ref={key}
111-
id={key}
112-
className="form-control"
113-
defaultValue={setting}
114-
type="number"
115-
onChange={this.handleServerSettingsChange.bind(this, key)}
116-
/>
122+
<input
123+
key={key}
124+
ref={key}
125+
id={key}
126+
className="form-control"
127+
defaultValue={setting}
128+
type="number"
129+
onChange={this.handleServerSettingsChange.bind(this, key)}
130+
/>
117131
)
118132
case "string":
119133
if (key.includes("password")) {
120134
return (
121-
<input
122-
key={key}
123-
ref={key}
124-
id={key}
125-
className="form-control"
126-
defaultValue={setting}
127-
type="password"
128-
onChange={this.handleServerSettingsChange.bind(this, key)}
129-
/>
135+
<input
136+
key={key}
137+
ref={key}
138+
id={key}
139+
className="form-control"
140+
defaultValue={setting}
141+
type="password"
142+
onChange={this.handleServerSettingsChange.bind(this, key)}
143+
/>
130144
)
131145
} else {
132146
return (
133-
<input
134-
key={key}
135-
ref={key}
136-
id={key}
137-
className="form-control"
138-
defaultValue={setting}
139-
type="text"
140-
onChange={this.handleServerSettingsChange.bind(this, key)}
141-
/>
147+
<input
148+
key={key}
149+
ref={key}
150+
id={key}
151+
className="form-control"
152+
defaultValue={setting}
153+
type="text"
154+
onChange={this.handleServerSettingsChange.bind(this, key)}
155+
/>
142156
)
143157
}
144158
case "boolean":
145-
console.log(key)
146159
return (
147-
<select key={key} ref={key} id={key} className="form-control" onChange={this.handleServerSettingsChange.bind(this, key)}>
148-
<option value={true}>True</option>
149-
<option value={false}>False</option>
150-
</select>
160+
<select key={key} ref={key} id={key} className="form-control" onChange={this.handleServerSettingsChange.bind(this, key)}>
161+
<option value={true}>True</option>
162+
<option value={false}>False</option>
163+
</select>
151164
)
152165
case "object":
153166
if (Array.isArray(setting)) {
154167
return (
155-
<input
156-
key={key}
157-
ref={key}
158-
id={key}
159-
className="form-control"
160-
defaultValue={setting}
161-
type="text"
162-
onChange={this.handleServerSettingsChange.bind(this, key)}
163-
/>
168+
<input
169+
key={key}
170+
ref={key}
171+
id={key}
172+
className="form-control"
173+
defaultValue={setting}
174+
type="text"
175+
onChange={this.handleServerSettingsChange.bind(this, key)}
176+
/>
164177
)
165178
} else {
166-
if (Object.keys(setting).length > 0) {
167-
//this.formTypeField(key, setting);
179+
if (key.includes("visibility")) {
180+
let vis_fields = []
181+
for (const key in setting) {
182+
const field =
183+
<div>
184+
<p>{key}</p>
185+
<select label={key} key={key} ref={key} id={key} className="form-control" onChange={this.handleServerSettingsChange.bind(this, key)}>
186+
<option selected={setting[key] ? "selected" : ""} value={true}>True</option>
187+
<option selected={!setting[key] ? "selected" : ""} value={false}>False</option>
188+
</select>
189+
</div>
190+
vis_fields.push(field)
191+
}
192+
193+
return vis_fields
168194
}
169195
}
170196
default:

0 commit comments

Comments
 (0)