aboutsummaryrefslogtreecommitdiffstats
path: root/web/js/nms-ui-switch.js
diff options
context:
space:
mode:
authorKristian Lyngstol <kly@kly.no>2019-02-13 20:41:13 +0100
committerKristian Lyngstol <kly@kly.no>2019-02-13 20:47:24 +0100
commit813ed7a7bc6f906f261deedd23d487938323fe30 (patch)
tree24afa548294391e59ecaa22ac0837f3ab544399e /web/js/nms-ui-switch.js
parent146a858dce8133acc8284294e4262417b40611ff (diff)
Front + api: Fix parsing of JSON-fields for switches
Sort of. It's two issues at once, related: 1. API: The problem here was that the old way of updating tags simply didn't use actual JSON, but just sent "'foo','bar','baz'" as a text string. This seems dumb so I've made it send actual JSON now - just like the "placement" field. This meant updating the API. And it's not pretty, but it works. 2. Front: I've simplified nms-types a bit (hopefully to provide to simple methods: either get/set the raw value, or get/set strings. There was a bug where we sent text-encoded json instead of real json, and the reason was a confusion between when we're dealing with JSON and when we're dealing with strings. Now we are explicit. This makes the nmsEditRow-thing slightly uglier, but it needs to be fixed properly either way. In the future, we should provide renderers and editors based on types, e.g.: Placement-editor could start as a general-purpose JSON-editor, and the "switch reference" should be a drop-down.... etc. Fixes #202
Diffstat (limited to 'web/js/nms-ui-switch.js')
-rw-r--r--web/js/nms-ui-switch.js20
1 files changed, 10 insertions, 10 deletions
diff --git a/web/js/nms-ui-switch.js b/web/js/nms-ui-switch.js
index b7cbc7c..0919534 100644
--- a/web/js/nms-ui-switch.js
+++ b/web/js/nms-ui-switch.js
@@ -126,15 +126,15 @@ class nmsModThing extends nmsBox {
var ret = {};
var changed = 0;
for (var idx in this.rows) {
- if (this.rows[idx].value != this.rows[idx].original) {
- ret[idx] = this.rows[idx].value;
+ if (this.rows[idx].value.toString() != this.rows[idx].original) {
+ ret[idx] = this.rows[idx].value.value;
changed++;
}
}
if (!changed) {
return undefined;
}
- ret[this.identifier] = this.rows[this.identifier].value;
+ ret[this.identifier] = this.rows[this.identifier].value.value;
return ret;
}
}
@@ -146,7 +146,7 @@ class nmsEditRow extends nmsBox {
console.assert(value instanceof nmsType)
this.name = text;
this._value = value;
- this.original = value.value;
+ this.original = value.toString();
var td1 = new nmsBox("td")
var name = new nmsString(text+" ");
name.html.title = value.description;
@@ -161,7 +161,7 @@ class nmsEditRow extends nmsBox {
this.changed(false)
var content = new nmsBox("td")
var input = new nmsBox("input")
- input.html.value = value.value;
+ input.html.value = value.toString();
input.html.className = "form-control";
input.html.type = "text";
input.row = this;
@@ -188,7 +188,7 @@ class nmsEditRow extends nmsBox {
this.add(content)
}
get value() {
- return this._value.value;
+ return this._value;
}
changed(val) {
if (val) {
@@ -224,12 +224,12 @@ class nmsEditRow extends nmsBox {
} else {
this.valid(true)
this._content.html.classList.remove("has-error");
- this._value.value = value;
+ this._value.fromString(value);
}
- if (this._input.html.value != this._value.value) {
- this._input.html.value = this._value.value
+ if (this._input.html.value != this._value.toString()) {
+ this._input.html.value = this._value.toString()
}
- if (this._value.value != this.original) {
+ if (this._value.toString() != this.original) {
this.changed(true)
this._content.html.classList.add("has-success");
} else {