From b63893963bc1cc50b6e211d29ef6faf89958c32f Mon Sep 17 00:00:00 2001
From: JNNJ <95310130+CodeName-Anti@users.noreply.github.com>
Date: Mon, 3 Mar 2025 22:02:56 +0100
Subject: [PATCH 1/3] refactoring(frontend): merge duplicated layouts
---
.../{(custom-group) => (root)}/+error.svelte | 0
.../{(custom-group) => (root)}/+layout.svelte | 2 +-
.../{(custom-group) => (root)}/+page.svelte | 0
.../[evaNumber]/[type=type]/+error.svelte | 0
.../[evaNumber]/[type=type]/+layout.server.ts | 0
.../[evaNumber]/[type=type]/+layout.svelte | 59 +++++++++----------
.../[evaNumber]/[type=type]/+page.server.ts | 0
.../[evaNumber]/[type=type]/+page.svelte | 0
.../journey/coach-sequence/+error.svelte | 0
.../journey/coach-sequence/+page.server.ts | 0
.../journey/coach-sequence/+page.svelte | 0
.../journey/coach-sequence/+layout.svelte | 12 ----
12 files changed, 28 insertions(+), 45 deletions(-)
rename frontend/src/routes/{(custom-group) => (root)}/+error.svelte (100%)
rename frontend/src/routes/{(custom-group) => (root)}/+layout.svelte (79%)
rename frontend/src/routes/{(custom-group) => (root)}/+page.svelte (100%)
rename frontend/src/routes/{ => (root)}/[evaNumber]/[type=type]/+error.svelte (100%)
rename frontend/src/routes/{ => (root)}/[evaNumber]/[type=type]/+layout.server.ts (100%)
rename frontend/src/routes/{ => (root)}/[evaNumber]/[type=type]/+layout.svelte (66%)
rename frontend/src/routes/{ => (root)}/[evaNumber]/[type=type]/+page.server.ts (100%)
rename frontend/src/routes/{ => (root)}/[evaNumber]/[type=type]/+page.svelte (100%)
rename frontend/src/routes/{ => (root)}/journey/coach-sequence/+error.svelte (100%)
rename frontend/src/routes/{ => (root)}/journey/coach-sequence/+page.server.ts (100%)
rename frontend/src/routes/{ => (root)}/journey/coach-sequence/+page.svelte (100%)
delete mode 100644 frontend/src/routes/journey/coach-sequence/+layout.svelte
diff --git a/frontend/src/routes/(custom-group)/+error.svelte b/frontend/src/routes/(root)/+error.svelte
similarity index 100%
rename from frontend/src/routes/(custom-group)/+error.svelte
rename to frontend/src/routes/(root)/+error.svelte
diff --git a/frontend/src/routes/(custom-group)/+layout.svelte b/frontend/src/routes/(root)/+layout.svelte
similarity index 79%
rename from frontend/src/routes/(custom-group)/+layout.svelte
rename to frontend/src/routes/(root)/+layout.svelte
index 18820c4..dd23b8b 100644
--- a/frontend/src/routes/(custom-group)/+layout.svelte
+++ b/frontend/src/routes/(root)/+layout.svelte
@@ -6,7 +6,7 @@
let { children }: LayoutProps = $props();
-
+
{@render children()}
diff --git a/frontend/src/routes/(custom-group)/+page.svelte b/frontend/src/routes/(root)/+page.svelte
similarity index 100%
rename from frontend/src/routes/(custom-group)/+page.svelte
rename to frontend/src/routes/(root)/+page.svelte
diff --git a/frontend/src/routes/[evaNumber]/[type=type]/+error.svelte b/frontend/src/routes/(root)/[evaNumber]/[type=type]/+error.svelte
similarity index 100%
rename from frontend/src/routes/[evaNumber]/[type=type]/+error.svelte
rename to frontend/src/routes/(root)/[evaNumber]/[type=type]/+error.svelte
diff --git a/frontend/src/routes/[evaNumber]/[type=type]/+layout.server.ts b/frontend/src/routes/(root)/[evaNumber]/[type=type]/+layout.server.ts
similarity index 100%
rename from frontend/src/routes/[evaNumber]/[type=type]/+layout.server.ts
rename to frontend/src/routes/(root)/[evaNumber]/[type=type]/+layout.server.ts
diff --git a/frontend/src/routes/[evaNumber]/[type=type]/+layout.svelte b/frontend/src/routes/(root)/[evaNumber]/[type=type]/+layout.svelte
similarity index 66%
rename from frontend/src/routes/[evaNumber]/[type=type]/+layout.svelte
rename to frontend/src/routes/(root)/[evaNumber]/[type=type]/+layout.svelte
index 419fe47..893e1b5 100644
--- a/frontend/src/routes/[evaNumber]/[type=type]/+layout.svelte
+++ b/frontend/src/routes/(root)/[evaNumber]/[type=type]/+layout.svelte
@@ -1,6 +1,5 @@
-
-
-
- {@render children()}
-
From 7c020413932d3d98705006c6eb338b911814bbaa Mon Sep 17 00:00:00 2001
From: JNNJ <95310130+CodeName-Anti@users.noreply.github.com>
Date: Thu, 6 Mar 2025 21:32:28 +0100
Subject: [PATCH 2/3] frontend: fix error boundaries and check if evaNumber is
numerical
---
.../ui/controls/StationSearch.svelte | 2 +-
.../components/ui/controls/TimePicker.svelte | 2 +-
frontend/src/params/int.ts | 5 ++
frontend/src/routes/(root)/+error.svelte | 2 +-
frontend/src/routes/(root)/+layout.svelte | 1 -
.../(root)/[...missing]/+page.server.ts | 7 +++
.../(root)/[evaNumber=int]/+page.server.ts | 6 +++
.../[type=type]/+layout.server.ts | 5 +-
.../[type=type]/+layout.svelte | 3 +-
.../[type=type]/+page.server.ts | 0
.../[type=type]/+page.svelte | 0
.../[evaNumber]/[type=type]/+error.svelte | 12 -----
frontend/src/routes/+layout.svelte | 8 ++++
frontend/src/routes/login/+layout.svelte | 42 ----------------
frontend/src/routes/login/+page.svelte | 48 ++++++++++++++++---
15 files changed, 75 insertions(+), 68 deletions(-)
create mode 100644 frontend/src/params/int.ts
create mode 100644 frontend/src/routes/(root)/[...missing]/+page.server.ts
create mode 100644 frontend/src/routes/(root)/[evaNumber=int]/+page.server.ts
rename frontend/src/routes/(root)/{[evaNumber] => [evaNumber=int]}/[type=type]/+layout.server.ts (79%)
rename frontend/src/routes/(root)/{[evaNumber] => [evaNumber=int]}/[type=type]/+layout.svelte (96%)
rename frontend/src/routes/(root)/{[evaNumber] => [evaNumber=int]}/[type=type]/+page.server.ts (100%)
rename frontend/src/routes/(root)/{[evaNumber] => [evaNumber=int]}/[type=type]/+page.svelte (100%)
delete mode 100644 frontend/src/routes/(root)/[evaNumber]/[type=type]/+error.svelte
create mode 100644 frontend/src/routes/+layout.svelte
delete mode 100644 frontend/src/routes/login/+layout.svelte
diff --git a/frontend/src/components/ui/controls/StationSearch.svelte b/frontend/src/components/ui/controls/StationSearch.svelte
index b000711..6ed890d 100644
--- a/frontend/src/components/ui/controls/StationSearch.svelte
+++ b/frontend/src/components/ui/controls/StationSearch.svelte
@@ -2,7 +2,7 @@
import type { Station } from "$models/station";
import { onMount } from "svelte";
import { env } from "$env/dynamic/public";
- import { Search } from "lucide-svelte";
+ import Search from "lucide-svelte/icons/search";
let { station = $bindable(undefined) }: { station?: Station } = $props();
let open = $state
(false);
diff --git a/frontend/src/components/ui/controls/TimePicker.svelte b/frontend/src/components/ui/controls/TimePicker.svelte
index ad06205..6333647 100644
--- a/frontend/src/components/ui/controls/TimePicker.svelte
+++ b/frontend/src/components/ui/controls/TimePicker.svelte
@@ -1,7 +1,7 @@
-
-
-
-
- {page.status}
-
-
This station does not exist. Maybe you want to try a different?
-
-
diff --git a/frontend/src/routes/+layout.svelte b/frontend/src/routes/+layout.svelte
new file mode 100644
index 0000000..4fafff3
--- /dev/null
+++ b/frontend/src/routes/+layout.svelte
@@ -0,0 +1,8 @@
+
+
+{@render children()}
diff --git a/frontend/src/routes/login/+layout.svelte b/frontend/src/routes/login/+layout.svelte
deleted file mode 100644
index 37822dc..0000000
--- a/frontend/src/routes/login/+layout.svelte
+++ /dev/null
@@ -1,42 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
- Login
- Please login to continue.
-
-
- {@render children()}
-
-
diff --git a/frontend/src/routes/login/+page.svelte b/frontend/src/routes/login/+page.svelte
index 5565dbc..3305761 100644
--- a/frontend/src/routes/login/+page.svelte
+++ b/frontend/src/routes/login/+page.svelte
@@ -1,12 +1,46 @@
- authClient.signIn.social({ provider: "github", callbackURL: window.location.origin })}
->
-
- Continue with GitHub
-
+
+
+
+
+
+
+
+
+
+ Login
+ Please login to continue.
+
+
+
authClient.signIn.social({ provider: "github", callbackURL: window.location.origin })}
+ >
+
+ Continue with GitHub
+
+
+
From f2ef34358c59308ac7478328605c3a91c96ed0fc Mon Sep 17 00:00:00 2001
From: JNNJ <95310130+CodeName-Anti@users.noreply.github.com>
Date: Thu, 6 Mar 2025 22:35:44 +0100
Subject: [PATCH 3/3] frontend: stream journeys to frontend and add loading
spinner
---
frontend/src/components/Loader.svelte | 72 +++++++++++++++++++
.../[type=type]/+page.server.ts | 4 +-
.../[evaNumber=int]/[type=type]/+page.svelte | 44 +++++++-----
3 files changed, 101 insertions(+), 19 deletions(-)
create mode 100644 frontend/src/components/Loader.svelte
diff --git a/frontend/src/components/Loader.svelte b/frontend/src/components/Loader.svelte
new file mode 100644
index 0000000..27160c3
--- /dev/null
+++ b/frontend/src/components/Loader.svelte
@@ -0,0 +1,72 @@
+
+
+
diff --git a/frontend/src/routes/(root)/[evaNumber=int]/[type=type]/+page.server.ts b/frontend/src/routes/(root)/[evaNumber=int]/[type=type]/+page.server.ts
index 95f1e1c..aa66c4f 100644
--- a/frontend/src/routes/(root)/[evaNumber=int]/[type=type]/+page.server.ts
+++ b/frontend/src/routes/(root)/[evaNumber=int]/[type=type]/+page.server.ts
@@ -4,8 +4,8 @@ import type { Journey } from "$models/connection";
import { DateTime } from "luxon";
import { env } from "$env/dynamic/private";
-export const load: PageServerLoad = async ({ params, url }): Promise<{ journeys: Journey[] }> => {
- const journeys = await loadJourneys(
+export const load: PageServerLoad = async ({ params, url }): Promise<{ journeys: Promise }> => {
+ const journeys = loadJourneys(
params.evaNumber,
params.type,
url.searchParams.get("startDate") ?? DateTime.now().set({ second: 0, millisecond: 0 }).toISO()
diff --git a/frontend/src/routes/(root)/[evaNumber=int]/[type=type]/+page.svelte b/frontend/src/routes/(root)/[evaNumber=int]/[type=type]/+page.svelte
index 111467d..125d284 100644
--- a/frontend/src/routes/(root)/[evaNumber=int]/[type=type]/+page.svelte
+++ b/frontend/src/routes/(root)/[evaNumber=int]/[type=type]/+page.svelte
@@ -1,13 +1,16 @@
-
- {#each data.journeys as journey}
- {#if !matchesFilter(journey)}{:else if journey.connections.length > 1}
-
- {:else}
-
- {/if}
- {/each}
-
-
-
-
-
+{#await data.journeys}
+
+
+
+{:then journeys}
+
+ {#each journeys as journey}
+ {#if !matchesFilter(journey)}{:else if journey.connections.length > 1}
+
+ {:else}
+
+ {/if}
+ {/each}
+
+
+
+
+
+{/await}