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/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 @@ -
+
{@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/(root)/[...missing]/+page.server.ts b/frontend/src/routes/(root)/[...missing]/+page.server.ts new file mode 100644 index 0000000..0d721bf --- /dev/null +++ b/frontend/src/routes/(root)/[...missing]/+page.server.ts @@ -0,0 +1,7 @@ +import { error } from "@sveltejs/kit"; +import type { PageServerLoad } from "./$types"; + +// This is to catch all unfound pages and redirect them to the error page with the layout +export const load = (async () => { + throw error(404, "No page found..."); +}) satisfies PageServerLoad; diff --git a/frontend/src/routes/(root)/[evaNumber=int]/+page.server.ts b/frontend/src/routes/(root)/[evaNumber=int]/+page.server.ts new file mode 100644 index 0000000..cedb3ac --- /dev/null +++ b/frontend/src/routes/(root)/[evaNumber=int]/+page.server.ts @@ -0,0 +1,6 @@ +import { redirect } from "@sveltejs/kit"; +import type { PageServerLoad } from "./$types"; + +export const load = (async ({ url }) => { + return redirect(308, `${url.pathname}/departures`); +}) satisfies PageServerLoad; diff --git a/frontend/src/routes/[evaNumber]/[type=type]/+layout.server.ts b/frontend/src/routes/(root)/[evaNumber=int]/[type=type]/+layout.server.ts similarity index 79% rename from frontend/src/routes/[evaNumber]/[type=type]/+layout.server.ts rename to frontend/src/routes/(root)/[evaNumber=int]/[type=type]/+layout.server.ts index 6d5bf0a..ca37c82 100644 --- a/frontend/src/routes/[evaNumber]/[type=type]/+layout.server.ts +++ b/frontend/src/routes/(root)/[evaNumber=int]/[type=type]/+layout.server.ts @@ -13,13 +13,14 @@ const loadStation = async (evaNumber: string): Promise => { const response = await fetch(`${env.BACKEND_DOCKER_BASE_URL}/api/v1/stations/${evaNumber}`, { method: "GET" }); + if (!response.ok) { - throw error(404, `No station found for ${evaNumber}`); + throw error(404, `No station found for ${evaNumber}. Maybe try a different one?`); } const station = (await response.json()) as Station; if (station.evaNumber === undefined) { - throw error(404, `No station found for ${evaNumber}`); + throw error(404, `No station found for ${evaNumber}. Maybe try a different one?`); } return station; }; diff --git a/frontend/src/routes/[evaNumber]/[type=type]/+layout.svelte b/frontend/src/routes/(root)/[evaNumber=int]/[type=type]/+layout.svelte similarity index 65% rename from frontend/src/routes/[evaNumber]/[type=type]/+layout.svelte rename to frontend/src/routes/(root)/[evaNumber=int]/[type=type]/+layout.svelte index 419fe47..3c2719c 100644 --- a/frontend/src/routes/[evaNumber]/[type=type]/+layout.svelte +++ b/frontend/src/routes/(root)/[evaNumber=int]/[type=type]/+layout.svelte @@ -1,10 +1,10 @@ + +{#await data.journeys} +
+ +
+{:then journeys} +
+ {#each journeys as journey} + {#if !matchesFilter(journey)}{:else if journey.connections.length > 1} + + {:else} + + {/if} + {/each} +
+ +
+ +
+{/await} diff --git a/frontend/src/routes/journey/coach-sequence/+error.svelte b/frontend/src/routes/(root)/journey/coach-sequence/+error.svelte similarity index 100% rename from frontend/src/routes/journey/coach-sequence/+error.svelte rename to frontend/src/routes/(root)/journey/coach-sequence/+error.svelte diff --git a/frontend/src/routes/journey/coach-sequence/+page.server.ts b/frontend/src/routes/(root)/journey/coach-sequence/+page.server.ts similarity index 100% rename from frontend/src/routes/journey/coach-sequence/+page.server.ts rename to frontend/src/routes/(root)/journey/coach-sequence/+page.server.ts diff --git a/frontend/src/routes/journey/coach-sequence/+page.svelte b/frontend/src/routes/(root)/journey/coach-sequence/+page.svelte similarity index 100% rename from frontend/src/routes/journey/coach-sequence/+page.svelte rename to frontend/src/routes/(root)/journey/coach-sequence/+page.svelte 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/[evaNumber]/[type=type]/+error.svelte b/frontend/src/routes/[evaNumber]/[type=type]/+error.svelte deleted file mode 100644 index 6ba8036..0000000 --- a/frontend/src/routes/[evaNumber]/[type=type]/+error.svelte +++ /dev/null @@ -1,12 +0,0 @@ - - -
-
-

- {page.status} -

-

This station does not exist. Maybe you want to try a different?

-
-
diff --git a/frontend/src/routes/[evaNumber]/[type=type]/+page.svelte b/frontend/src/routes/[evaNumber]/[type=type]/+page.svelte deleted file mode 100644 index 111467d..0000000 --- a/frontend/src/routes/[evaNumber]/[type=type]/+page.svelte +++ /dev/null @@ -1,43 +0,0 @@ - - -
- {#each data.journeys as journey} - {#if !matchesFilter(journey)}{:else if journey.connections.length > 1} - - {:else} - - {/if} - {/each} -
- -
- -
diff --git a/frontend/src/routes/journey/coach-sequence/+layout.svelte b/frontend/src/routes/journey/coach-sequence/+layout.svelte deleted file mode 100644 index 18820c4..0000000 --- a/frontend/src/routes/journey/coach-sequence/+layout.svelte +++ /dev/null @@ -1,12 +0,0 @@ - - -
- - {@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 @@ - + + +
+ + + + +
+
+ Login + Please login to continue. +
+ + +
+