From d0b597ff49f33dbdf513c5fc6fd995edc65c80cf Mon Sep 17 00:00:00 2001 From: efiten Date: Sat, 4 Apr 2026 21:33:30 +0200 Subject: [PATCH] feat: make Network Overview collapsible, collapsed by default Co-Authored-By: Claude Sonnet 4.6 --- public/analytics.js | 60 ++++++++++++++++++++++++++++----------------- 1 file changed, 37 insertions(+), 23 deletions(-) diff --git a/public/analytics.js b/public/analytics.js index 51e40c1..92041fa 100644 --- a/public/analytics.js +++ b/public/analytics.js @@ -2378,30 +2378,35 @@ function destroy() { _analyticsData = {}; _channelData = null; if (_ngState && _ el.innerHTML = `
-

Network Overview

- ${regionNote} -
-
-
Total nodes
-
${totalNodes.toLocaleString()}
-
- ${[1, 2, 3].map(b => ` -
-
${b}-byte prefixes
-
- ${stats[b].usedPrefixes.toLocaleString()} - / ${spaceSizes[b].toLocaleString()} -
-
- ${stats[b].collidingPrefixes === 0 - ? '✅ No collisions' - : `⚠️ ${stats[b].collidingPrefixes} prefix${stats[b].collidingPrefixes !== 1 ? 'es' : ''} collide`} -
-
`).join('')} +
+ +

Network Overview

-
- Recommendation: ${rec} prefixes — ${recDetail} - Hash size is configured per-node in firmware. Changing requires reflashing. +
@@ -2564,6 +2569,15 @@ function destroy() { _analyticsData = {}; _channelData = null; if (_ngState && _ prefixInput.addEventListener('keydown', e => { if (e.key === 'Enter') doCheck(prefixInput.value); }); genBtn.addEventListener('click', doGenerate); + // Network Overview toggle + document.getElementById('ptOverviewToggle').addEventListener('click', () => { + const body = document.getElementById('ptOverviewBody'); + const chevron = document.getElementById('ptOverviewChevron'); + const open = body.style.display === 'none'; + body.style.display = open ? '' : 'none'; + chevron.style.transform = open ? 'rotate(90deg)' : ''; + }); + // Auto-run from URL params if (initPrefix) { doCheck(initPrefix);