1
0
mirror of https://github.com/node-red/node-red.git synced 2023-10-10 13:36:53 +02:00

trigger node, add configurable reset

and make it do strings when it says so, and numbers if you want.
This commit is contained in:
Dave Conway-Jones 2016-02-04 21:05:15 +00:00
parent bb06585748
commit fb09f4b22d
3 changed files with 26 additions and 16 deletions

View File

@ -19,6 +19,7 @@
<span data-i18n="trigger.send"></span> <span data-i18n="trigger.send"></span>
<select id="node-input-op1type" style="width:200px !important"> <select id="node-input-op1type" style="width:200px !important">
<option value="val" data-i18n="trigger.output.string"></option> <option value="val" data-i18n="trigger.output.string"></option>
<option value="num" data-i18n="trigger.output.number"></option>
<option value="pay" data-i18n="trigger.output.existing"></option> <option value="pay" data-i18n="trigger.output.existing"></option>
<option value="nul" data-i18n="trigger.output.nothing"></option> <option value="nul" data-i18n="trigger.output.nothing"></option>
</select> </select>
@ -44,13 +45,17 @@
<span data-i18n="trigger.then-send"></span> <span data-i18n="trigger.then-send"></span>
<select id="node-input-op2type" style="width:200px !important"> <select id="node-input-op2type" style="width:200px !important">
<option value="val" data-i18n="trigger.output.string"></option> <option value="val" data-i18n="trigger.output.string"></option>
<option value="num" data-i18n="trigger.output.number"></option>
<option value="pay" data-i18n="trigger.output.existing"></option> <option value="pay" data-i18n="trigger.output.existing"></option>
<option value="nul" data-i18n="trigger.output.nothing"></option> <option value="nul" data-i18n="trigger.output.nothing"></option>
</select> </select>
<input style="width: 145px !important" type="text" id="node-input-op2"> <input style="width: 145px !important" type="text" id="node-input-op2">
</div> </div>
<div class="form-row node-type-wait"> <div class="form-row node-type-wait">
<input type="checkbox" id="node-input-extend" style="margin-left: 5px; vertical-align: top; width: auto !important;"> <label style="width:auto !important;" for="node-input-extend" data-i18n="trigger.extend"></label> <input type="checkbox" id="node-input-extend" style="margin-left: 0px; vertical-align: top; width: auto !important;"> <label style="width:auto !important;" for="node-input-extend" data-i18n="trigger.extend"></label>
</div>
<div class="form-row">
<span data-i18n="trigger.label.reset"></span><input type="text" id="node-input-reset" style="width:240px" data-i18n="[placeholder]trigger.label.resetprompt">
</div> </div>
<br/> <br/>
<div class="form-row"> <div class="form-row">
@ -89,6 +94,7 @@
duration: {value:"250",required:true,validate:RED.validators.number()}, duration: {value:"250",required:true,validate:RED.validators.number()},
extend: {value:"false"}, extend: {value:"false"},
units: {value:"ms"}, units: {value:"ms"},
reset: {value:""},
name: {value:""} name: {value:""}
}, },
inputs:1, inputs:1,
@ -116,14 +122,14 @@
} }
}); });
$("#node-input-op1type").change(function() { $("#node-input-op1type").change(function() {
if ($(this).val() == "val") { if (($(this).val() == "val")||($(this).val() == "num")) {
$("#node-input-op1").show(); $("#node-input-op1").show();
} else { } else {
$("#node-input-op1").hide(); $("#node-input-op1").hide();
} }
}); });
$("#node-input-op2type").change(function() { $("#node-input-op2type").change(function() {
if ($(this).val() == "val") { if (($(this).val() == "val")||($(this).val() == "num")) {
$("#node-input-op2").show(); $("#node-input-op2").show();
} else { } else {
$("#node-input-op2").hide(); $("#node-input-op2").hide();

View File

@ -25,6 +25,7 @@ module.exports = function(RED) {
this.op2type = n.op2type || "val"; this.op2type = n.op2type || "val";
this.extend = n.extend || "false"; this.extend = n.extend || "false";
this.units = n.units || "ms"; this.units = n.units || "ms";
this.reset = n.reset || '';
this.duration = n.duration || 250; this.duration = n.duration || 250;
if (this.duration <= 0) { this.duration = 0; } if (this.duration <= 0) { this.duration = 0; }
else { else {
@ -34,24 +35,24 @@ module.exports = function(RED) {
} }
this.op1Templated = this.op1.indexOf("{{") != -1; this.op1Templated = this.op1.indexOf("{{") != -1;
this.op2Templated = this.op2.indexOf("{{") != -1; this.op2Templated = this.op2.indexOf("{{") != -1;
if (!isNaN(this.op1)) { this.op1 = Number(this.op1); } if ((this.op1type === "num") && (!isNaN(this.op1))) { this.op1 = Number(this.op1); }
if (!isNaN(this.op2)) { this.op2 = Number(this.op2); } if ((this.op2type === "num") && (!isNaN(this.op2))) { this.op2 = Number(this.op2); }
if (this.op1 == "true") { this.op1 = true; } if (this.op1 == "true") { this.op1 = true; }
if (this.op2 == "true") { this.op2 = true; } if (this.op2 == "true") { this.op2 = true; }
if (this.op1 == "false") { this.op1 = false; } if (this.op1 == "false") { this.op1 = false; }
if (this.op2 == "false") { this.op2 = false; } if (this.op2 == "false") { this.op2 = false; }
if (this.op1 == "null") { this.op1 = null; } if (this.op1 == "null") { this.op1 = null; }
if (this.op2 == "null") { this.op2 = null; } if (this.op2 == "null") { this.op2 = null; }
try { this.op1 = JSON.parse(this.op1); } //try { this.op1 = JSON.parse(this.op1); }
catch(e) { this.op1 = this.op1; } //catch(e) { this.op1 = this.op1; }
try { this.op2 = JSON.parse(this.op2); } //try { this.op2 = JSON.parse(this.op2); }
catch(e) { this.op2 = this.op2; } //catch(e) { this.op2 = this.op2; }
var node = this; var node = this;
var tout = null; var tout = null;
var m2; var m2;
this.on("input", function(msg) { this.on("input", function(msg) {
if (msg.hasOwnProperty("reset")) { if (msg.hasOwnProperty("reset") || ((node.reset !== '')&&(msg.payload == node.reset)) ) {
clearTimeout(tout); clearTimeout(tout);
tout = null; tout = null;
node.status({}); node.status({});

View File

@ -177,8 +177,9 @@
"then": "then", "then": "then",
"then-send": "then send", "then-send": "then send",
"output": { "output": {
"string": "the string payload", "string": "the string",
"existing": "the existing message", "number": "the number",
"existing": "the existing msg.payload",
"nothing": "nothing" "nothing": "nothing"
}, },
"wait-reset": "wait to be reset", "wait-reset": "wait to be reset",
@ -190,10 +191,12 @@
"h": "Hours" "h": "Hours"
}, },
"extend": " extend delay if new message arrives", "extend": " extend delay if new message arrives",
"tip": "The node can be reset by sending a message with the <b>msg.reset</b> property set", "tip": "The node can also be reset by sending a message with the <b>msg.reset</b> property set to any value.",
"label": { "label": {
"trigger": "trigger", "trigger": "trigger",
"trigger-block": "trigger & block" "trigger-block": "trigger & block",
"reset": "and reset if msg.payload == ",
"resetprompt": "(optional reset value)"
} }
}, },
"comment": { "comment": {