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");