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"), |                 label: RED._("node-red:debug.autostatus"), | ||||||
|                 hasValue: false |                 hasValue: false | ||||||
|             }; |             }; | ||||||
|  |  | ||||||
|  |             var counter = { | ||||||
|  |                 value: "counter", | ||||||
|  |                 label: "message count", | ||||||
|  |                 hasValue: false | ||||||
|  |             }; | ||||||
|  |  | ||||||
|             $("#node-input-typed-status").typedInput({ |             $("#node-input-typed-status").typedInput({ | ||||||
|                 default: "auto", |                 default: "auto", | ||||||
|                 types:[autoType, "msg", "jsonata"], |                 types:[autoType, "msg", "jsonata", counter], | ||||||
|                 typeField: $("#node-input-statusType") |                 typeField: $("#node-input-statusType") | ||||||
|             }); |             }); | ||||||
|             var that = this; |             var that = this; | ||||||
| @@ -492,7 +499,7 @@ | |||||||
|                 types:['msg', fullType, "jsonata"], |                 types:['msg', fullType, "jsonata"], | ||||||
|                 typeField: $("#node-input-targetType") |                 typeField: $("#node-input-targetType") | ||||||
|             }); |             }); | ||||||
|             if (this.targetType === "jsonata") { | 			if (this.targetType === "jsonata") { | ||||||
|                 var property = this.complete || ""; |                 var property = this.complete || ""; | ||||||
|                 $("#node-input-typed-complete").typedInput('type','jsonata'); |                 $("#node-input-typed-complete").typedInput('type','jsonata'); | ||||||
|                 $("#node-input-typed-complete").typedInput('value',property); |                 $("#node-input-typed-complete").typedInput('value',property); | ||||||
| @@ -514,12 +521,13 @@ | |||||||
|  |  | ||||||
|             $("#node-input-tostatus").on('change',function() { |             $("#node-input-tostatus").on('change',function() { | ||||||
|                 if ($(this).is(":checked")) { |                 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 type = $("#node-input-typed-complete").typedInput('type'); | ||||||
|                         var comp = "payload"; |                         var comp = "payload"; | ||||||
|                         if (type !== 'full') { |                         if (type !== 'full') { | ||||||
|                             comp = $("#node-input-typed-complete").typedInput('value'); |                             comp = $("#node-input-typed-complete").typedInput('value'); | ||||||
|                         } |                         } | ||||||
|  |                         console.log('hihi') | ||||||
|                         that.statusType = "auto"; |                         that.statusType = "auto"; | ||||||
|                         that.statusVal = comp; |                         that.statusVal = comp; | ||||||
|                     } |                     } | ||||||
|   | |||||||
| @@ -21,6 +21,9 @@ module.exports = function(RED) { | |||||||
|         this.statusType = n.statusType || "auto"; |         this.statusType = n.statusType || "auto"; | ||||||
|         this.statusVal = n.statusVal || this.complete; |         this.statusVal = n.statusVal || this.complete; | ||||||
|         this.tosidebar = n.tosidebar; |         this.tosidebar = n.tosidebar; | ||||||
|  |         this.counter = 0; | ||||||
|  |         this.lastTime = new Date().getTime(); | ||||||
|  |         this.timeout = null; | ||||||
|         if (this.tosidebar === undefined) { this.tosidebar = true; } |         if (this.tosidebar === undefined) { this.tosidebar = true; } | ||||||
|         this.active = (n.active === null || typeof n.active === "undefined") || n.active; |         this.active = (n.active === null || typeof n.active === "undefined") || n.active; | ||||||
|         if (this.tostatus) { |         if (this.tostatus) { | ||||||
| @@ -32,6 +35,11 @@ module.exports = function(RED) { | |||||||
|         var statExpression = hasStatExpression ? n.statusVal : null; |         var statExpression = hasStatExpression ? n.statusVal : null; | ||||||
|  |  | ||||||
|         var node = this; |         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 preparedEditExpression = null; | ||||||
|         var preparedStatExpression = null; |         var preparedStatExpression = null; | ||||||
|         if (editExpression) { |         if (editExpression) { | ||||||
| @@ -108,43 +116,57 @@ module.exports = function(RED) { | |||||||
|             } |             } | ||||||
|         }) |         }) | ||||||
|         this.on("input", function(msg, send, done) { |         this.on("input", function(msg, send, done) { | ||||||
|             if (hasOwnProperty.call(msg, "status") && msg.status && |             if (hasOwnProperty.call(msg, "status") && hasOwnProperty.call(msg.status, "source") && hasOwnProperty.call(msg.status.source, "id") && (msg.status.source.id === node.id)) { | ||||||
|                 hasOwnProperty.call(msg.status, "source") && msg.status.source && |  | ||||||
|                 hasOwnProperty.call(msg.status.source, "id") && (msg.status.source.id === node.id)) { |  | ||||||
|                 done(); |                 done(); | ||||||
|                 return; |                 return; | ||||||
|             } |             } | ||||||
|             if (node.tostatus === true) { |             if (node.tostatus === true) { | ||||||
|                 prepareStatus(msg, function(err,debugMsg) { |                 prepareStatus(msg, function(err,debugMsg) { | ||||||
|                     if (err) { node.error(err); return; } |                     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) + "..."; } | 					if ( node.statusType === "counter" ){ | ||||||
|                     var newStatus = {fill:fill, shape:shape, text:st}; | 						const differenceOfTime  = ((new Date()).getTime() - node.lastTime); | ||||||
|                     if (JSON.stringify(newStatus) !== node.oldState) { // only send if we have to | 						node.lastTime = new Date().getTime(); | ||||||
|                         node.status(newStatus); | 						node.counter++; | ||||||
|                         node.oldState = JSON.stringify(newStatus); | 						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); | ||||||
|  |                         } | ||||||
|  | 					} | ||||||
|  |  | ||||||
|                 }); |                 }); | ||||||
|             } |             } | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user