diff --git a/nodes/core/core/89-delay.html b/nodes/core/core/89-delay.html
index d6ed0dfa2..b5b8a0c09 100644
--- a/nodes/core/core/89-delay.html
+++ b/nodes/core/core/89-delay.html
@@ -102,7 +102,7 @@
delay number
Sets the delay, in milliseconds, to be applied to the message. This
option only applies if the node is configured to allow the message to
- provide the delay interval.
+ override the configured default delay interval.
reset
If the received message has this property set to any value, all
outstanding messages held by the node are cleared without being sent.
@@ -260,7 +260,7 @@
$("#delay-details-for").show();
$("#random-details").hide();
} else if (this.value === "delayv") {
- $("#delay-details-for").hide();
+ $("#delay-details-for").show();
$("#random-details").hide();
} else if (this.value === "random") {
$("#delay-details-for").hide();
diff --git a/nodes/core/core/89-delay.js b/nodes/core/core/89-delay.js
index 4f4e9702a..a93431a33 100644
--- a/nodes/core/core/89-delay.js
+++ b/nodes/core/core/89-delay.js
@@ -105,7 +105,10 @@ module.exports = function(RED) {
}
else if (node.pauseType === "delayv") {
node.on("input", function(msg) {
- var delayvar = Number(msg.delay || 0);
+ var delayvar = Number(node.timeout);
+ if (msg.hasOwnProperty("delay") && !isNaN(parseFloat(msg.delay))) {
+ delayvar = parseFloat(msg.delay);
+ }
if (delayvar < 0) { delayvar = 0; }
var id = setTimeout(function() {
node.idList.splice(node.idList.indexOf(id),1);
@@ -113,7 +116,7 @@ module.exports = function(RED) {
node.send(msg);
}, delayvar);
node.idList.push(id);
- if ((delayvar >= 1) && (node.idList.length !== 0)) {
+ if ((delayvar >= 0) && (node.idList.length !== 0)) {
node.status({fill:"blue",shape:"dot",text:delayvar/1000+"s"});
}
if (msg.hasOwnProperty("reset")) { clearDelayList(); }
diff --git a/nodes/core/locales/en-US/messages.json b/nodes/core/locales/en-US/messages.json
index 113ddfdca..4d87e684e 100644
--- a/nodes/core/locales/en-US/messages.json
+++ b/nodes/core/locales/en-US/messages.json
@@ -204,7 +204,7 @@
"for": "For",
"delaymsg": "Delay each message",
"delayfixed": "Fixed delay",
- "delayvarmsg": "Set delay with msg.delay",
+ "delayvarmsg": "Override delay with msg.delay",
"randomdelay": "Random delay",
"limitrate": "Rate Limit",
"limitall": "All messages",
diff --git a/test/nodes/core/core/89-delay_spec.js b/test/nodes/core/core/89-delay_spec.js
index 8c7c7b0e6..35ad19ede 100644
--- a/test/nodes/core/core/89-delay_spec.js
+++ b/test/nodes/core/core/89-delay_spec.js
@@ -347,7 +347,7 @@ describe('delay Node', function() {
* @param delay - the variable delay: milliseconds
*/
function variableDelayTest(aTimeoutFrom, aTimeoutTo, aTimeoutUnit, delay, done) {
- var flow = [{"id":"delayNode1","type":"delay","name":"delayNode","pauseType":"delayv","timeout":5,"timeoutUnits":"seconds","rate":"1","rateUnits":"second","randomFirst":aTimeoutFrom,"randomLast":aTimeoutTo,"randomUnits":aTimeoutUnit,"drop":false,"wires":[["helperNode1"]]},
+ var flow = [{"id":"delayNode1","type":"delay","name":"delayNode","pauseType":"delayv","timeout":0.5,"timeoutUnits":"seconds","rate":"1","rateUnits":"second","randomFirst":aTimeoutFrom,"randomLast":aTimeoutTo,"randomUnits":aTimeoutUnit,"drop":false,"wires":[["helperNode1"]]},
{id:"helperNode1", type:"helper", wires:[]}];
helper.load(delayNode, flow, function() {
var delayNode1 = helper.getNode("delayNode1");
@@ -400,12 +400,16 @@ describe('delay Node', function() {
variableDelayTest("200", "300", "milliseconds", 250, done);
});
- it('variable delay is zero if msg.delay not specified', function(done) {
- variableDelayTest("0", "50", "milliseconds", null, done);
+ it('variable delay is the default if msg.delay not specified', function(done) {
+ variableDelayTest("450", "550", "milliseconds", null, done);
+ });
+
+ it('variable delay is zero if msg.delay is zero', function(done) {
+ variableDelayTest("0", "20", "milliseconds", 0, done);
});
it('variable delay is zero if msg.delay is negative', function(done) {
- variableDelayTest("0", "50", "milliseconds", -250, done);
+ variableDelayTest("0", "20", "milliseconds", -250, done);
});
/**