diff --git a/nodes/core/89-delay.html b/nodes/core/89-delay.html index 82a443c4a..39f28a6a9 100644 --- a/nodes/core/89-delay.html +++ b/nodes/core/89-delay.html @@ -18,17 +18,16 @@ @@ -93,6 +91,9 @@ return this.name?"node_label_italic":""; }, oneditprepare: function() { + $( "#node-input-timeout" ).spinner(); + $( "#node-input-rate" ).spinner(); + if (this.pauseType == "delay") { $("#delay-details").show(); $("#rate-details").hide(); @@ -114,7 +115,7 @@ } else if (this.value == "rate") { $("#delay-details").hide(); $("#rate-details").show(); - } + } }); } }); diff --git a/nodes/core/89-delay.js b/nodes/core/89-delay.js index e2f819e5a..b0fae5b0a 100644 --- a/nodes/core/89-delay.js +++ b/nodes/core/89-delay.js @@ -48,13 +48,11 @@ function DelayNode(n) { } else if (n.rateUnits == "day") { this.rate = (24 * 60 * 60 * 1000)/n.rate; } - - console.log(this.timeoutUnits + " - " + n.timeout + " = " + this.timeout); - console.log(this.rateUnits + " - " + n.rate + " = " + this.rate); this.name = n.name; this.idList = []; this.buffer = []; + this.intervalID = -1; var node= this; if (this.pauseType == "delay") { @@ -69,21 +67,31 @@ function DelayNode(n) { }); } else if (this.pauseType == "rate") { - this.intervalID = setInterval(function() { - if (node.buffer.length > 0) { - node.send(node.buffer.shift()); - } - },this.rate); - this.on("input", function(msg) { - this.buffer.push(msg); - if (this.buffer.length > 1000) { - this.warn(this.name + " buffer exceeded 1000 messages"); + if ( node.intervalID != -1) { + node.buffer.push(msg); + if (node.buffer.length > 1000) { + node.warn(this.name + " buffer exceeded 1000 messages"); + } + } else { + node.send(msg); + node.intervalID = setInterval(function() { + if (node.buffer.length == 0) { + clearInterval(node.intervalID); + node.intervalID = -1; + } + + if (node.buffer.length > 0) { + node.send(node.buffer.shift()); + } + },node.rate); } }); } } + + // register node RED.nodes.registerType("delay",DelayNode);