From 8924ac278351a7ed2046113fb963b26eb72a8d58 Mon Sep 17 00:00:00 2001 From: Rafael Muynarsk Date: Sat, 23 Apr 2022 20:18:51 -0300 Subject: [PATCH] implementing message count on the debug node --- .../@node-red/nodes/core/common/21-debug.html | 16 +++- .../@node-red/nodes/core/common/21-debug.js | 84 ++++++++++++------- 2 files changed, 65 insertions(+), 35 deletions(-) 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 49387c860..001d62b03 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: "message count", + 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,13 @@ $("#node-input-tostatus").on('change',function() { if ($(this).is(":checked")) { - if (!that.hasOwnProperty("statusVal") || that.statusVal === "") { + 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; } @@ -550,4 +558,4 @@ } }); })(); - + \ No newline at end of file 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..b01d5ccf2 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,11 @@ 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) { @@ -108,43 +116,57 @@ module.exports = function(RED) { } }) 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 === "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 || ""; - } - } - 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 ( 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}); + } else { + if (node.timeout) { clearTimeout(node.timeout) } + node.timeout = setTimeout(() => { + node.status({fill:"blue", shape:"ring", text: node.counter}) + }, 200) + } + } else { + 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); + } + } + }); } @@ -298,4 +320,4 @@ module.exports = function(RED) { res.sendStatus(404); } }); -}; +}; \ No newline at end of file