{isEn ? label.en : label.zh}
/ {label.icao}
{obsLocal || "--"}
AMSC AWOS
{range
? `${range[0].toFixed(1)}–${range[1].toFixed(1)}${tempSymbol}`
: "--"}
{hasAmsc ? (
<>
{isEn ? "Runway" : "跑道"}
TDZ / MID / END
{rows.map((row) => (
{row.runway || "--"}
{formatTemp(row.tdz_temp, tempSymbol)} /{" "}
{formatTemp(row.mid_temp, tempSymbol)} /{" "}
{formatTemp(row.end_temp, tempSymbol)}
))}
{detail?.amos?.raw_metar ? (
METAR {detail.amos.raw_metar.replace(/^METAR\s+/i, "")}
) : null}
>
) : (
{isEn
? "No AMSC runway observation loaded yet."
: "暂无 AMSC 跑道观测。"}
)}
);
}
export function RunwayObservationsPanel() {
const { locale } = useI18n();
const isEn = locale === "en-US";
const { cityDetailsByName } = useCityDetails();
const { ensureCityDetail } = useDashboardActions();
const loadAll = useCallback(
async () => {
await Promise.allSettled(
CHINA_RUNWAY_CITIES.map((city) =>
ensureCityDetail(city.key, false, "panel"),
),
);
},
[ensureCityDetail],
);
const intervalRef = useRef