OnlineBoardFilter: seed time range from URL params (Angular parity)

This commit is contained in:
2026-04-20 12:28:02 +03:00
parent c456de9f9f
commit 45a8023b68
2 changed files with 22 additions and 1 deletions
@@ -58,10 +58,20 @@ export interface OnlineBoardFilterProps {
initialDeparture?: string;
initialArrival?: string;
initialDate?: string;
initialTimeFrom?: string;
initialTimeTo?: string;
initialTab?: AccordionTab;
initialFlightNumber?: string;
}
function hhmmToMinutes(value: string | undefined, fallback: number): number {
if (!value || value.length !== 4) return fallback;
const h = Number(value.slice(0, 2));
const m = Number(value.slice(2, 4));
if (Number.isNaN(h) || Number.isNaN(m)) return fallback;
return h * 60 + m;
}
function yyyymmddToDate(yyyymmdd: string): Date {
const y = parseInt(yyyymmdd.slice(0, 4), 10);
const m = parseInt(yyyymmdd.slice(4, 6), 10) - 1;
@@ -100,6 +110,8 @@ export const OnlineBoardFilter: FC<OnlineBoardFilterProps> = ({
initialDeparture,
initialArrival,
initialDate,
initialTimeFrom,
initialTimeTo,
initialTab,
initialFlightNumber,
}) => {
@@ -126,7 +138,10 @@ export const OnlineBoardFilter: FC<OnlineBoardFilterProps> = ({
const [routeDate, setRouteDate] = useState<Date | null>(
initialDate ? yyyymmddToDate(initialDate) : null,
);
const [timeRange, setTimeRange] = useState<[number, number]>([0, 1440]);
const [timeRange, setTimeRange] = useState<[number, number]>([
hhmmToMinutes(initialTimeFrom, 0),
hhmmToMinutes(initialTimeTo, 1440),
]);
const boardMinDate = useRef(getBoardMinDate()).current;
const boardMaxDate = useRef(getBoardMaxDate()).current;
@@ -423,18 +423,24 @@ export const OnlineBoardSearchPage: FC<OnlineBoardSearchPageProps> = ({
initialDeparture: params.departure,
initialArrival: params.arrival,
initialDate: params.date,
...(params.timeFrom ? { initialTimeFrom: params.timeFrom } : {}),
...(params.timeTo ? { initialTimeTo: params.timeTo } : {}),
initialTab: "route" as const,
}
: params.type === "departure"
? {
initialDeparture: params.station,
initialDate: params.date,
...(params.timeFrom ? { initialTimeFrom: params.timeFrom } : {}),
...(params.timeTo ? { initialTimeTo: params.timeTo } : {}),
initialTab: "route" as const,
}
: params.type === "arrival"
? {
initialArrival: params.station,
initialDate: params.date,
...(params.timeFrom ? { initialTimeFrom: params.timeFrom } : {}),
...(params.timeTo ? { initialTimeTo: params.timeTo } : {}),
initialTab: "route" as const,
}
: params.type === "flight"