mirror of
				https://github.com/node-red/node-red.git
				synced 2025-03-01 10:36:34 +00:00 
			
		
		
		
	implementing message count on the debug node
This commit is contained in:
		| @@ -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 @@ | ||||
|         } | ||||
|     }); | ||||
| })(); | ||||
| </script> | ||||
| </script> | ||||
| @@ -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); | ||||
|         } | ||||
|     }); | ||||
| }; | ||||
| }; | ||||
		Reference in New Issue
	
	Block a user