OnlineBoardFilter: wire time range slider to route-search URL (Angular parity)
This commit is contained in:
@@ -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:00–24: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 (
|
||||
|
||||
Reference in New Issue
Block a user