changed rules property to be stored as a JSON string
This commit is contained in:
@@ -5,7 +5,7 @@ RED.nodes.registerType('xilica-listen', {
|
|||||||
defaults: {
|
defaults: {
|
||||||
name: { value: "" },
|
name: { value: "" },
|
||||||
connection: { value: "", type: "xilica-connection" },
|
connection: { value: "", type: "xilica-connection" },
|
||||||
rules: { value: [] }
|
rules: { value: "[]" }
|
||||||
},
|
},
|
||||||
inputs: 1,
|
inputs: 1,
|
||||||
outputs: 1,
|
outputs: 1,
|
||||||
@@ -18,17 +18,12 @@ RED.nodes.registerType('xilica-listen', {
|
|||||||
},
|
},
|
||||||
oneditprepare: function () {
|
oneditprepare: function () {
|
||||||
var node = this;
|
var node = this;
|
||||||
var rules = node.rules || [];
|
var rules;
|
||||||
if (typeof rules === "string") {
|
|
||||||
try {
|
try {
|
||||||
rules = JSON.parse(rules);
|
rules = node.rules ? JSON.parse(node.rules) : [];
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
rules = [];
|
rules = [];
|
||||||
}
|
}
|
||||||
}
|
|
||||||
if (!Array.isArray(rules)) {
|
|
||||||
rules = [];
|
|
||||||
}
|
|
||||||
|
|
||||||
$("#node-input-rules").editableList({
|
$("#node-input-rules").editableList({
|
||||||
addItem: function (container, index, rule) {
|
addItem: function (container, index, rule) {
|
||||||
@@ -118,7 +113,7 @@ RED.nodes.registerType('xilica-listen', {
|
|||||||
rules.push(rule);
|
rules.push(rule);
|
||||||
});
|
});
|
||||||
|
|
||||||
this.rules = rules;
|
this.rules = JSON.stringify(rules);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -54,7 +54,15 @@ module.exports = function (RED) {
|
|||||||
RED.nodes.createNode(this, config);
|
RED.nodes.createNode(this, config);
|
||||||
const node = this;
|
const node = this;
|
||||||
|
|
||||||
node.rules = Array.isArray(config.rules) ? config.rules : [];
|
let storedRules = config.rules;
|
||||||
|
if (typeof storedRules === "string") {
|
||||||
|
try {
|
||||||
|
storedRules = JSON.parse(storedRules);
|
||||||
|
} catch (e) {
|
||||||
|
storedRules = [];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
node.rules = Array.isArray(storedRules) ? storedRules : [];
|
||||||
|
|
||||||
node.on("input", (msg, send, done) => {
|
node.on("input", (msg, send, done) => {
|
||||||
send =
|
send =
|
||||||
@@ -76,7 +84,17 @@ module.exports = function (RED) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const rules = Array.isArray(msg.rules) ? msg.rules : node.rules;
|
let rules = msg.rules || node.rules;
|
||||||
|
if (typeof rules === "string") {
|
||||||
|
try {
|
||||||
|
rules = JSON.parse(rules);
|
||||||
|
} catch (e) {
|
||||||
|
rules = [];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!Array.isArray(rules)) {
|
||||||
|
rules = [];
|
||||||
|
}
|
||||||
const names = buildControlNamesFromRules(rules);
|
const names = buildControlNamesFromRules(rules);
|
||||||
const matchAll = names.length === 0;
|
const matchAll = names.length === 0;
|
||||||
const allowed = new Set(names);
|
const allowed = new Set(names);
|
||||||
@@ -139,4 +157,3 @@ module.exports = function (RED) {
|
|||||||
|
|
||||||
RED.nodes.registerType("xilica-listen", XilicaListen);
|
RED.nodes.registerType("xilica-listen", XilicaListen);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ RED.nodes.registerType('xilica-subscribe', {
|
|||||||
name: { value: "" },
|
name: { value: "" },
|
||||||
action: { value: "subscribe" },
|
action: { value: "subscribe" },
|
||||||
connection: { value: "", type: "xilica-connection" },
|
connection: { value: "", type: "xilica-connection" },
|
||||||
rules: { value: [] },
|
rules: { value: "[]" },
|
||||||
transport: { value: "TCP" }
|
transport: { value: "TCP" }
|
||||||
},
|
},
|
||||||
inputs: 1,
|
inputs: 1,
|
||||||
@@ -21,17 +21,12 @@ RED.nodes.registerType('xilica-subscribe', {
|
|||||||
},
|
},
|
||||||
oneditprepare: function () {
|
oneditprepare: function () {
|
||||||
var node = this;
|
var node = this;
|
||||||
var rules = node.rules || [];
|
var rules;
|
||||||
if (typeof rules === "string") {
|
|
||||||
try {
|
try {
|
||||||
rules = JSON.parse(rules);
|
rules = node.rules ? JSON.parse(node.rules) : [];
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
rules = [];
|
rules = [];
|
||||||
}
|
}
|
||||||
}
|
|
||||||
if (!Array.isArray(rules)) {
|
|
||||||
rules = [];
|
|
||||||
}
|
|
||||||
|
|
||||||
$("#node-input-rules").editableList({
|
$("#node-input-rules").editableList({
|
||||||
addItem: function (container, index, rule) {
|
addItem: function (container, index, rule) {
|
||||||
@@ -121,7 +116,7 @@ RED.nodes.registerType('xilica-subscribe', {
|
|||||||
rules.push(rule);
|
rules.push(rule);
|
||||||
});
|
});
|
||||||
|
|
||||||
this.rules = rules;
|
this.rules = JSON.stringify(rules);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -65,7 +65,15 @@ module.exports = function (RED) {
|
|||||||
const node = this;
|
const node = this;
|
||||||
|
|
||||||
node.action = config.action || "subscribe";
|
node.action = config.action || "subscribe";
|
||||||
node.rules = Array.isArray(config.rules) ? config.rules : [];
|
let storedRules = config.rules;
|
||||||
|
if (typeof storedRules === "string") {
|
||||||
|
try {
|
||||||
|
storedRules = JSON.parse(storedRules);
|
||||||
|
} catch (e) {
|
||||||
|
storedRules = [];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
node.rules = Array.isArray(storedRules) ? storedRules : [];
|
||||||
node.transport = config.transport || "TCP";
|
node.transport = config.transport || "TCP";
|
||||||
node.connectionConfig = RED.nodes.getNode(config.connection);
|
node.connectionConfig = RED.nodes.getNode(config.connection);
|
||||||
|
|
||||||
@@ -78,7 +86,17 @@ module.exports = function (RED) {
|
|||||||
done = done || function () {};
|
done = done || function () {};
|
||||||
|
|
||||||
const action = normaliseAction(msg.action || node.action);
|
const action = normaliseAction(msg.action || node.action);
|
||||||
const rules = Array.isArray(msg.rules) ? msg.rules : node.rules;
|
let rules = msg.rules || node.rules;
|
||||||
|
if (typeof rules === "string") {
|
||||||
|
try {
|
||||||
|
rules = JSON.parse(rules);
|
||||||
|
} catch (e) {
|
||||||
|
rules = [];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!Array.isArray(rules)) {
|
||||||
|
rules = [];
|
||||||
|
}
|
||||||
|
|
||||||
const transport =
|
const transport =
|
||||||
typeof msg.transport === "string" && msg.transport.trim().length
|
typeof msg.transport === "string" && msg.transport.trim().length
|
||||||
|
|||||||
Reference in New Issue
Block a user