Skip to content

Commit

Permalink
trigger node, add configurable reset
Browse files Browse the repository at this point in the history
and make it do strings when it says so, and numbers if you want.
  • Loading branch information
Dave Conway-Jones authored and Dave Conway-Jones committed Feb 4, 2016
1 parent bb06585 commit fb09f4b
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 16 deletions.
14 changes: 10 additions & 4 deletions nodes/core/core/89-trigger.html
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
<span data-i18n="trigger.send"></span>
<select id="node-input-op1type" style="width:200px !important">
<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="nul" data-i18n="trigger.output.nothing"></option>
</select>
Expand All @@ -44,13 +45,17 @@
<span data-i18n="trigger.then-send"></span>
<select id="node-input-op2type" style="width:200px !important">
<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="nul" data-i18n="trigger.output.nothing"></option>
</select>
<input style="width: 145px !important" type="text" id="node-input-op2">
</div>
<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>
<br/>
<div class="form-row">
Expand Down Expand Up @@ -88,7 +93,8 @@
op2type: {value:"val"},
duration: {value:"250",required:true,validate:RED.validators.number()},
extend: {value:"false"},
units: {value: "ms"},
units: {value:"ms"},
reset: {value:""},
name: {value:""}
},
inputs:1,
Expand Down Expand Up @@ -116,14 +122,14 @@
}
});
$("#node-input-op1type").change(function() {
if ($(this).val() == "val") {
if (($(this).val() == "val")||($(this).val() == "num")) {
$("#node-input-op1").show();
} else {
$("#node-input-op1").hide();
}
});
$("#node-input-op2type").change(function() {
if ($(this).val() == "val") {
if (($(this).val() == "val")||($(this).val() == "num")) {
$("#node-input-op2").show();
} else {
$("#node-input-op2").hide();
Expand Down
15 changes: 8 additions & 7 deletions nodes/core/core/89-trigger.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ module.exports = function(RED) {
this.op2type = n.op2type || "val";
this.extend = n.extend || "false";
this.units = n.units || "ms";
this.reset = n.reset || '';
this.duration = n.duration || 250;
if (this.duration <= 0) { this.duration = 0; }
else {
Expand All @@ -34,24 +35,24 @@ module.exports = function(RED) {
}
this.op1Templated = this.op1.indexOf("{{") != -1;
this.op2Templated = this.op2.indexOf("{{") != -1;
if (!isNaN(this.op1)) { this.op1 = Number(this.op1); }
if (!isNaN(this.op2)) { this.op2 = Number(this.op2); }
if ((this.op1type === "num") && (!isNaN(this.op1))) { this.op1 = Number(this.op1); }
if ((this.op2type === "num") && (!isNaN(this.op2))) { this.op2 = Number(this.op2); }
if (this.op1 == "true") { this.op1 = true; }
if (this.op2 == "true") { this.op2 = true; }
if (this.op1 == "false") { this.op1 = false; }
if (this.op2 == "false") { this.op2 = false; }
if (this.op1 == "null") { this.op1 = null; }
if (this.op2 == "null") { this.op2 = null; }
try { this.op1 = JSON.parse(this.op1); }
catch(e) { this.op1 = this.op1; }
try { this.op2 = JSON.parse(this.op2); }
catch(e) { this.op2 = this.op2; }
//try { this.op1 = JSON.parse(this.op1); }
//catch(e) { this.op1 = this.op1; }
//try { this.op2 = JSON.parse(this.op2); }
//catch(e) { this.op2 = this.op2; }

var node = this;
var tout = null;
var m2;
this.on("input", function(msg) {
if (msg.hasOwnProperty("reset")) {
if (msg.hasOwnProperty("reset") || ((node.reset !== '')&&(msg.payload == node.reset)) ) {
clearTimeout(tout);
tout = null;
node.status({});
Expand Down
13 changes: 8 additions & 5 deletions nodes/core/locales/en-US/messages.json
Original file line number Diff line number Diff line change
Expand Up @@ -177,8 +177,9 @@
"then": "then",
"then-send": "then send",
"output": {
"string": "the string payload",
"existing": "the existing message",
"string": "the string",
"number": "the number",
"existing": "the existing msg.payload",
"nothing": "nothing"
},
"wait-reset": "wait to be reset",
Expand All @@ -189,11 +190,13 @@
"m": "Minutes",
"h": "Hours"
},
"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",
"extend": " extend delay if new message arrives",
"tip": "The node can also be reset by sending a message with the <b>msg.reset</b> property set to any value.",
"label": {
"trigger": "trigger",
"trigger-block": "trigger & block"
"trigger-block": "trigger & block",
"reset": "and reset if msg.payload == ",
"resetprompt": "(optional reset value)"
}
},
"comment": {
Expand Down

0 comments on commit fb09f4b

Please sign in to comment.