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();
+ }
+}