From 6afe508af33b5820ec0e1087316f112958184d3a Mon Sep 17 00:00:00 2001 From: trancen Date: Tue, 3 Feb 2026 17:43:10 +0000 Subject: [PATCH] feat: Add minimize button to Lightning stats panel MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Added minimize/maximize functionality to Lightning Activity panel: - Click header or toggle button (▼/▶) to minimize/maximize - State persists in localStorage (lightning-stats-minimized) - Minimized state restores on page reload - Consistent with WSPR and Gray Line plugins All control panels now have minimize functionality: - WSPR: Filter, Stats, Legend, Chart panels ✓ - Gray Line: Control panel ✓ - Lightning: Stats panel ✓ (NEW) - Earthquakes: No control panels (markers only) - Aurora: No control panels (overlay only) - Weather Radar: No control panels (tile layer only) --- src/plugins/layers/useLightning.js | 45 ++++++++++++++++++++++-------- 1 file changed, 33 insertions(+), 12 deletions(-) diff --git a/src/plugins/layers/useLightning.js b/src/plugins/layers/useLightning.js index bfe81a8..1f5adbe 100644 --- a/src/plugins/layers/useLightning.js +++ b/src/plugins/layers/useLightning.js @@ -274,24 +274,45 @@ export function useLayer({ enabled = false, opacity = 0.9, map = null }) { div.innerHTML = `
-
+
⚡ Lightning Activity +
- - - - - - - - -
Fresh (<1 min):${fresh}
Recent (<5 min):${recent}
Total (30 min):${total}
Avg Intensity:${avgIntensity.toFixed(1)} kA
Positive:+${positiveStrikes}
Negative:-${negativeStrikes}
-
- Updates every 30s +
+ + + + + + + + +
Fresh (<1 min):${fresh}
Recent (<5 min):${recent}
Total (30 min):${total}
Avg Intensity:${avgIntensity.toFixed(1)} kA
Positive:+${positiveStrikes}
Negative:-${negativeStrikes}
+
+ Updates every 30s +
`; + // Add minimize/maximize functionality + const header = div.querySelector('.lightning-stats-header'); + const content = div.querySelector('.lightning-stats-content'); + const toggle = div.querySelector('.lightning-stats-toggle'); + + const minimized = localStorage.getItem('lightning-stats-minimized') === 'true'; + if (minimized) { + content.style.display = 'none'; + toggle.textContent = '▶'; + } + + header.addEventListener('click', () => { + const isMinimized = content.style.display === 'none'; + content.style.display = isMinimized ? 'block' : 'none'; + toggle.textContent = isMinimized ? '▼' : '▶'; + localStorage.setItem('lightning-stats-minimized', !isMinimized); + }); + // Prevent map interaction on control L.DomEvent.disableClickPropagation(div); L.DomEvent.disableScrollPropagation(div);