# Dashboard not keeping my data

**URL:** https://discourse.nodered.org/t/dashboard-not-keeping-my-data/96943
**Category:** Dashboard
**Created:** [7 May 2025 11:59 UTC](https://discourse.nodered.org/t/dashboard-not-keeping-my-data/96943 "2025-05-07T11:59:22Z")
**Posts on this page:** 4
**Page:** 1

<div class="post-metadata">

### Author: ![ArcelorMan](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/arcelorman/32/99548_2.png) [@ArcelorMan](https://discourse.nodered.org/u/ArcelorMan)
#### Post date: [7 May 2025 11:59 UTC](https://discourse.nodered.org/t/dashboard-not-keeping-my-data/96943/1 "2025-05-07T11:59:22Z")

</div>

(Dashboard 2 comes later, first i need to fix the current iteration so it is back to working)  
I have an issue where some of my webpage data will delete on page refresh.  
Below are the pictures of what happens. I can't seem to figure out why.  
Below the pictures is the code applicable.  
Whenever i reinitialise they come back, but a page refresh or opening the dashboard elsewhere will show the bottom image.  
A seperate system runs a seperate instance of this, and there, only Zone Voorwals is missing, the second column works just fine.

 ![image](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/3/d/3d5d6d7ad27ccc26f42466468c05576d6b946645.png)  
 ![image](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/a/0/a0b44cd362d559eee6d452982fc910a99c99a4a2.png)

```auto
[
    {
        "id": "5408424ef8ae249d",
        "type": "subflow",
        "name": "HMI guard logic (1)",
        "info": "",
        "category": "",
        "in": [
            {
                "x": 80,
                "y": 80,
                "wires": [
                    {
                        "id": "b757ea0ec0e8b2c3"
                    }
                ]
            }
        ],
        "out": [
            {
                "x": 1260,
                "y": 200,
                "wires": [
                    {
                        "id": "fdfe9ad7f18ca826",
                        "port": 0
                    }
                ]
            },
            {
                "x": 1260,
                "y": 320,
                "wires": [
                    {
                        "id": "69c4118a241141b1",
                        "port": 0
                    }
                ]
            }
        ],
        "env": [],
        "meta": {},
        "color": "#DDAA99"
    },
    {
        "id": "6c25754d13b0aa2b",
        "type": "function",
        "z": "5408424ef8ae249d",
        "name": "Change msg",
        "func": "var newMsg = {};\nnewMsg.addressSpaceItems = [];\nvar nodeObj = {};\n\nnewMsg.topic = \"\";\nnewMsg.nodetype = \"inject\";\nnewMsg.injectType = \"inject\";\nnewMsg.payload = \"\";\nnodeObj.name = \"Test_Read\";\nnodeObj.nodeId = msg.payload.nodeId;\nnodeObj.datatypeName = \"Boolean\";\nnewMsg.addressSpaceItems[0]= nodeObj;\nreturn newMsg;\n",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 450,
        "y": 80,
        "wires": [
            [
                "ca5cf2d30e774910"
            ]
        ]
    },
    {
        "id": "b757ea0ec0e8b2c3",
        "type": "OPCUA-IIoT-Response",
        "z": "5408424ef8ae249d",
        "name": "",
        "compressStructure": true,
        "showStatusActivities": false,
        "showErrors": false,
        "activateUnsetFilter": false,
        "activateFilters": false,
        "negateFilter": false,
        "filters": [],
        "x": 250,
        "y": 80,
        "wires": [
            [
                "6c25754d13b0aa2b"
            ]
        ]
    },
    {
        "id": "ca5cf2d30e774910",
        "type": "OPCUA-IIoT-Read",
        "z": "5408424ef8ae249d",
        "attributeId": "0",
        "maxAge": 1,
        "depth": 1,
        "connector": "",
        "name": "",
        "justValue": true,
        "showStatusActivities": false,
        "showErrors": true,
        "parseStrings": false,
        "historyDays": 1,
        "x": 650,
        "y": 80,
        "wires": [
            [
                "4f76c26ec623f542"
            ]
        ]
    },
    {
        "id": "3bd9ae9e66ed9f3b",
        "type": "template",
        "z": "5408424ef8ae249d",
        "name": "html table",
        "field": "payload",
        "fieldType": "msg",
        "format": "html",
        "syntax": "mustache",
        "template": "<table border=\"0\" cellspacing=\"3\" cellpadding=\"3\">\n\n <tr>\n <th>Name</th>\n <th>Status</th>\n <th>Date & Time</th>\n\n </tr>\n {{#payload}}\n <tr class=\"\">\n <td style=\"min-width:100px\">{{name}}</td> \n <td><font color=\"red\">{{stat}}</font></td>\n <td>{{localTime}}</td>\n </tr>\n {{/payload}}\n</table>\n",
        "output": "str",
        "x": 920,
        "y": 500,
        "wires": [
            []
        ]
    },
    {
        "id": "3bd2b69926d9904b",
        "type": "function",
        "z": "5408424ef8ae249d",
        "name": "topic & 10",
        "func": "var arr = msg.payload ;\n\nvar i = 10;\nif(typeof arr === undefined) {\n return ;\n} else {\n msg.payload = arr.slice(0, 10); \n msg.topic = 'HMI recording messages :';\n return msg;\n}",
        "outputs": 1,
        "noerr": 0,
        "x": 700,
        "y": 500,
        "wires": [
            [
                "3bd9ae9e66ed9f3b"
            ]
        ]
    },
    {
        "id": "85fd0dd3261fb150",
        "type": "change",
        "z": "5408424ef8ae249d",
        "name": "sort",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "($sort(payload,function($l , $r){$l.timestamp < $r.timestamp }) )",
                "tot": "jsonata"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 490,
        "y": 500,
        "wires": [
            [
                "3bd2b69926d9904b"
            ]
        ]
    },
    {
        "id": "694866c801015862",
        "type": "function",
        "z": "5408424ef8ae249d",
        "name": "Create/Update msg_events",
        "func": "var msg_obj = msg.payload ;\nvar arr_msgs = flow.get(\"msg_events\", 'memoryOnly')\nvar debug = [];\nvar arrayObj = {};\nvar obj = {};\nvar temp = {};\nvar text=\"\";\nvar foundInArray = false;\nvar index = -1;\n\nif (arr_msgs===undefined ) {\n arr_msgs = [];\n}\n\n//Start script\ntext+=\"Start - \";\nfor(i=0;i<arr_msgs.length;i++){\n arrayObj = arr_msgs[i];\n \n if(arrayObj.name == msg_obj.name){\n foundInArray = true;\n index = i;\n }\n\n}\n\nif(foundInArray){\n if(msg.payload.value){\n //remove from array\n text+=\"Splice \" + i + \" - \";\n arr_msgs.splice(index,1);\n }\n text+=\"Already present - \";\n}\nelse{\n if(!msg.payload.value){\n //add to array\n text+=\"Push \" + i + \" - \";\n arr_msgs.push(msg_obj);\n }\n text+=\"Not yet present - \";\n text+=msg.payload.value + \" - \";\n}\n\ntext+=\"Klaar\";\n\nflow.set(\"msg_events\",arr_msgs, 'memoryOnly');\n\ntemp.payload = arr_msgs;\ntemp.debug = text;\nreturn temp;\n",
        "outputs": 1,
        "noerr": 0,
        "x": 180,
        "y": 500,
        "wires": [
            [
                "85fd0dd3261fb150"
            ]
        ]
    },
    {
        "id": "c870a92011056c63",
        "type": "function",
        "z": "5408424ef8ae249d",
        "name": "Add timestamp",
        "func": "msg_obj = msg.payload;\n\nvar d = new Date();\nvar jstime = d.getTime();\nmsg_obj.utc = jstime;\n\nmsg.payload = msg_obj ;\n\nreturn msg;\n\n",
        "outputs": 1,
        "noerr": 0,
        "x": 540,
        "y": 200,
        "wires": [
            [
                "8c97ab603b20ada6"
            ]
        ]
    },
    {
        "id": "8c97ab603b20ada6",
        "type": "moment",
        "z": "5408424ef8ae249d",
        "name": "DST",
        "topic": "",
        "input": "payload.utc",
        "inputType": "msg",
        "inTz": "Europe/Brussels",
        "adjAmount": 0,
        "adjType": "days",
        "adjDir": "add",
        "format": "DD/MM/YYYY - HH:mm:ss",
        "locale": "BE_nl",
        "output": "payload.localTime",
        "outputType": "msg",
        "outTz": "Europe/Brussels",
        "x": 710,
        "y": 200,
        "wires": [
            [
                "f51459d5d46627b7",
                "42f6e8ecd2c89c59"
            ]
        ]
    },
    {
        "id": "f51459d5d46627b7",
        "type": "function",
        "z": "5408424ef8ae249d",
        "name": "Msg logic",
        "func": "new_msg={};\n\nnew_msg.topic=msg.payload.name;\nif(!msg.payload.value){\n new_msg.payload=msg.payload;\n}\nelse{\n new_msg.reset=true;\n}\nreturn new_msg;\n\n\n\n\n\n\n",
        "outputs": 1,
        "noerr": 0,
        "x": 660,
        "y": 320,
        "wires": [
            [
                "cdd0ddbec7d03cb4",
                "c4e0aa58deeb5945"
            ]
        ]
    },
    {
        "id": "cdd0ddbec7d03cb4",
        "type": "trigger",
        "z": "5408424ef8ae249d",
        "name": "",
        "op1": "",
        "op2": "",
        "op1type": "nul",
        "op2type": "payl",
        "duration": "1",
        "extend": true,
        "overrideDelay": false,
        "units": "min",
        "reset": "",
        "bytopic": "topic",
        "topic": "topic",
        "outputs": 1,
        "x": 850,
        "y": 320,
        "wires": [
            [
                "69c4118a241141b1"
            ]
        ]
    },
    {
        "id": "69c4118a241141b1",
        "type": "trigger",
        "z": "5408424ef8ae249d",
        "name": "",
        "op1": "",
        "op2": "",
        "op1type": "pay",
        "op2type": "pay",
        "duration": "-1",
        "extend": false,
        "overrideDelay": false,
        "units": "hr",
        "reset": "",
        "bytopic": "all",
        "topic": "topic",
        "outputs": 1,
        "x": 1090,
        "y": 320,
        "wires": [
            []
        ]
    },
    {
        "id": "c4e0aa58deeb5945",
        "type": "function",
        "z": "5408424ef8ae249d",
        "name": "ResetResend",
        "func": "msg.reset = true;\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "x": 860,
        "y": 380,
        "wires": [
            [
                "69c4118a241141b1"
            ]
        ]
    },
    {
        "id": "42f6e8ecd2c89c59",
        "type": "function",
        "z": "5408424ef8ae249d",
        "name": "Logic",
        "func": "var msg_obj = msg.payload ;\nvar arr_msgs = flow.get(\"msg_events\")\nvar debug = [];\nvar arrayObj = {};\nvar temp = {};\nvar foundInArray = false;\n\nif (arr_msgs===undefined ) {\n arr_msgs = [];\n}\n\n//Start script\nfor(i=0;i<arr_msgs.length;i++){\n arrayObj = arr_msgs[i];\n \n if(arrayObj.node == msg_obj.node){\n arr_msgs[i] = msg_obj;\n foundInArray = true;\n index = i;\n }\n}\n\nif(!foundInArray){\n arr_msgs.push(msg_obj);\n}\n\nflow.set(\"msg_events\",arr_msgs);\n\ntemp.payload = arr_msgs;\nreturn temp;",
        "outputs": 1,
        "noerr": 0,
        "x": 870,
        "y": 200,
        "wires": [
            [
                "3e5fa6d7ac5bd7e1"
            ]
        ]
    },
    {
        "id": "3e5fa6d7ac5bd7e1",
        "type": "change",
        "z": "5408424ef8ae249d",
        "name": "sort",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "($sort(payload,function($l , $r){$l.stat > $r.stat }) )",
                "tot": "jsonata"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 1010,
        "y": 200,
        "wires": [
            [
                "fdfe9ad7f18ca826"
            ]
        ]
    },
    {
        "id": "4f76c26ec623f542",
        "type": "function",
        "z": "5408424ef8ae249d",
        "name": "New simple message",
        "func": "var new_msg = {};\nvar new_obj = {};\nnew_obj.node = msg.payload[0].node;\nnew_obj.name = msg.payload[0].displayName.text;\nnew_obj.value = msg.payload[0].value;\nif(msg.payload[0].value){\n new_obj.stat = \"Recording\"\n new_obj.icon = \"fa-thumbs-up fa-1x\"\n new_obj.color = \"green\"\n}\nelse{\n new_obj.stat = \"Stopped\"\n new_obj.icon = \"fa-ambulance fa-1x fa-spin\"\n new_obj.color = \"red\"\n}\n\nnew_msg.payload = new_obj ;\n\nreturn new_msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 320,
        "y": 200,
        "wires": [
            [
                "c870a92011056c63"
            ]
        ]
    },
    {
        "id": "fdfe9ad7f18ca826",
        "type": "template",
        "z": "5408424ef8ae249d",
        "name": "html table",
        "field": "payload",
        "fieldType": "msg",
        "format": "html",
        "syntax": "mustache",
        "template": "<table border=\"0\" cellspacing=\"3\" cellpadding=\"3\">\n\n <tr>\n <th>Name</th>\n <th></th>\n <th>Status</th>\n <th>Date & Time</th>\n\n </tr>\n {{#payload}}\n <tr class=\"\">\n <td style=\"min-width:100px\">{{name}}</td> \n <td><i class=\"fa {{icon}}\"></i></td>\n <td>{{stat}}</td>\n <td>{{localTime}}</td>\n </tr>\n {{/payload}}\n</table>\n",
        "output": "str",
        "x": 1160,
        "y": 200,
        "wires": [
            []
        ]
    },
    {
        "id": "cea74239b60a06a4",
        "type": "comment",
        "z": "5408424ef8ae249d",
        "name": "Hier server instellen",
        "info": "",
        "x": 690,
        "y": 40,
        "wires": []
    },
    {
        "id": "046d3339d0c1c1a9",
        "type": "OPCUA-IIoT-Inject",
        "z": "07159a452267ca75",
        "injectType": "listen",
        "payload": "{\"interval\":1000,\"queueSize\":10,\"options\":{\"requestedPublishingInterval\":500,\"requestedLifetimeCount\":2400,\"requestedMaxKeepAliveCount\":10,\"maxNotificationsPerPublish\":10,\"publishingEnabled\":true,\"priority\":2}}",
        "payloadType": "json",
        "topic": "",
        "repeat": "",
        "crontab": "",
        "once": true,
        "startDelay": "3",
        "name": "Zone EW",
        "addressSpaceItems": [
            {
                "name": "Wawi_L",
                "nodeId": "ns=3;s=V:0.3.505.1.0",
                "datatypeName": "Boolean"
            },
            {
                "name": "Wawi_R",
                "nodeId": "ns=3;s=V:0.3.505.1.1",
                "datatypeName": "Boolean"
            },
            {
                "name": "STK_1",
                "nodeId": "ns=3;s=V:0.3.505.1.2",
                "datatypeName": "Boolean"
            },
            {
                "name": "STK_2",
                "nodeId": "ns=3;s=V:0.3.505.1.3",
                "datatypeName": "Boolean"
            },
            {
                "name": "Kelk",
                "nodeId": "ns=3;s=V:0.3.505.1.4",
                "datatypeName": "Boolean"
            },
            {
                "name": "IMS_Camera",
                "nodeId": "ns=3;s=V:0.3.505.1.22",
                "datatypeName": "Boolean"
            },
            {
                "name": "Wawi_A",
                "nodeId": "ns=3;s=V:0.3.505.1.17",
                "datatypeName": "Boolean"
            },
            {
                "name": "Test_Org",
                "nodeId": "ns=3;s=V:0.3.505.1.24",
                "datatypeName": "Boolean"
            }
        ],
        "x": 740,
        "y": 480,
        "wires": [
            [
                "13bb9b6e8520acd9"
            ]
        ]
    },
    {
        "id": "a59f0b3be0b333fd",
        "type": "ui_template",
        "z": "07159a452267ca75",
        "group": "bf790338.61cc2",
        "name": "Webpagina EW",
        "order": 0,
        "width": 0,
        "height": 0,
        "format": "<div ng-bind-html=\"msg.payload\" height=\"500\" style=\"height: 350px;\"></div>",
        "storeOutMessages": false,
        "fwdInMessages": true,
        "resendOnRefresh": false,
        "templateScope": "local",
        "x": 1480,
        "y": 480,
        "wires": [
            []
        ]
    },
    {
        "id": "7211c248c851fb68",
        "type": "subflow:5408424ef8ae249d",
        "z": "07159a452267ca75",
        "name": "",
        "env": [],
        "x": 1200,
        "y": 480,
        "wires": [
            [
                "a59f0b3be0b333fd"
            ],
            []
        ]
    },
    {
        "id": "13bb9b6e8520acd9",
        "type": "OPCUA-IIoT-Listener",
        "z": "07159a452267ca75",
        "connector": "",
        "action": "subscribe",
        "queueSize": "10",
        "name": "",
        "topic": "",
        "justValue": true,
        "useGroupItems": false,
        "showStatusActivities": true,
        "showErrors": true,
        "x": 957,
        "y": 480,
        "wires": [
            [
                "7211c248c851fb68"
            ]
        ]
    },
    {
        "id": "bf790338.61cc2",
        "type": "ui_group",
        "name": "Zone Eindwals",
        "tab": "e1314aed.555798",
        "order": 2,
        "disp": true,
        "width": "10",
        "collapse": false
    },
    {
        "id": "e1314aed.555798",
        "type": "ui_tab",
        "name": "IBA Capture HMI",
        "icon": "dashboard",
        "order": 2,
        "disabled": false,
        "hidden": false
    }
]

```

---

<div class="post-metadata">

### Author: ![Sean-McG](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/sean-mcg/32/54677_2.png) [@Sean-McG](https://discourse.nodered.org/u/Sean-McG)
#### Post date: [7 May 2025 17:03 UTC](https://discourse.nodered.org/t/dashboard-not-keeping-my-data/96943/2 "2025-05-07T17:03:28Z")

</div>

Try amending your ui templates like this -

![image](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/1/6/168da1a812b39c5dbced05842b93bf85c9322647.png)

---

<div class="post-metadata">

### Author: ![ArcelorMan](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/arcelorman/32/99548_2.png) [@ArcelorMan](https://discourse.nodered.org/u/ArcelorMan)
#### Post date: [8 May 2025 06:55 UTC](https://discourse.nodered.org/t/dashboard-not-keeping-my-data/96943/3 "2025-05-08T06:55:12Z")

</div>

Apologies, i had already fixed this, you are right.  
There was a visual bug where Node Red showed the button to refresh as UNTICKED on all of my nodes. Yet, on some of them, it was enabled by default, without visually showing.

I found this out by comparing the exported json between a working and a non working node:

 ![image](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/6/3/63a47b971928ed88c88fb965618d4f8b0ec6fe4f.png)  
As you can see, on a non working node it was set to false.  
On a working node however, it was NOT set to true. It just was not there at all, defaulting it to true.

---

<div class="post-metadata">

### Author: ![system](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/1X/d073cd938eafa2e558d7c2cd59003b3ef4963033.png) [@system](https://discourse.nodered.org/u/system)
#### Post date: [22 May 2025 06:55 UTC](https://discourse.nodered.org/t/dashboard-not-keeping-my-data/96943/4 "2025-05-22T06:55:18Z")

</div>

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.
