diff --git a/nodes/core/core/89-trigger.html b/nodes/core/core/89-trigger.html index 5ae59dee7..267054ed6 100644 --- a/nodes/core/core/89-trigger.html +++ b/nodes/core/core/89-trigger.html @@ -41,19 +41,20 @@ +
+ +
-
- -
diff --git a/nodes/core/core/89-trigger.js b/nodes/core/core/89-trigger.js index 86174a53d..a51eb8290 100644 --- a/nodes/core/core/89-trigger.js +++ b/nodes/core/core/89-trigger.js @@ -60,6 +60,7 @@ module.exports = function(RED) { else { if ((!tout) && (tout !== 0)) { if (node.op2type === "pay") { m2 = msg.payload; } + else if (node.op2type === "payl") { m2 = msg.payload; } else if (node.op2Templated) { m2 = mustache.render(node.op2,msg); } else { m2 = node.op2; } if (node.op1type === "pay") { } @@ -79,6 +80,7 @@ module.exports = function(RED) { } else if ((node.extend === "true" || node.extend === true) && (node.duration > 0)) { clearTimeout(tout); + if (node.op2type === "payl") { m2 = msg.payload; } tout = setTimeout(function() { msg.payload = m2; if (node.op2type !== "nul") { node.send(msg); } diff --git a/nodes/core/locales/en-US/messages.json b/nodes/core/locales/en-US/messages.json index 7d31ec2ab..1847c382a 100644 --- a/nodes/core/locales/en-US/messages.json +++ b/nodes/core/locales/en-US/messages.json @@ -197,6 +197,8 @@ "string": "the string", "number": "the number", "existing": "the existing msg.payload", + "original": "the original msg.payload", + "latest": "the latest msg.payload", "nothing": "nothing" }, "wait-reset": "wait to be reset", diff --git a/test/nodes/core/core/89-trigger_spec.js b/test/nodes/core/core/89-trigger_spec.js index eb8419e3a..3e1db2c9b 100644 --- a/test/nodes/core/core/89-trigger_spec.js +++ b/test/nodes/core/core/89-trigger_spec.js @@ -235,6 +235,35 @@ describe('trigger Node', function() { }); }); + it('should be able to extend the delay and output the 2nd payload', function(done) { + var flow = [{"id":"n1", "type":"trigger", "name":"triggerNode", extend:"true", op1type:"nul", op2type:"payl", op1:"false", op2:"true", duration:200, wires:[["n2"]] }, + {id:"n2", type:"helper"} ]; + helper.load(triggerNode, flow, function() { + var n1 = helper.getNode("n1"); + var n2 = helper.getNode("n2"); + var c = 0; + n2.on("input", function(msg) { + if (c === 0) { + msg.should.have.a.property("payload", "Goodbye"); + c += 1; + } + else { + msg.should.have.a.property("payload", "World"); + (Date.now() - ss).should.be.greaterThan(380); + done(); + } + }); + var ss = Date.now(); + n1.emit("input", {payload:"Hello"}); + setTimeout( function() { + n1.emit("input", {payload:"Goodbye"}); + },100); + setTimeout( function() { + n1.emit("input", {payload:"World"}); + },400); + }); + }); + it('should be able to apply mustache templates to payloads', function(done) { var flow = [{"id":"n1", "type":"trigger", "name":"triggerNode", op1type:"val", op2type:"val", op1:"{{payload}}", op2:"{{topic}}", duration:50, wires:[["n2"]] }, {id:"n2", type:"helper"} ]; @@ -257,7 +286,7 @@ describe('trigger Node', function() { }); it('should handle string null as null', function(done) { - var flow = [{"id":"n1", "type":"trigger", "name":"triggerNode", op2type:"pay", op1:"null", op2:"null", duration:30, wires:[["n2"]] }, + var flow = [{"id":"n1", "type":"trigger", "name":"triggerNode", op1type:"val", op2type:"pay", op1:"null", op2:"null", duration:40, wires:[["n2"]] }, {id:"n2", type:"helper"} ]; helper.load(triggerNode, flow, function() { var n1 = helper.getNode("n1");