From where is this text coming?

Dashboard 2.0

I am lost to understand from where this text is coming.

In particular the HOLD part.

(This is the code side of things.)

You can see the Test part/text.

But no HOLD to be seen.
The "Test" is from the inject node.
No other part of the flow doing much.

Did you try to search for HOLD in your flows ?

Yes, and - alas - there are a few.

The HOLD isn't the only incorrect text shown.

It changes as the mode changes.

But the debug doesn't show any messages with or containing the text HOLD going to the text node just below the debug window.

So it has me stumped how it is getting into the stream of things.

If you disconnect the input wire to the text node and restart node red what does it show?

Assuming it doesn't, then are you sending it any messages with msg.ui_update set?

I am seeing something weird happening, but can't put my finger on it.

While you were thinking of that and sending it, I had a SIMILAR idea.
Before the text node I put in a function node with the code:

let msg1 = {}
msg1.payload = msg.payload
return msg1

So any extra stuff SHOULD be stripped away as a new msg1 is sent with ONLY a payload.

But it is still happening.
Here are some screen shots.

Pic 1. Start

I press the PASS button.
I'm tweaking the code for what this does and in so doing have let all the worms out of the can.

In this picture you see the white PASS on the brown background, that is supposed to be text telling me the state of the test.
eg: Running

So, pressing the PASS button.

You can see the text has changed to PASS --==HOLD==--
The --==HOLD==-- is an indication that the results from the test will be held and not wiped after 10 seconds (as per normal ops).

Soon after that happening - I think it was 10 seconds this happens:

Resetting is displayed for a very short time indicating that things are being....
reset.

Then the "display" is wiped.
So this is the new picture.

The Resetting is wiped by a space so it would be blank
but the PASS is persisting.

It was never sent to the text node.

Alas the browser locked up and I had to reboot.

And.... Sod's law has now stepped in and things seem to be working fine.

ALTHOUGH

the TIME field is still not displaying the correct details.
(Sorry I missed that)

Here is the CORRECT start screen.

But you can see HOLD is written where nothing should be at this point in time.

As you can see with this next picture.

THOUGH..... Even in this case where it says TIME it should be blank as the test is not running/complete.

So, running it fully - the next stage:

You can see the script is RUNNING - the LED is yellow. :wink:
And the message says --==RUNNING==--
The HOLD shouldn't be there.

here you see the results.
And the TIME but the word TIME should be where HOLD is.

I missed the next screen shot as it is done quickly.
But then it goes back to Square 1.

But again, the HOLD shouldn't be there.
That node was wiped with a space.

Here's a small part of the code:

No special nodes.

[{"id":"9b25337dad36c116","type":"function","z":"b39000460508d582","name":"Parse the values","func":"//  Get time now.\nlet currentTime = time()\n\nfunction time() {\n    return {\n        time: new Date().toLocaleTimeString('en-GB', { hour12: false })\n    };\n}\n\n//  Extract value.\nconst use_this = currentTime.time\n\n\n// Extract download and upload from msg.payload using regex\nlet payload = msg.payload\n\nlet downloadMatch = payload.match(/Download:\\s+([0-9.]+)\\s+Mbit\\/s/)\nlet uploadMatch = payload.match(/Upload:\\s+([0-9.]+)\\s+Mbit\\/s/)\n\nlet download = downloadMatch ? parseFloat(downloadMatch[1]) : null\nlet upload = uploadMatch ? parseFloat(uploadMatch[1]) : null\n\nreturn [{ payload: upload },{ payload: download },{payload: use_this} ]\n","outputs":3,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":950,"y":590,"wires":[["8ffd9a25a978f429"],["7067b221c7f95a9d"],["8da23886079351c5","2811e24ecf1d9c28"]]},{"id":"8da23886079351c5","type":"junction","z":"b39000460508d582","x":1170,"y":580,"wires":[["7920281761d6657d","7092a2d42a601f0c"]]},{"id":"7092a2d42a601f0c","type":"junction","z":"b39000460508d582","x":1480,"y":580,"wires":[["a0739c8df6f1cfa5"]]},{"id":"a0739c8df6f1cfa5","type":"junction","z":"b39000460508d582","x":1540,"y":660,"wires":[["dc2256c1e2acf3c2"]]},{"id":"dc2256c1e2acf3c2","type":"change","z":"b39000460508d582","name":"Set topic","rules":[{"t":"set","p":"topic","pt":"msg","to":"a","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1575,"y":660,"wires":[["d2a83b806264ee8c","dc599b15a803b171"]],"l":false},{"id":"d2a83b806264ee8c","type":"ui-text","z":"b39000460508d582","group":"6f4a6f88bfbb219b","order":8,"width":"2","height":"1","name":"","label":"TIME: ","format":"{{msg.payload}}","layout":"row-spread","style":false,"font":"","fontSize":16,"color":"#717171","wrapText":false,"className":"","x":1860,"y":660,"wires":[]},{"id":"6f4a6f88bfbb219b","type":"ui-group","name":"Group 1","page":"b9b507aa5c5840c2","width":"10","height":1,"order":1,"showTitle":false,"className":"","visible":"true","disabled":"false","groupType":"default"},{"id":"b9b507aa5c5840c2","type":"ui-page","name":"Down/Up load speed tester","ui":"379027033ed5c83a","path":"/page1","icon":"home","layout":"flex","theme":"84a68e3f4c6f8cdc","breakpoints":[{"name":"Default","px":"0","cols":"3"},{"name":"Tablet","px":"576","cols":"6"},{"name":"Small Desktop","px":"768","cols":"9"},{"name":"Desktop","px":"1024","cols":"12"}],"order":1,"className":"","visible":"true","disabled":"false"},{"id":"379027033ed5c83a","type":"ui-base","name":"My Dashboard","path":"/dashboard","appIcon":"","includeClientData":true,"acceptsClientConfig":["ui-notification","ui-control"],"showPathInSidebar":false,"headerContent":"page","navigationStyle":"default","titleBarStyle":"default","showReconnectNotification":true,"notificationDisplayTime":1,"showDisconnectNotification":true,"allowInstall":true},{"id":"84a68e3f4c6f8cdc","type":"ui-theme","name":"Default Theme","colors":{"surface":"#63452c","primary":"#0094ce","bgPage":"#63452c","groupBg":"#63452c","groupOutline":"#cccccc"},"sizes":{"density":"default","pagePadding":"12px","groupGap":"12px","groupBorderRadius":"4px","widgetGap":"12px"}}]

the function node gets the result/s from the speedtest command and splits the result to usable outputs and also sends a current time to be displayed in the text node which is most/all pictures says HOLD rather than TIME: xxxxxx

Thoughts?

What do you see if you disconnect the input wire to the node and restart node red?

Well, with this in/on the edit screen and a full restart of NR:

I see this on the gui side of things - after a refresh.

Going the extra mile:

Adding an inject node

To give this:

And on the GUI side of things:

So that is the node.

But from where is the HOLD come?

The time text node is only 2x1 so there must be another node before it. Look in the Dashboard 2 pane on the right hand side and see what is immediately before it.

1 Like

(As I asked/mentioned in another thread)

It is not helpful that when I move the mouse over the nodes listed on the right side of the screen they aren't highlighted in/on the main window like they do in the older dashboard.

I'll have to look where that node is.

Or something. As there seems to be two nodes doing the same/similar thing.

(Sorry)
How do I get a LAYOUT of the dashboard like I do with the old one?
(Found it - I think)

So clicking on a lucky button I see this:

I now remember that the SIZE of the GUI nodes doesn't count for much.

I need to learn this whole new world.

Hover over the page in the dashboard pane and buttons will appear to the right. Click the one with the tooltip Layout Editor.

In an earlier thread you were asking how to change the label of a node using msg.ui_update. It looks to me as if you are doing that to that node. HOLD is the label.

(I seem to be failing how the brain is working just now)

This is another piccie showing the association between the nodes.

Now the HOLD button isn't shown.
(and I forgot to put in the line. Sorry.)

I Called the button HOLD to help me know what it is/was/does.

But I want to change what the button is showing.
(Got that part working now. But it was kinda painful)

The TIME node is there to show what time it is when the test is/was done.
The node is called TIME and has a label of TIME too, which can be seen sometimes.

But usually/mostly it says HOLD and I don't know from where that word/message is coming.

This is the problem.

This node:
TIME: .....
It only has ONE WIRE going to it. From an inject node.

This is the inject node.

And this is what I am shown.

As shown that whole lower area with the HOLD Test string is ONE node.
How did the HOLD get into the node?
There is no HOLD sent to it.

This is a bit of code around the HOLD button:

[{"id":"b5464c8f75a40b48","type":"switch","z":"b39000460508d582","name":"","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"1","vt":"num"},{"t":"eq","v":"0","vt":"num"}],"checkall":"true","repair":false,"outputs":2,"x":245,"y":500,"wires":[["5513ad5fecf8055c"],["7435390d94ef877d"]],"l":false},{"id":"e219198a37ba75b2","type":"change","z":"b39000460508d582","name":"Default","rules":[{"t":"set","p":"ui_update.buttonColor","pt":"msg","to":"blue","tot":"str"},{"t":"set","p":"ui_update.label","pt":"msg","to":"PASS","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":350,"y":450,"wires":[["de5be44bacf7ef7d"]]},{"id":"4dacdab6124ba2a9","type":"inject","z":"b39000460508d582","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":true,"onceDelay":"2","topic":"","payload":"","payloadType":"date","x":245,"y":450,"wires":[["e219198a37ba75b2"]],"l":false},{"id":"5513ad5fecf8055c","type":"change","z":"b39000460508d582","name":"Normal","rules":[{"t":"set","p":"ui_update.label","pt":"msg","to":"PASS","tot":"str"},{"t":"set","p":"ui_update.buttonColor","pt":"msg","to":"green","tot":"str"},{"t":"delete","p":"payload","pt":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":350,"y":490,"wires":[["de5be44bacf7ef7d"]]},{"id":"7435390d94ef877d","type":"change","z":"b39000460508d582","name":"Hold","rules":[{"t":"set","p":"ui_update.label","pt":"msg","to":"HOLD","tot":"str"},{"t":"set","p":"ui_update.buttonColor","pt":"msg","to":"red","tot":"str"},{"t":"delete","p":"payload","pt":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":340,"y":530,"wires":[["de5be44bacf7ef7d"]]},{"id":"de5be44bacf7ef7d","type":"ui-button","z":"b39000460508d582","group":"6f4a6f88bfbb219b","name":"Hold","label":"","order":5,"width":"1","height":"1","emulateClick":false,"tooltip":"","color":"","bgcolor":"","className":"","icon":"","iconPosition":"left","payload":"X","payloadType":"str","topic":"topic","topicType":"msg","buttonColor":"","textColor":"","iconColor":"","enableClick":true,"enablePointerdown":false,"pointerdownPayload":"","pointerdownPayloadType":"str","enablePointerup":false,"pointerupPayload":"","pointerupPayloadType":"str","x":520,"y":490,"wires":[["5bdde14fb80b87f6","b5d74453ad226bca"]]},{"id":"6f4a6f88bfbb219b","type":"ui-group","name":"Group 1","page":"b9b507aa5c5840c2","width":"10","height":1,"order":1,"showTitle":false,"className":"","visible":true,"disabled":"false","groupType":"default"},{"id":"b9b507aa5c5840c2","type":"ui-page","name":"Down/Up load speed tester","ui":"379027033ed5c83a","path":"/page1","icon":"home","layout":"flex","theme":"84a68e3f4c6f8cdc","breakpoints":[{"name":"Default","px":"0","cols":"3"},{"name":"Tablet","px":"576","cols":"6"},{"name":"Small Desktop","px":"768","cols":"9"},{"name":"Desktop","px":"1024","cols":"12"}],"order":1,"className":"","visible":true,"disabled":false},{"id":"379027033ed5c83a","type":"ui-base","name":"My Dashboard","path":"/dashboard","appIcon":"","includeClientData":true,"acceptsClientConfig":["ui-notification","ui-control"],"showPathInSidebar":false,"headerContent":"page","navigationStyle":"default","titleBarStyle":"default","showReconnectNotification":true,"notificationDisplayTime":1,"showDisconnectNotification":true,"allowInstall":true},{"id":"84a68e3f4c6f8cdc","type":"ui-theme","name":"Default Theme","colors":{"surface":"#63452c","primary":"#0094ce","bgPage":"#63452c","groupBg":"#63452c","groupOutline":"#cccccc"},"sizes":{"density":"default","pagePadding":"12px","groupGap":"12px","groupBorderRadius":"4px","widgetGap":"12px"}}]

Also a screen shot:

Apologies, I have not read every word in the thread before posting.

It looks to me as if HOLD is the Label of a text widget and Test String is the value it is displaying.

In that case you should see it in the widget config

Um,

I think things are getting more and more confusing.

To review:
I have a TEXT node (DB 2.0) that is accepting messages.

For reasons unknown I am getting HOLD displayed on the dashboard irrespective of what is sent into it.

The new message IS shown, but it has HOLD before it.

The inject node isn't sending anything with HOLD in it.
The node into which it is sent is called Time and has TIME: in the label field.

As per:

You can find out where an element on the dashboard comes from using the browser inspector. I use Firefox but they all have one.

On the dashboard, right click on the item and pick Inspect


Somewhere above the highlighted line showing "HOLD" is a div with id nrdb-ui-widget-<the id of the widget> (in this case nrdb-ui-widget-b8573601a58a7292)
Copy or note down the widget id.

Now back in Node-red, in the Info tab, search for the id


In this case, the widget is in an editor group Database to charts on flow Door Chart.

It might turn out that your widget lives on a different flow but happens to display on the same dashboard tab.

1 Like

I am basically swimming blind here.

Ok, found that part you mentioned.

How do I copy that magic number easily?
I don't seem to be able to drag select it.

Thats why I said "or note down"!

In Firefox, you can double click the text in the inspector, which will highlight it, then ctrl-c to copy.
You need to use notepad or something to get rid of everything but the actual node id

1 Like