Filter meteo warnings by local county
This commit is contained in:
@@ -10,6 +10,7 @@ import { useI18n } from "@/lib/i18n";
|
||||
import { formatProvinceName, getProvinceForSelection } from "@/lib/provinces";
|
||||
import { useWeatherStore } from "@/lib/store";
|
||||
import { formatDateTime } from "@/lib/weather-utils";
|
||||
import { warningMatchesLocalSelection } from "@/lib/warning-regions";
|
||||
import type { WeatherWarning } from "@/types/imgw";
|
||||
|
||||
const MAX_VISIBLE_WARNINGS = 2;
|
||||
@@ -52,6 +53,7 @@ export function DashboardWarnings() {
|
||||
}, []);
|
||||
|
||||
const province = getProvinceForSelection(selectedLocation?.province, selectedStationId ?? DEFAULT_STATION_ID);
|
||||
const regionLabel = selectedLocation?.countyTeryt ? selectedLocation.district ?? selectedLocation.name : province ? formatProvinceName(province, language) : null;
|
||||
const relevantWarnings = useMemo(() => {
|
||||
if (!warnings || !province || now === null) return [];
|
||||
|
||||
@@ -59,13 +61,13 @@ export function DashboardWarnings() {
|
||||
.filter((warning) => {
|
||||
const validTo = getTimestamp(warning.validTo);
|
||||
return warning.kind === "meteo"
|
||||
&& warning.provinces.includes(province)
|
||||
&& warningMatchesLocalSelection(warning, province, selectedLocation)
|
||||
&& (validTo === null || validTo > now);
|
||||
})
|
||||
.sort((a, b) => compareDashboardWarnings(a, b, now));
|
||||
}, [now, province, warnings]);
|
||||
}, [now, province, selectedLocation, warnings]);
|
||||
|
||||
if (!province || !relevantWarnings.length || now === null) return null;
|
||||
if (!province || !regionLabel || !relevantWarnings.length || now === null) return null;
|
||||
|
||||
const visibleWarnings = relevantWarnings.slice(0, MAX_VISIBLE_WARNINGS);
|
||||
const hiddenWarningsCount = relevantWarnings.length - visibleWarnings.length;
|
||||
@@ -85,7 +87,7 @@ export function DashboardWarnings() {
|
||||
</div>
|
||||
<div>
|
||||
<p className="text-[0.68rem] font-semibold uppercase tracking-[0.2em] text-warning">
|
||||
IMGW · {formatProvinceName(province, language)}
|
||||
IMGW · {regionLabel}
|
||||
</p>
|
||||
<h2 className="mt-1 text-base font-semibold text-foreground">
|
||||
{t("warnings.dashboard.title")}
|
||||
|
||||
Reference in New Issue
Block a user