feat: redesign dashboard around place search

This commit is contained in:
zv
2026-06-01 19:05:31 +02:00
parent 6c2e731c60
commit 0632c67beb
18 changed files with 374 additions and 139 deletions

View File

@@ -5,7 +5,9 @@ import {
} from "@/lib/weather-utils";
import type {
HydroStation,
MeteoStationPosition,
RawHydroStation,
RawMeteoStation,
RawSynopStation,
RawWarning,
SynopStation,
@@ -39,6 +41,16 @@ export async function fetchHydroStations(signal?: AbortSignal): Promise<HydroSta
return rows.map(normalizeHydroStation).filter((station): station is HydroStation => station !== null);
}
export async function fetchMeteoStationPositions(signal?: AbortSignal): Promise<MeteoStationPosition[]> {
const rows = await getJson<RawMeteoStation[]>("meteo", signal);
return rows.flatMap((row) => {
const latitude = Number(row.lat);
const longitude = Number(row.lon);
if (!row.nazwa_stacji?.trim() || !Number.isFinite(latitude) || !Number.isFinite(longitude)) return [];
return [{ name: row.nazwa_stacji, latitude, longitude }];
});
}
async function fetchWarningsByKind(kind: WarningKind, signal?: AbortSignal): Promise<WeatherWarning[]> {
const rows = await getJson<RawWarning[]>(kind === "meteo" ? "warningsmeteo" : "warningshydro", signal);
return Array.isArray(rows) ? rows.map((warning, index) => normalizeWarning(warning, kind, index)) : [];