From 97089a3b6fdcc390642b513c97b5474f682ae7fa Mon Sep 17 00:00:00 2001 From: Pratik Mankawde <3397372+pratikmankawde@users.noreply.github.com> Date: Fri, 7 Aug 2026 12:54:25 +0100 Subject: [PATCH] fix(telemetry): stop repeating panels stranding their neighbours A repeating panel expands into one copy per network at view time and, with maxPerRow=2, claims the whole row. The non-repeating panel paired beside it was pushed to the next line but kept its stored x=12, so it rendered on the right against an empty gap. Two changes to how the layout is planned: - a repeating panel gets a row to itself. It keeps w=12, so its copies still tile two across inside that row. - single-value panels are grouped to the top of each row section, so the charts that follow pair with each other instead of being split up by an interleaved repeat. Without this the gaps just become wasted half-rows. Verified per dashboard: no panel lost, every targets block byte-identical, ids 1..N, no overlaps, and no row left with a gap on its left. --- .../grafana/dashboards/consensus-health.json | 24 +++++------ .../grafana/dashboards/ledger-data-sync.json | 42 +++++++++---------- .../grafana/dashboards/ledger-operations.json | 22 +++++----- .../grafana/dashboards/network-traffic.json | 8 ++-- .../grafana/dashboards/node-health.json | 38 ++++++++--------- .../grafana/dashboards/rpc-pathfinding.json | 20 ++++----- .../grafana/dashboards/rpc-performance.json | 30 ++++++------- .../dashboards/transaction-overview.json | 42 +++++++++---------- 8 files changed, 113 insertions(+), 113 deletions(-) diff --git a/docker/telemetry/grafana/dashboards/consensus-health.json b/docker/telemetry/grafana/dashboards/consensus-health.json index dac6bf024d..9005c76496 100644 --- a/docker/telemetry/grafana/dashboards/consensus-health.json +++ b/docker/telemetry/grafana/dashboards/consensus-health.json @@ -131,8 +131,8 @@ "gridPos": { "h": 10, "w": 12, - "x": 12, - "y": 12 + "x": 0, + "y": 22 }, "options": { "tooltip": { @@ -176,7 +176,7 @@ "gridPos": { "h": 10, "w": 12, - "x": 0, + "x": 12, "y": 22 }, "options": { @@ -221,8 +221,8 @@ "gridPos": { "h": 10, "w": 12, - "x": 12, - "y": 22 + "x": 0, + "y": 32 }, "targets": [ { @@ -274,7 +274,7 @@ "gridPos": { "h": 10, "w": 12, - "x": 0, + "x": 12, "y": 32 }, "targets": [ @@ -319,8 +319,8 @@ "gridPos": { "h": 10, "w": 12, - "x": 12, - "y": 32 + "x": 0, + "y": 42 }, "options": { "tooltip": { @@ -364,7 +364,7 @@ "gridPos": { "h": 10, "w": 12, - "x": 0, + "x": 12, "y": 42 }, "options": { @@ -417,8 +417,8 @@ "gridPos": { "h": 10, "w": 12, - "x": 12, - "y": 42 + "x": 0, + "y": 52 }, "options": { "tooltip": { @@ -470,7 +470,7 @@ "gridPos": { "h": 10, "w": 12, - "x": 0, + "x": 12, "y": 52 }, "options": { diff --git a/docker/telemetry/grafana/dashboards/ledger-data-sync.json b/docker/telemetry/grafana/dashboards/ledger-data-sync.json index 3460d6d4f7..86b41bd488 100644 --- a/docker/telemetry/grafana/dashboards/ledger-data-sync.json +++ b/docker/telemetry/grafana/dashboards/ledger-data-sync.json @@ -77,8 +77,8 @@ "gridPos": { "h": 10, "w": 12, - "x": 12, - "y": 0 + "x": 0, + "y": 10 }, "options": { "tooltip": { @@ -127,7 +127,7 @@ "gridPos": { "h": 10, "w": 12, - "x": 0, + "x": 12, "y": 10 }, "options": { @@ -189,8 +189,8 @@ "gridPos": { "h": 10, "w": 12, - "x": 12, - "y": 10 + "x": 0, + "y": 20 }, "options": { "tooltip": { @@ -239,7 +239,7 @@ "gridPos": { "h": 10, "w": 12, - "x": 0, + "x": 12, "y": 20 }, "options": { @@ -289,8 +289,8 @@ "gridPos": { "h": 10, "w": 12, - "x": 12, - "y": 20 + "x": 0, + "y": 30 }, "options": { "tooltip": { @@ -351,7 +351,7 @@ "gridPos": { "h": 10, "w": 12, - "x": 0, + "x": 12, "y": 30 }, "options": { @@ -401,8 +401,8 @@ "gridPos": { "h": 10, "w": 12, - "x": 12, - "y": 30 + "x": 0, + "y": 40 }, "options": { "tooltip": { @@ -451,7 +451,7 @@ "gridPos": { "h": 10, "w": 12, - "x": 0, + "x": 12, "y": 40 }, "options": { @@ -513,8 +513,8 @@ "gridPos": { "h": 10, "w": 12, - "x": 12, - "y": 40 + "x": 0, + "y": 50 }, "options": { "tooltip": { @@ -563,7 +563,7 @@ "gridPos": { "h": 10, "w": 12, - "x": 0, + "x": 12, "y": 50 }, "options": { @@ -607,8 +607,8 @@ "gridPos": { "h": 10, "w": 12, - "x": 12, - "y": 50 + "x": 0, + "y": 60 }, "options": { "tooltip": { @@ -657,7 +657,7 @@ "gridPos": { "h": 10, "w": 12, - "x": 0, + "x": 12, "y": 60 }, "options": { @@ -701,8 +701,8 @@ "gridPos": { "h": 10, "w": 12, - "x": 12, - "y": 60 + "x": 0, + "y": 70 }, "options": { "tooltip": { @@ -757,7 +757,7 @@ "gridPos": { "h": 10, "w": 12, - "x": 0, + "x": 12, "y": 70 }, "options": { diff --git a/docker/telemetry/grafana/dashboards/ledger-operations.json b/docker/telemetry/grafana/dashboards/ledger-operations.json index 3eca89484a..f8b4b72e90 100644 --- a/docker/telemetry/grafana/dashboards/ledger-operations.json +++ b/docker/telemetry/grafana/dashboards/ledger-operations.json @@ -65,8 +65,8 @@ "gridPos": { "h": 10, "w": 12, - "x": 12, - "y": 1 + "x": 0, + "y": 11 }, "options": { "tooltip": { @@ -103,7 +103,7 @@ "h": 10, "w": 12, "x": 0, - "y": 11 + "y": 21 }, "options": { "tooltip": { @@ -156,7 +156,7 @@ "h": 10, "w": 12, "x": 12, - "y": 11 + "y": 21 }, "options": { "calculate": false, @@ -207,7 +207,7 @@ "h": 1, "w": 24, "x": 0, - "y": 21 + "y": 31 }, "collapsed": false, "panels": [], @@ -221,7 +221,7 @@ "h": 10, "w": 12, "x": 0, - "y": 22 + "y": 32 }, "options": { "tooltip": { @@ -274,7 +274,7 @@ "h": 10, "w": 12, "x": 12, - "y": 22 + "y": 32 }, "options": { "tooltip": { @@ -318,7 +318,7 @@ "h": 1, "w": 24, "x": 0, - "y": 32 + "y": 42 }, "collapsed": false, "panels": [], @@ -332,7 +332,7 @@ "h": 10, "w": 12, "x": 0, - "y": 33 + "y": 43 }, "options": { "tooltip": { @@ -368,8 +368,8 @@ "gridPos": { "h": 10, "w": 12, - "x": 12, - "y": 33 + "x": 0, + "y": 53 }, "options": { "tooltip": { diff --git a/docker/telemetry/grafana/dashboards/network-traffic.json b/docker/telemetry/grafana/dashboards/network-traffic.json index 15f4b80950..df704d7bc0 100644 --- a/docker/telemetry/grafana/dashboards/network-traffic.json +++ b/docker/telemetry/grafana/dashboards/network-traffic.json @@ -719,8 +719,8 @@ "gridPos": { "h": 10, "w": 12, - "x": 12, - "y": 42 + "x": 0, + "y": 52 }, "options": { "tooltip": { @@ -793,7 +793,7 @@ "h": 1, "w": 24, "x": 0, - "y": 52 + "y": 62 }, "collapsed": false, "panels": [], @@ -807,7 +807,7 @@ "h": 10, "w": 12, "x": 0, - "y": 53 + "y": 63 }, "options": { "tooltip": { diff --git a/docker/telemetry/grafana/dashboards/node-health.json b/docker/telemetry/grafana/dashboards/node-health.json index 99bc8276e9..00e04b9b84 100644 --- a/docker/telemetry/grafana/dashboards/node-health.json +++ b/docker/telemetry/grafana/dashboards/node-health.json @@ -68,8 +68,8 @@ "gridPos": { "h": 10, "w": 12, - "x": 12, - "y": 0 + "x": 0, + "y": 10 }, "options": { "tooltip": { @@ -121,7 +121,7 @@ "h": 10, "w": 12, "x": 0, - "y": 10 + "y": 20 }, "options": { "tooltip": { @@ -156,8 +156,8 @@ "gridPos": { "h": 10, "w": 12, - "x": 12, - "y": 10 + "x": 0, + "y": 30 }, "options": { "tooltip": { @@ -205,7 +205,7 @@ "h": 10, "w": 12, "x": 0, - "y": 20 + "y": 40 }, "options": { "tooltip": { @@ -280,7 +280,7 @@ "h": 10, "w": 12, "x": 12, - "y": 20 + "y": 40 }, "options": { "tooltip": { @@ -352,7 +352,7 @@ "h": 10, "w": 12, "x": 0, - "y": 30 + "y": 50 }, "options": { "tooltip": { @@ -403,7 +403,7 @@ "h": 10, "w": 12, "x": 12, - "y": 30 + "y": 50 }, "options": { "tooltip": { @@ -447,7 +447,7 @@ "h": 1, "w": 24, "x": 0, - "y": 40 + "y": 60 }, "collapsed": false, "panels": [], @@ -461,7 +461,7 @@ "h": 10, "w": 12, "x": 0, - "y": 41 + "y": 61 }, "options": { "tooltip": { @@ -514,8 +514,8 @@ "gridPos": { "h": 10, "w": 12, - "x": 12, - "y": 41 + "x": 0, + "y": 71 }, "options": { "tooltip": { @@ -567,7 +567,7 @@ "h": 10, "w": 12, "x": 0, - "y": 51 + "y": 81 }, "options": { "tooltip": { @@ -681,7 +681,7 @@ "h": 10, "w": 12, "x": 12, - "y": 51 + "y": 81 }, "options": { "tooltip": { @@ -795,7 +795,7 @@ "h": 10, "w": 12, "x": 0, - "y": 61 + "y": 91 }, "options": { "tooltip": { @@ -839,7 +839,7 @@ "h": 10, "w": 12, "x": 12, - "y": 61 + "y": 91 }, "options": { "tooltip": { @@ -890,7 +890,7 @@ "h": 10, "w": 12, "x": 0, - "y": 71 + "y": 101 }, "options": { "tooltip": { @@ -934,7 +934,7 @@ "h": 10, "w": 12, "x": 12, - "y": 71 + "y": 101 }, "options": { "tooltip": { diff --git a/docker/telemetry/grafana/dashboards/rpc-pathfinding.json b/docker/telemetry/grafana/dashboards/rpc-pathfinding.json index e436f3d888..eb97770086 100644 --- a/docker/telemetry/grafana/dashboards/rpc-pathfinding.json +++ b/docker/telemetry/grafana/dashboards/rpc-pathfinding.json @@ -307,8 +307,8 @@ "gridPos": { "h": 10, "w": 12, - "x": 12, - "y": 32 + "x": 0, + "y": 42 }, "options": { "tooltip": { @@ -361,7 +361,7 @@ "h": 10, "w": 12, "x": 0, - "y": 42 + "y": 52 }, "options": { "tooltip": { @@ -414,7 +414,7 @@ "h": 10, "w": 12, "x": 12, - "y": 42 + "y": 52 }, "options": { "tooltip": { @@ -466,7 +466,7 @@ "h": 1, "w": 24, "x": 0, - "y": 52 + "y": 62 }, "collapsed": false, "panels": [], @@ -480,7 +480,7 @@ "h": 10, "w": 12, "x": 0, - "y": 53 + "y": 63 }, "options": { "tooltip": { @@ -525,7 +525,7 @@ "h": 10, "w": 12, "x": 12, - "y": 53 + "y": 63 }, "options": { "tooltip": { @@ -570,7 +570,7 @@ "h": 10, "w": 12, "x": 0, - "y": 63 + "y": 73 }, "options": { "tooltip": { @@ -615,7 +615,7 @@ "h": 10, "w": 12, "x": 12, - "y": 63 + "y": 73 }, "options": { "tooltip": { @@ -668,7 +668,7 @@ "h": 10, "w": 12, "x": 0, - "y": 73 + "y": 83 }, "options": { "tooltip": { diff --git a/docker/telemetry/grafana/dashboards/rpc-performance.json b/docker/telemetry/grafana/dashboards/rpc-performance.json index cc072100ee..5808d544e9 100644 --- a/docker/telemetry/grafana/dashboards/rpc-performance.json +++ b/docker/telemetry/grafana/dashboards/rpc-performance.json @@ -68,8 +68,8 @@ "gridPos": { "h": 10, "w": 12, - "x": 12, - "y": 0 + "x": 0, + "y": 10 }, "options": { "tooltip": { @@ -106,7 +106,7 @@ "h": 10, "w": 12, "x": 0, - "y": 10 + "y": 20 }, "options": { "tooltip": { @@ -142,8 +142,8 @@ "gridPos": { "h": 10, "w": 12, - "x": 12, - "y": 10 + "x": 0, + "y": 30 }, "options": { "tooltip": { @@ -187,8 +187,8 @@ "gridPos": { "h": 10, "w": 12, - "x": 0, - "y": 20 + "x": 12, + "y": 30 }, "options": { "tooltip": { @@ -232,8 +232,8 @@ "gridPos": { "h": 10, "w": 12, - "x": 12, - "y": 20 + "x": 0, + "y": 40 }, "options": { "calculate": false, @@ -284,8 +284,8 @@ "gridPos": { "h": 10, "w": 12, - "x": 0, - "y": 30 + "x": 12, + "y": 40 }, "options": { "tooltip": { @@ -337,8 +337,8 @@ "gridPos": { "h": 10, "w": 12, - "x": 12, - "y": 30 + "x": 0, + "y": 50 }, "options": { "tooltip": { @@ -391,7 +391,7 @@ "h": 10, "w": 24, "x": 0, - "y": 40 + "y": 60 }, "options": { "tooltip": { @@ -441,7 +441,7 @@ "h": 10, "w": 12, "x": 0, - "y": 50 + "y": 70 }, "options": { "tooltip": { diff --git a/docker/telemetry/grafana/dashboards/transaction-overview.json b/docker/telemetry/grafana/dashboards/transaction-overview.json index 33c0a3509e..7ac12a91bf 100644 --- a/docker/telemetry/grafana/dashboards/transaction-overview.json +++ b/docker/telemetry/grafana/dashboards/transaction-overview.json @@ -69,8 +69,8 @@ "gridPos": { "h": 10, "w": 12, - "x": 12, - "y": 0 + "x": 0, + "y": 10 }, "options": { "tooltip": { @@ -123,7 +123,7 @@ "h": 10, "w": 24, "x": 0, - "y": 10 + "y": 20 }, "options": { "tooltip": { @@ -181,7 +181,7 @@ "h": 10, "w": 12, "x": 0, - "y": 20 + "y": 30 }, "options": { "tooltip": { @@ -215,7 +215,7 @@ "h": 10, "w": 12, "x": 12, - "y": 20 + "y": 30 }, "options": { "tooltip": { @@ -260,7 +260,7 @@ "h": 10, "w": 12, "x": 0, - "y": 30 + "y": 40 }, "options": { "calculate": false, @@ -312,7 +312,7 @@ "h": 10, "w": 12, "x": 12, - "y": 30 + "y": 40 }, "options": { "tooltip": { @@ -364,7 +364,7 @@ "h": 1, "w": 24, "x": 0, - "y": 40 + "y": 50 }, "collapsed": false, "panels": [], @@ -378,7 +378,7 @@ "h": 10, "w": 24, "x": 0, - "y": 41 + "y": 51 }, "options": { "tooltip": { @@ -428,7 +428,7 @@ "h": 10, "w": 24, "x": 0, - "y": 51 + "y": 61 }, "options": { "tooltip": { @@ -478,7 +478,7 @@ "h": 10, "w": 12, "x": 0, - "y": 61 + "y": 71 }, "options": { "mergeValues": true, @@ -540,7 +540,7 @@ "h": 10, "w": 24, "x": 0, - "y": 71 + "y": 81 }, "options": { "tooltip": { @@ -589,7 +589,7 @@ "h": 1, "w": 24, "x": 0, - "y": 81 + "y": 91 }, "collapsed": false, "panels": [], @@ -603,7 +603,7 @@ "h": 10, "w": 12, "x": 0, - "y": 82 + "y": 92 }, "options": { "tooltip": { @@ -648,7 +648,7 @@ "h": 10, "w": 12, "x": 12, - "y": 82 + "y": 92 }, "options": { "tooltip": { @@ -701,7 +701,7 @@ "h": 10, "w": 12, "x": 0, - "y": 92 + "y": 102 }, "options": { "tooltip": { @@ -746,7 +746,7 @@ "h": 10, "w": 24, "x": 0, - "y": 102 + "y": 112 }, "options": { "tooltip": { @@ -795,7 +795,7 @@ "h": 1, "w": 24, "x": 0, - "y": 112 + "y": 122 }, "collapsed": false, "panels": [], @@ -809,7 +809,7 @@ "h": 10, "w": 24, "x": 0, - "y": 113 + "y": 123 }, "options": { "tooltip": { @@ -859,7 +859,7 @@ "h": 10, "w": 24, "x": 0, - "y": 123 + "y": 133 }, "options": { "tooltip": { @@ -909,7 +909,7 @@ "h": 10, "w": 24, "x": 0, - "y": 133 + "y": 143 }, "options": { "tooltip": {