终端搜索扩至全字段匹配:city key、中英文 region、market question 等 11 个字段
This commit is contained in:
@@ -883,13 +883,24 @@ function ScanTerminalScreen() {
|
||||
if (!searchQuery.trim()) return rows;
|
||||
const q = searchQuery.toLowerCase().trim();
|
||||
return rows.filter((row) => {
|
||||
const city = (rowName(row) || "").toLowerCase();
|
||||
const airport = (row.airport || "").toLowerCase();
|
||||
const region = ((isEn ? row.trading_region_label : row.trading_region_label_zh) || row.trading_region_label || "").toLowerCase();
|
||||
const signal = (row.ai_decision || row.v4_metar_decision || row.signal_status || "").toLowerCase();
|
||||
return city.includes(q) || airport.includes(q) || region.includes(q) || signal.includes(q);
|
||||
const haystack = [
|
||||
row.city,
|
||||
row.city_display_name,
|
||||
row.display_name,
|
||||
row.airport,
|
||||
row.trading_region_label,
|
||||
row.trading_region_label_zh,
|
||||
row.market_question,
|
||||
row.target_label,
|
||||
row.ai_decision,
|
||||
row.v4_metar_decision,
|
||||
row.signal_status,
|
||||
]
|
||||
.filter(Boolean)
|
||||
.map((v) => String(v).toLowerCase());
|
||||
return haystack.some((s) => s.includes(q));
|
||||
});
|
||||
}, [rows, searchQuery, isEn]);
|
||||
}, [rows, searchQuery]);
|
||||
|
||||
const [selectedId, setSelectedId] = useState<string | null>(null);
|
||||
const selectedRow = useMemo(
|
||||
|
||||
@@ -18,36 +18,17 @@ export function ScanTerminalLoadingScreen({
|
||||
}) {
|
||||
return (
|
||||
<div className={rootClassName}>
|
||||
<div className={clsx("scan-terminal", themeMode === "light" && "light")}>
|
||||
<main className="scan-data-grid">
|
||||
<div className="scan-topbar">
|
||||
<div className="scan-topbar-title">
|
||||
<strong>
|
||||
{isEn ? "PolyWeather Terminal" : "PolyWeather 交易决策台"}
|
||||
</strong>
|
||||
<span>
|
||||
{isEn
|
||||
? "Loading decision cards, city evidence, and market signals"
|
||||
: "正在加载决策卡、城市证据和市场信号"}
|
||||
</span>
|
||||
</div>
|
||||
<div className="scan-topbar-actions">
|
||||
<span className="scan-topbar-time">{userLocalTime}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div className="scan-loading-state">
|
||||
<LoadingSignal
|
||||
title={
|
||||
isEn ? "Preparing decision workspace" : "正在准备决策工作台"
|
||||
}
|
||||
description={
|
||||
isEn
|
||||
? "Checking access, city context and today's tradable weather windows."
|
||||
: "正在检查权限、城市上下文和今日可交易天气窗口。"
|
||||
}
|
||||
/>
|
||||
</div>
|
||||
</main>
|
||||
<div className={clsx("flex h-screen w-full items-center justify-center bg-[#e9edf3]", themeMode === "light" && "light")}>
|
||||
<LoadingSignal
|
||||
title={
|
||||
isEn ? "Preparing decision workspace" : "正在准备决策工作台"
|
||||
}
|
||||
description={
|
||||
isEn
|
||||
? "Checking access, city context and today's tradable weather windows."
|
||||
: "正在检查权限、城市上下文和今日可交易天气窗口。"
|
||||
}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user