feat(dashboard): split basin charts by unit + add y-axis labels to all charts
Some checks failed
CI / lint-and-test (push) Has been cancelled

Flow: m³/h, Power: kW, Basin Level: m, Basin Fill: % (0-100 fixed).
Level and fill in separate chart groups with their own gauges.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
znetsixe
2026-04-14 13:19:32 +02:00
parent b693e0b90c
commit c8f149e204
2 changed files with 233 additions and 63 deletions

View File

@@ -1355,9 +1355,9 @@
"visible": true
},
{
"id": "ui_grp_trend_short_basin",
"id": "ui_grp_trend_short_basin_level",
"type": "ui-group",
"name": "Basin (10 min)",
"name": "Basin Level (10 min)",
"page": "ui_page_short_trends",
"width": "12",
"height": "1",
@@ -1368,6 +1368,20 @@
"disabled": false,
"visible": true
},
{
"id": "ui_grp_trend_short_basin_fill",
"type": "ui-group",
"name": "Basin Fill (10 min)",
"page": "ui_page_short_trends",
"width": "12",
"height": "1",
"order": 4,
"showTitle": true,
"className": "",
"groupType": "default",
"disabled": false,
"visible": true
},
{
"id": "ui_grp_trend_long_flow",
"type": "ui-group",
@@ -1397,9 +1411,9 @@
"visible": true
},
{
"id": "ui_grp_trend_long_basin",
"id": "ui_grp_trend_long_basin_level",
"type": "ui-group",
"name": "Basin (1 hour)",
"name": "Basin Level (1 hour)",
"page": "ui_page_long_trends",
"width": "12",
"height": "1",
@@ -1410,6 +1424,20 @@
"disabled": false,
"visible": true
},
{
"id": "ui_grp_trend_long_basin_fill",
"type": "ui-group",
"name": "Basin Fill (1 hour)",
"page": "ui_page_long_trends",
"width": "12",
"height": "1",
"order": 4,
"showTitle": true,
"className": "",
"groupType": "default",
"disabled": false,
"visible": true
},
{
"id": "c_ui_title",
"type": "comment",
@@ -1899,20 +1927,20 @@
"ui_ps_qin"
],
[
"trend_short_basin",
"trend_long_basin",
"trend_short_fill",
"trend_long_fill",
"gauge_ps_fill",
"gauge_ps_fill_long"
],
[
"trend_short_basin",
"trend_long_basin",
"trend_short_level",
"trend_long_level",
"gauge_ps_level",
"gauge_ps_level_long"
],
[
"trend_short_basin",
"trend_long_basin"
"trend_short_level",
"trend_long_level"
]
]
},
@@ -3170,7 +3198,7 @@
"z": "tab_ui",
"group": "ui_grp_trend_short_flow",
"name": "Flow per pump \u2014 10 min",
"label": "Flow per pump (m\u00b3/h)",
"label": "Flow per pump",
"order": 1,
"chartType": "line",
"interpolation": "linear",
@@ -3184,7 +3212,7 @@
"xAxisFormatType": "auto",
"xmin": "",
"xmax": "",
"yAxisLabel": "",
"yAxisLabel": "m\u00b3/h",
"yAxisProperty": "payload",
"yAxisPropertyType": "msg",
"ymin": "",
@@ -3232,7 +3260,7 @@
"z": "tab_ui",
"group": "ui_grp_trend_short_power",
"name": "Power per pump \u2014 10 min",
"label": "Power per pump (kW)",
"label": "Power per pump",
"order": 1,
"chartType": "line",
"interpolation": "linear",
@@ -3246,7 +3274,7 @@
"xAxisFormatType": "auto",
"xmin": "",
"xmax": "",
"yAxisLabel": "",
"yAxisLabel": "kW",
"yAxisProperty": "payload",
"yAxisPropertyType": "msg",
"ymin": "",
@@ -3294,7 +3322,7 @@
"z": "tab_ui",
"group": "ui_grp_trend_long_flow",
"name": "Flow per pump \u2014 1 hour",
"label": "Flow per pump (m\u00b3/h)",
"label": "Flow per pump",
"order": 1,
"chartType": "line",
"interpolation": "linear",
@@ -3308,7 +3336,7 @@
"xAxisFormatType": "auto",
"xmin": "",
"xmax": "",
"yAxisLabel": "",
"yAxisLabel": "m\u00b3/h",
"yAxisProperty": "payload",
"yAxisPropertyType": "msg",
"ymin": "",
@@ -3356,7 +3384,7 @@
"z": "tab_ui",
"group": "ui_grp_trend_long_power",
"name": "Power per pump \u2014 1 hour",
"label": "Power per pump (kW)",
"label": "Power per pump",
"order": 1,
"chartType": "line",
"interpolation": "linear",
@@ -3370,7 +3398,7 @@
"xAxisFormatType": "auto",
"xmin": "",
"xmax": "",
"yAxisLabel": "",
"yAxisLabel": "kW",
"yAxisProperty": "payload",
"yAxisPropertyType": "msg",
"ymin": "",
@@ -3413,12 +3441,12 @@
]
},
{
"id": "trend_short_basin",
"id": "trend_short_level",
"type": "ui-chart",
"z": "tab_ui",
"group": "ui_grp_trend_short_basin",
"name": "Basin \u2014 10 min",
"label": "Basin metrics",
"group": "ui_grp_trend_short_basin_level",
"name": "Basin Level \u2014 10 min",
"label": "Basin Level + Net Flow",
"order": 1,
"chartType": "line",
"interpolation": "linear",
@@ -3432,7 +3460,7 @@
"xAxisFormatType": "auto",
"xmin": "",
"xmax": "",
"yAxisLabel": "",
"yAxisLabel": "m",
"yAxisProperty": "payload",
"yAxisPropertyType": "msg",
"ymin": "",
@@ -3474,11 +3502,73 @@
[]
]
},
{
"id": "trend_short_fill",
"type": "ui-chart",
"z": "tab_ui",
"group": "ui_grp_trend_short_basin_fill",
"name": "Basin Fill \u2014 10 min",
"label": "Basin Fill",
"order": 1,
"chartType": "line",
"interpolation": "linear",
"category": "topic",
"categoryType": "msg",
"xAxisLabel": "",
"xAxisType": "time",
"xAxisProperty": "",
"xAxisPropertyType": "timestamp",
"xAxisFormat": "",
"xAxisFormatType": "auto",
"xmin": "",
"xmax": "",
"yAxisLabel": "%",
"yAxisProperty": "payload",
"yAxisPropertyType": "msg",
"ymin": "0",
"ymax": "100",
"removeOlder": "10",
"removeOlderUnit": "60",
"removeOlderPoints": "300",
"action": "append",
"stackSeries": false,
"pointShape": "circle",
"pointRadius": 4,
"showLegend": true,
"bins": 10,
"colors": [
"#0095FF",
"#FF0000",
"#FF7F0E",
"#2CA02C",
"#A347E1",
"#D62728",
"#FF9896",
"#9467BD",
"#C5B0D5"
],
"textColor": [
"#666666"
],
"textColorDefault": true,
"gridColor": [
"#e5e5e5"
],
"gridColorDefault": true,
"width": 8,
"height": 6,
"className": "",
"x": 900,
"y": 2720,
"wires": [
[]
]
},
{
"id": "gauge_ps_level",
"type": "ui-gauge",
"z": "tab_ui",
"group": "ui_grp_trend_short_basin",
"group": "ui_grp_trend_short_basin_level",
"name": "Basin level gauge (short)",
"gtype": "gauge-tank",
"gstyle": "Rounded",
@@ -3525,7 +3615,7 @@
"id": "gauge_ps_fill",
"type": "ui-gauge",
"z": "tab_ui",
"group": "ui_grp_trend_short_basin",
"group": "ui_grp_trend_short_basin_fill",
"name": "Basin fill gauge (short)",
"gtype": "gauge-34",
"gstyle": "Rounded",
@@ -3569,12 +3659,12 @@
"wires": []
},
{
"id": "trend_long_basin",
"id": "trend_long_level",
"type": "ui-chart",
"z": "tab_ui",
"group": "ui_grp_trend_long_basin",
"name": "Basin \u2014 1 hour",
"label": "Basin metrics",
"group": "ui_grp_trend_long_basin_level",
"name": "Basin Level \u2014 1 hour",
"label": "Basin Level + Net Flow",
"order": 1,
"chartType": "line",
"interpolation": "linear",
@@ -3588,7 +3678,7 @@
"xAxisFormatType": "auto",
"xmin": "",
"xmax": "",
"yAxisLabel": "",
"yAxisLabel": "m",
"yAxisProperty": "payload",
"yAxisPropertyType": "msg",
"ymin": "",
@@ -3630,11 +3720,73 @@
[]
]
},
{
"id": "trend_long_fill",
"type": "ui-chart",
"z": "tab_ui",
"group": "ui_grp_trend_long_basin_fill",
"name": "Basin Fill \u2014 1 hour",
"label": "Basin Fill",
"order": 1,
"chartType": "line",
"interpolation": "linear",
"category": "topic",
"categoryType": "msg",
"xAxisLabel": "",
"xAxisType": "time",
"xAxisProperty": "",
"xAxisPropertyType": "timestamp",
"xAxisFormat": "",
"xAxisFormatType": "auto",
"xmin": "",
"xmax": "",
"yAxisLabel": "%",
"yAxisProperty": "payload",
"yAxisPropertyType": "msg",
"ymin": "0",
"ymax": "100",
"removeOlder": "60",
"removeOlderUnit": "60",
"removeOlderPoints": "1800",
"action": "append",
"stackSeries": false,
"pointShape": "circle",
"pointRadius": 4,
"showLegend": true,
"bins": 10,
"colors": [
"#0095FF",
"#FF0000",
"#FF7F0E",
"#2CA02C",
"#A347E1",
"#D62728",
"#FF9896",
"#9467BD",
"#C5B0D5"
],
"textColor": [
"#666666"
],
"textColorDefault": true,
"gridColor": [
"#e5e5e5"
],
"gridColorDefault": true,
"width": 8,
"height": 6,
"className": "",
"x": 900,
"y": 2900,
"wires": [
[]
]
},
{
"id": "gauge_ps_level_long",
"type": "ui-gauge",
"z": "tab_ui",
"group": "ui_grp_trend_long_basin",
"group": "ui_grp_trend_long_basin_level",
"name": "Basin level gauge (long)",
"gtype": "gauge-tank",
"gstyle": "Rounded",
@@ -3681,7 +3833,7 @@
"id": "gauge_ps_fill_long",
"type": "ui-gauge",
"z": "tab_ui",
"group": "ui_grp_trend_long_basin",
"group": "ui_grp_trend_long_basin_fill",
"name": "Basin fill gauge (long)",
"gtype": "gauge-34",
"gstyle": "Rounded",