deploy
This commit is contained in:
parent
3fa95819e3
commit
e9a06417ad
32 changed files with 1531 additions and 407 deletions
|
|
@ -1,5 +1,44 @@
|
|||
import type { TravelTimeEntry } from '../hooks/useTravelTime';
|
||||
|
||||
function mergeTimeRanges(
|
||||
current: [number, number] | null,
|
||||
next: [number, number] | null
|
||||
): [number, number] | null {
|
||||
if (!current) return next;
|
||||
if (!next) return current;
|
||||
return [Math.max(current[0], next[0]), Math.min(current[1], next[1])];
|
||||
}
|
||||
|
||||
export function dedupeTravelTimeEntries(entries: TravelTimeEntry[]): TravelTimeEntry[] {
|
||||
const result: TravelTimeEntry[] = [];
|
||||
const indexByKey = new Map<string, number>();
|
||||
|
||||
for (const entry of entries) {
|
||||
if (!entry.slug) {
|
||||
result.push(entry);
|
||||
continue;
|
||||
}
|
||||
|
||||
const key = `${entry.mode}:${entry.slug}`;
|
||||
const existingIndex = indexByKey.get(key);
|
||||
if (existingIndex == null) {
|
||||
indexByKey.set(key, result.length);
|
||||
result.push({ ...entry });
|
||||
continue;
|
||||
}
|
||||
|
||||
const existing = result[existingIndex];
|
||||
result[existingIndex] = {
|
||||
...existing,
|
||||
label: existing.label || entry.label,
|
||||
timeRange: mergeTimeRanges(existing.timeRange, entry.timeRange),
|
||||
useBest: existing.useBest || entry.useBest,
|
||||
};
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
export function buildTravelParam(
|
||||
entries: TravelTimeEntry[],
|
||||
excludeFieldKey?: string,
|
||||
|
|
@ -7,7 +46,7 @@ export function buildTravelParam(
|
|||
): string {
|
||||
const segments: string[] = [];
|
||||
|
||||
for (const entry of entries) {
|
||||
for (const entry of dedupeTravelTimeEntries(entries)) {
|
||||
if (!entry.slug) continue;
|
||||
|
||||
let segment = `${entry.mode}:${entry.slug}`;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue