diff --git a/frontend/components/dashboard/ScanTerminalDashboard.tsx b/frontend/components/dashboard/ScanTerminalDashboard.tsx index 1029f811..8aa66b54 100644 --- a/frontend/components/dashboard/ScanTerminalDashboard.tsx +++ b/frontend/components/dashboard/ScanTerminalDashboard.tsx @@ -349,6 +349,8 @@ function PolyWeatherTerminal({ setSelectedCity, selectedRegionKey, setSelectedRegionKey, + visibleRegions, + toggleRegion, }: { generatedText: string; isEn: boolean; @@ -367,6 +369,8 @@ function PolyWeatherTerminal({ setSelectedCity: (city: string | null) => void; selectedRegionKey: string; setSelectedRegionKey: (key: string) => void; + visibleRegions: Set; + toggleRegion: (key: string) => void; }) { useEffect(() => { const handleKeyDown = (e: KeyboardEvent) => { @@ -629,7 +633,7 @@ function PolyWeatherTerminal({ <> {/* Region tabs */}
- {TRADING_REGIONS.map((r) => ({ + {TRADING_REGIONS.filter((r) => visibleRegions.has(r.key)).map((r) => ({ key: r.key, labelEn: r.labelEn.toUpperCase(), labelZh: r.labelZh, @@ -648,6 +652,42 @@ function PolyWeatherTerminal({ {isEn ? tab.labelEn : tab.labelZh} ))} + {/* Region selector gear */} +
+ +
+ {TRADING_REGIONS.map((r) => { + const checked = visibleRegions.has(r.key); + return ( + + ); + })} +
+
{/* Mobile layout */}
@@ -740,6 +780,26 @@ function ScanTerminalScreen() { const [selectedRegionKey, setSelectedRegionKey] = useState("east_asia"); const [localTimezoneOffsetSeconds, setLocalTimezoneOffsetSeconds] = useState(null); const [useLocalTimezoneDefault, setUseLocalTimezoneDefault] = useState(true); + const [visibleRegions, setVisibleRegions] = useState>(() => { + try { + const stored = localStorage.getItem("polyweather_visible_regions"); + if (stored) return new Set(JSON.parse(stored)); + } catch {} + return new Set(TRADING_REGIONS.map((r) => r.key)); + }); + const toggleRegion = useCallback((key: string) => { + setVisibleRegions((prev) => { + const next = new Set(prev); + if (next.has(key)) { + if (next.size <= 1) return prev; // keep at least one + next.delete(key); + } else { + next.add(key); + } + try { localStorage.setItem("polyweather_visible_regions", JSON.stringify([...next])); } catch {} + return next; + }); + }, []); useEffect(() => { let cancelled = false; @@ -907,6 +967,8 @@ function ScanTerminalScreen() { setSelectedCity={setSelectedCity} selectedRegionKey={selectedRegionKey} setSelectedRegionKey={selectRegionManually} + visibleRegions={visibleRegions} + toggleRegion={toggleRegion} /> ); }