diff --git a/packages/node_modules/@node-red/nodes/core/common/21-debug.html b/packages/node_modules/@node-red/nodes/core/common/21-debug.html index c511397bf..40680b16f 100644 --- a/packages/node_modules/@node-red/nodes/core/common/21-debug.html +++ b/packages/node_modules/@node-red/nodes/core/common/21-debug.html @@ -453,9 +453,16 @@ label: RED._("node-red:debug.autostatus"), hasValue: false }; + + var counter = { + value: "counter", + label: RED._("node-red:debug.messageCount"), + hasValue: false + }; + $("#node-input-typed-status").typedInput({ default: "auto", - types:[autoType, "msg", "jsonata"], + types:[autoType, "msg", "jsonata", counter], typeField: $("#node-input-statusType") }); var that = this; @@ -492,7 +499,7 @@ types:['msg', fullType, "jsonata"], typeField: $("#node-input-targetType") }); - if (this.targetType === "jsonata") { + if (this.targetType === "jsonata") { var property = this.complete || ""; $("#node-input-typed-complete").typedInput('type','jsonata'); $("#node-input-typed-complete").typedInput('value',property); @@ -514,12 +521,16 @@ $("#node-input-tostatus").on('change',function() { if ($(this).is(":checked")) { - if (!that.hasOwnProperty("statusVal") || that.statusVal === "") { + if (that.statusType === "counter") { + that.statusVal = ""; + } + else if (!that.hasOwnProperty("statusVal") || that.statusVal === "") { var type = $("#node-input-typed-complete").typedInput('type'); var comp = "payload"; if (type !== 'full') { comp = $("#node-input-typed-complete").typedInput('value'); } + console.log('hihi') that.statusType = "auto"; that.statusVal = comp; } diff --git a/packages/node_modules/@node-red/nodes/core/common/21-debug.js b/packages/node_modules/@node-red/nodes/core/common/21-debug.js index c4b7c436f..5a22194ad 100644 --- a/packages/node_modules/@node-red/nodes/core/common/21-debug.js +++ b/packages/node_modules/@node-red/nodes/core/common/21-debug.js @@ -21,6 +21,9 @@ module.exports = function(RED) { this.statusType = n.statusType || "auto"; this.statusVal = n.statusVal || this.complete; this.tosidebar = n.tosidebar; + this.counter = 0; + this.lastTime = new Date().getTime(); + this.timeout = null; if (this.tosidebar === undefined) { this.tosidebar = true; } this.active = (n.active === null || typeof n.active === "undefined") || n.active; if (this.tostatus) { @@ -32,6 +35,12 @@ module.exports = function(RED) { var statExpression = hasStatExpression ? n.statusVal : null; var node = this; + if ( node.statusType === "counter" ){ + node.status({fill:"blue", shape:"ring", text: node.counter}); + } + else { + node.status({fill:"", shape:"", text: ""}); + } var preparedEditExpression = null; var preparedStatExpression = null; if (editExpression) { @@ -106,46 +115,64 @@ module.exports = function(RED) { if (this.oldState) { this.status({}); } + if (this.timeout) { + clearTimeout(this.timeout) + } }) this.on("input", function(msg, send, done) { - if (hasOwnProperty.call(msg, "status") && msg.status && - hasOwnProperty.call(msg.status, "source") && msg.status.source && - hasOwnProperty.call(msg.status.source, "id") && (msg.status.source.id === node.id)) { + if (hasOwnProperty.call(msg, "status") && hasOwnProperty.call(msg.status, "source") && hasOwnProperty.call(msg.status.source, "id") && (msg.status.source.id === node.id)) { done(); return; } if (node.tostatus === true) { - prepareStatus(msg, function(err,debugMsg) { - if (err) { node.error(err); return; } - var output = debugMsg.msg; - var st = (typeof output === 'string') ? output : util.inspect(output); - var fill = "grey"; - var shape = "dot"; - if (typeof output === 'object' && hasOwnProperty.call(output, "fill") && hasOwnProperty.call(output, "shape") && hasOwnProperty.call(output, "text")) { - fill = output.fill; - shape = output.shape; - st = output.text; + if ( node.statusType === "counter" ){ + const differenceOfTime = (new Date().getTime() - node.lastTime); + node.lastTime = new Date().getTime(); + node.counter++; + if ( differenceOfTime > 100 ){ + node.status({fill:"blue", shape:"ring", text: node.counter}); } - if (node.statusType === "auto") { - if (hasOwnProperty.call(msg, "error")) { - fill = "red"; - st = msg.error.message; - } - if (hasOwnProperty.call(msg, "status") && - msg.status) { - fill = msg.status.fill || "grey"; - shape = msg.status.shape || "ring"; - st = msg.status.text || ""; + else { + if (node.timeout) { + clearTimeout(node.timeout) } + node.timeout = setTimeout(() => { + node.status({fill:"blue", shape:"ring", text: node.counter}) + }, 200) } + } else { + prepareStatus(msg, function(err,debugMsg) { + if (err) { node.error(err); return; } + var output = debugMsg.msg; + var st = (typeof output === 'string') ? output : util.inspect(output); + var fill = "grey"; + var shape = "dot"; + if (typeof output === 'object' && hasOwnProperty.call(output, "fill") && hasOwnProperty.call(output, "shape") && hasOwnProperty.call(output, "text")) { + fill = output.fill; + shape = output.shape; + st = output.text; + } + if (node.statusType === "auto") { + if (hasOwnProperty.call(msg, "error")) { + fill = "red"; + st = msg.error.message; + } + if (hasOwnProperty.call(msg, "status")) { + fill = msg.status.fill || "grey"; + shape = msg.status.shape || "ring"; + st = msg.status.text || ""; + } + } - if (st.length > 32) { st = st.substr(0,32) + "..."; } - var newStatus = {fill:fill, shape:shape, text:st}; - if (JSON.stringify(newStatus) !== node.oldState) { // only send if we have to - node.status(newStatus); - node.oldState = JSON.stringify(newStatus); - } - }); + if (st.length > 32) { st = st.substr(0,32) + "..."; } + + var newStatus = {fill:fill, shape:shape, text:st}; + if (JSON.stringify(newStatus) !== node.oldState) { // only send if we have to + node.status(newStatus); + node.oldState = JSON.stringify(newStatus); + } + }); + } } if (this.complete === "true") { @@ -288,7 +315,7 @@ module.exports = function(RED) { res.sendFile( req.params[0], options, - err => { + err => { if (err) { res.sendStatus(404); } diff --git a/packages/node_modules/@node-red/nodes/locales/en-US/messages.json b/packages/node_modules/@node-red/nodes/locales/en-US/messages.json index 7abe5804d..8773d457e 100755 --- a/packages/node_modules/@node-red/nodes/locales/en-US/messages.json +++ b/packages/node_modules/@node-red/nodes/locales/en-US/messages.json @@ -129,6 +129,7 @@ "msgprop": "message property", "msgobj": "complete msg object", "autostatus": "same as debug output", + "messageCount": "message count", "to": "To", "debtab": "debug tab", "tabcon": "debug tab and console",