From 931a59d893636fda9e9ffab52384262397deb026 Mon Sep 17 00:00:00 2001 From: "2569718930@qq.com" <2569718930@qq.com> Date: Mon, 25 May 2026 04:48:23 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=88=E7=AB=AF=E6=96=B0=E5=A2=9E=E5=8C=BA?= =?UTF-8?q?=E5=9F=9F=E7=AD=9B=E9=80=89=E6=A0=87=E7=AD=BE=E6=A0=8F=EF=BC=8C?= =?UTF-8?q?=E9=80=89=E4=B8=AD=E5=8C=BA=E5=9F=9F=E5=90=8E=E4=B8=8B=E6=96=B9?= =?UTF-8?q?=E6=89=80=E6=9C=89=E9=9D=A2=E6=9D=BF=E8=81=94=E5=8A=A8=E8=BF=87?= =?UTF-8?q?=E6=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dashboard/ScanTerminalDashboard.tsx | 42 +++++++++++++++---- 1 file changed, 34 insertions(+), 8 deletions(-) diff --git a/frontend/components/dashboard/ScanTerminalDashboard.tsx b/frontend/components/dashboard/ScanTerminalDashboard.tsx index 7d7abfdf..b6b8b12a 100644 --- a/frontend/components/dashboard/ScanTerminalDashboard.tsx +++ b/frontend/components/dashboard/ScanTerminalDashboard.tsx @@ -31,6 +31,7 @@ import { getGapColor, getSignalLabel, getSignalState, + TRADING_REGIONS, } from "@/components/dashboard/scan-terminal/continent-grouping"; import { MobileCityCard } from "@/components/dashboard/scan-terminal/MobileCityCard"; import { MobileRegionTabs } from "@/components/dashboard/scan-terminal/MobileRegionTabs"; @@ -346,6 +347,7 @@ function PolyWeatherTerminal({ }, [searchInputRef, setSearchQuery]); const [navExpanded, setNavExpanded] = useState(false); const [activeNavKey, setActiveNavKey] = useState("contracts"); + const [selectedRegionKey, setSelectedRegionKey] = useState("east_asia"); const NAV_ITEMS = [ { key: "contracts", Icon: Table2, labelEn: "Contracts", labelZh: "天气合约" }, @@ -358,12 +360,15 @@ function PolyWeatherTerminal({ ]; const filteredRegionRows = useMemo(() => { - return rows.filter( - (row) => - String(row.trading_region).toLowerCase() === "east_asia" && - row.is_primary_signal !== false, - ); - }, [rows]); + const byRegion = + selectedRegionKey === "all" + ? rows + : rows.filter( + (row) => + String(row.trading_region).toLowerCase() === selectedRegionKey, + ); + return byRegion.filter((row) => row.is_primary_signal !== false); + }, [rows, selectedRegionKey]); const watchRows = useMemo(() => { return filteredRegionRows @@ -561,6 +566,28 @@ function PolyWeatherTerminal({
+ {/* Region tabs */} +
+ {TRADING_REGIONS.map((r) => ({ + key: r.key, + labelEn: r.labelEn.toUpperCase(), + labelZh: r.labelZh, + })).map((tab) => ( + + ))} +
{/* Mobile layout */}
-
@@ -748,7 +774,7 @@ function RegionalWhaleWatch({ ); } -function TrainingDataPanel({ isEn }: { isEn: boolean }) { +function TrainingDashboard({ isEn }: { isEn: boolean }) { const [data, setData] = useState