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: {
|
||||
name: { value: "" },
|
||||
connection: { value: "", type: "xilica-connection" },
|
||||
rules: { value: [] }
|
||||
rules: { value: "[]" }
|
||||
},
|
||||
inputs: 1,
|
||||
outputs: 1,
|
||||
@@ -18,15 +18,10 @@ RED.nodes.registerType('xilica-listen', {
|
||||
},
|
||||
oneditprepare: function () {
|
||||
var node = this;
|
||||
var rules = node.rules || [];
|
||||
if (typeof rules === "string") {
|
||||
try {
|
||||
rules = JSON.parse(rules);
|
||||
} catch (e) {
|
||||
rules = [];
|
||||
}
|
||||
}
|
||||
if (!Array.isArray(rules)) {
|
||||
var rules;
|
||||
try {
|
||||
rules = node.rules ? JSON.parse(node.rules) : [];
|
||||
} catch (e) {
|
||||
rules = [];
|
||||
}
|
||||
|
||||
@@ -118,7 +113,7 @@ RED.nodes.registerType('xilica-listen', {
|
||||
rules.push(rule);
|
||||
});
|
||||
|
||||
this.rules = rules;
|
||||
this.rules = JSON.stringify(rules);
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
@@ -54,7 +54,15 @@ module.exports = function (RED) {
|
||||
RED.nodes.createNode(this, config);
|
||||
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) => {
|
||||
send =
|
||||
@@ -76,7 +84,17 @@ module.exports = function (RED) {
|
||||
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 matchAll = names.length === 0;
|
||||
const allowed = new Set(names);
|
||||
@@ -139,4 +157,3 @@ module.exports = function (RED) {
|
||||
|
||||
RED.nodes.registerType("xilica-listen", XilicaListen);
|
||||
};
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ RED.nodes.registerType('xilica-subscribe', {
|
||||
name: { value: "" },
|
||||
action: { value: "subscribe" },
|
||||
connection: { value: "", type: "xilica-connection" },
|
||||
rules: { value: [] },
|
||||
rules: { value: "[]" },
|
||||
transport: { value: "TCP" }
|
||||
},
|
||||
inputs: 1,
|
||||
@@ -21,15 +21,10 @@ RED.nodes.registerType('xilica-subscribe', {
|
||||
},
|
||||
oneditprepare: function () {
|
||||
var node = this;
|
||||
var rules = node.rules || [];
|
||||
if (typeof rules === "string") {
|
||||
try {
|
||||
rules = JSON.parse(rules);
|
||||
} catch (e) {
|
||||
rules = [];
|
||||
}
|
||||
}
|
||||
if (!Array.isArray(rules)) {
|
||||
var rules;
|
||||
try {
|
||||
rules = node.rules ? JSON.parse(node.rules) : [];
|
||||
} catch (e) {
|
||||
rules = [];
|
||||
}
|
||||
|
||||
@@ -121,7 +116,7 @@ RED.nodes.registerType('xilica-subscribe', {
|
||||
rules.push(rule);
|
||||
});
|
||||
|
||||
this.rules = rules;
|
||||
this.rules = JSON.stringify(rules);
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
@@ -65,7 +65,15 @@ module.exports = function (RED) {
|
||||
const node = this;
|
||||
|
||||
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.connectionConfig = RED.nodes.getNode(config.connection);
|
||||
|
||||
@@ -78,7 +86,17 @@ module.exports = function (RED) {
|
||||
done = done || function () {};
|
||||
|
||||
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 =
|
||||
typeof msg.transport === "string" && msg.transport.trim().length
|
||||
|
||||
Reference in New Issue
Block a user