diff --git a/src/components/Timetable/TimetableContent.vue b/src/components/Timetable/TimetableContent.vue index 014b610..f7d916d 100644 --- a/src/components/Timetable/TimetableContent.vue +++ b/src/components/Timetable/TimetableContent.vue @@ -146,6 +146,17 @@ }" colspan="2" > + +
+ + + +
@@ -358,7 +369,12 @@
- {{ parseTimetableRunDate(computedTimetableRows[0].scheduledDepartureDate!) }} - {{ @@ -658,10 +674,10 @@ function parseTimetablePath(path: string): TimetablePathData[] { const sceneryData = apiStore.sceneryData?.find((sc) => sc.name == sceneryName) ?? null; const arrivalLineData = arrivalLine - ? sceneryData?.routesInfo.find((rt) => rt.routeName == arrivalLine) ?? null + ? (sceneryData?.routesInfo.find((rt) => rt.routeName == arrivalLine) ?? null) : null; const departureLineData = departureLine - ? sceneryData?.routesInfo.find((rt) => rt.routeName == departureLine) ?? null + ? (sceneryData?.routesInfo.find((rt) => rt.routeName == departureLine) ?? null) : null; return { diff --git a/src/http.ts b/src/http.ts new file mode 100644 index 0000000..ca54329 --- /dev/null +++ b/src/http.ts @@ -0,0 +1,23 @@ +export class HttpClient { + constructor(private readonly baseURL: string) {} + + async get(url: string, params?: Record): Promise { + const absoluteURL = new URL(this.baseURL + '/' + url); + + if (params) { + Object.keys(params).forEach((key) => { + if (params[key] === undefined) return; + + absoluteURL.searchParams.append(key, params[key]); + }); + } + + const data = await fetch(absoluteURL); + + if (!data.ok) { + throw new Error(`Cannot fetch: ${absoluteURL}`); + } + + return data.json(); + } +}