OnlineBoardFilter: wire time range slider to route-search URL (Angular parity)

This commit is contained in:
2026-04-20 12:26:29 +03:00
parent 6d87521634
commit c456de9f9f
@@ -26,6 +26,12 @@ function minutesToTime(minutes: number): string {
return `${String(h).padStart(2, "0")}:${String(m).padStart(2, "0")}`;
}
function minutesToHhmm(minutes: number): string {
const h = Math.floor(minutes / 60);
const m = minutes % 60;
return `${String(h).padStart(2, "0")}${String(m).padStart(2, "0")}`;
}
type AccordionTab = "flight" | "route";
function dateToYyyymmdd(value: Date): string {
@@ -229,17 +235,25 @@ export const OnlineBoardFilter: FC<OnlineBoardFilterProps> = ({
const arrCode = routeArrivalCode.trim().toUpperCase();
if (!depCode && !arrCode) return;
// Only send time range when the user has narrowed the slider, so
// default 00:0024:00 searches keep the URL clean (Angular spreads
// `...this.timeRange` which is undefined until interaction).
const timeExtras =
timeRange[0] !== 0 || timeRange[1] !== 1440
? { timeFrom: minutesToHhmm(timeRange[0]), timeTo: minutesToHhmm(timeRange[1]) }
: {};
let url: string;
if (depCode && !arrCode) {
url = buildOnlineBoardUrl({ type: "departure", station: depCode, date: dateParam });
url = buildOnlineBoardUrl({ type: "departure", station: depCode, date: dateParam, ...timeExtras });
} else if (!depCode && arrCode) {
url = buildOnlineBoardUrl({ type: "arrival", station: arrCode, date: dateParam });
url = buildOnlineBoardUrl({ type: "arrival", station: arrCode, date: dateParam, ...timeExtras });
} else {
url = buildOnlineBoardUrl({ type: "route", departure: depCode, arrival: arrCode, date: dateParam });
url = buildOnlineBoardUrl({ type: "route", departure: depCode, arrival: arrCode, date: dateParam, ...timeExtras });
}
void navigate(`/${locale}/${url}`);
},
[routeDepartureCode, routeArrivalCode, routeDate, navigate, locale],
[routeDepartureCode, routeArrivalCode, routeDate, timeRange, navigate, locale],
);
return (