From c2f6e7150917209edf8d9bbc2fdf6bbb0fe6b94e Mon Sep 17 00:00:00 2001 From: trancen Date: Tue, 3 Feb 2026 16:23:59 +0000 Subject: [PATCH] feat: WSPR v1.4.3 - Add separate opacity controls for paths and heatmap MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ✨ New Feature: - Added two independent opacity sliders in filter panel * Path Opacity: Controls propagation paths and station markers (10-100%) * Heatmap Opacity: Controls density heatmap circles (10-100%) - Users can now fine-tune path visibility without affecting heatmap - Each opacity slider has live value display (shows percentage) 🎨 UI Improvements: - Added visual separators between control groups - Path opacity slider with live update (shows 70% default) - Heatmap opacity slider with live update (shows 60% default) - Clean organization: Filters → Opacity → Toggles 🔧 Technical Changes: - Added pathOpacity state (default: 0.7) - Added heatmapOpacity state (default: 0.6) - Removed global opacity prop dependency - Path/marker rendering uses pathOpacity - Heatmap circles use heatmapOpacity - Event listeners for both opacity sliders - Updated filter return object to include both opacities - Removed old opacity update useEffect (no longer needed) 📊 Benefits: - Better control over layer visibility - Can dim paths while keeping heatmap visible - Can dim heatmap while keeping paths clear - No more conflict between path and heatmap opacity - Smooth real-time opacity updates Version: 1.4.2 → 1.4.3 --- src/plugins/layers/useWSPR.js | 74 ++++++++++++++++++++++------------- 1 file changed, 46 insertions(+), 28 deletions(-) diff --git a/src/plugins/layers/useWSPR.js b/src/plugins/layers/useWSPR.js index 3bd3117..2c675aa 100644 --- a/src/plugins/layers/useWSPR.js +++ b/src/plugins/layers/useWSPR.js @@ -1,7 +1,7 @@ import { useState, useEffect, useRef } from 'react'; /** - * WSPR Propagation Heatmap Plugin v1.4.2 + * WSPR Propagation Heatmap Plugin v1.4.3 * * Advanced Features: * - Great circle curved path lines between transmitters and receivers @@ -19,6 +19,7 @@ import { useState, useEffect, useRef } from 'react'; * - Proper cleanup on disable (v1.4.1) * - Fixed duplicate control creation (v1.4.2) * - Performance optimizations (v1.4.2) + * - Separate opacity controls for paths and heatmap (v1.4.3) * - Statistics display (total stations, spots) * - Signal strength legend * @@ -34,7 +35,7 @@ export const metadata = { category: 'propagation', defaultEnabled: false, defaultOpacity: 0.7, - version: '1.4.2' + version: '1.4.3' }; // Convert grid square to lat/lon @@ -264,6 +265,10 @@ export function useLayer({ enabled = false, opacity = 0.7, map = null }) { const [showAnimation, setShowAnimation] = useState(true); const [showHeatmap, setShowHeatmap] = useState(false); + // v1.4.3 - Separate opacity controls + const [pathOpacity, setPathOpacity] = useState(0.7); + const [heatmapOpacity, setHeatmapOpacity] = useState(0.6); + // UI Controls (refs to avoid recreation) const legendControlRef = useRef(null); const statsControlRef = useRef(null); @@ -358,7 +363,19 @@ export function useLayer({ enabled = false, opacity = 0.7, map = null }) { style="width: 100%;" /> +
+ + +
+
+ + +
+ +