aboutsummaryrefslogtreecommitdiffstats
path: root/src/routes/(app)/fahrplan/route
diff options
context:
space:
mode:
authorLibravatarLarge Libravatar 7222e800-c703-472d-a787-71b6b5cba4ef <memestrogenzone>2025-09-14 17:27:51 +0000
committerLibravatarLarge Libravatar 7222e800-c703-472d-a787-71b6b5cba4ef <memestrogenzone>2025-09-14 17:27:51 +0000
commit632850b8d589791f14ffb07956e334c710fb4f10 (patch)
tree7c449e2c692944c474947cbbbba5170e0e909fb3 /src/routes/(app)/fahrplan/route
parent807e1cd0f63eb987b714be9cd72020b5eb4ba4ee (diff)
downloadfahrplan-632850b8d589791f14ffb07956e334c710fb4f10.tar.gz
fahrplan-632850b8d589791f14ffb07956e334c710fb4f10.tar.bz2
fahrplan-632850b8d589791f14ffb07956e334c710fb4f10.tar.lz
fahrplan-632850b8d589791f14ffb07956e334c710fb4f10.zip

draft: initial work

Diffstat (limited to 'src/routes/(app)/fahrplan/route')
-rw-r--r--src/routes/(app)/fahrplan/route/[id]/+page.svelte82
1 files changed, 81 insertions, 1 deletions
diff --git a/src/routes/(app)/fahrplan/route/[id]/+page.svelte b/src/routes/(app)/fahrplan/route/[id]/+page.svelte
index 5bf03f4..01a35b3 100644
--- a/src/routes/(app)/fahrplan/route/[id]/+page.svelte
+++ b/src/routes/(app)/fahrplan/route/[id]/+page.svelte
@@ -1 +1,81 @@
-<script lang="ts"></script>
+<script lang="ts">
+ import Itinerary from '$lib/Itinerary.svelte';
+ import type { Itinerary as ItineraryType } from '$lib/motis-types';
+ import Page from '$lib/Page.svelte';
+ import { page } from '$app/state';
+ import { normalisePlaceName } from '$lib/aliases';
+ import Titlebar from '$lib/Titlebar.svelte';
+ import { S } from '$lib';
+
+ import _itinerary from './sampleData.json';
+ import Loader from '$lib/Loader.svelte';
+ import LineGlyph from '$lib/assets/LineGlyph.svelte';
+ let itinerary = $state(_itinerary as unknown as ItineraryType | null);
+
+ let fromName = $derived(
+ itinerary ? normalisePlaceName(itinerary.legs[0].from.name) : ''
+ );
+ let toName = $derived(
+ itinerary
+ ? normalisePlaceName(itinerary.legs[itinerary.legs.length - 1].to.name)
+ : ''
+ );
+ let routeShortName = $derived(itinerary?.legs?.[0]?.routeShortName);
+
+ let title = $derived(
+ itinerary
+ ? `${routeShortName ? `${routeShortName} from ` : ''}${fromName} to ${toName}`
+ : 'Route ' + page.params.id
+ );
+</script>
+
+<svelte:head>
+ <meta name="route:id" content={page.params.id} />
+</svelte:head>
+
+<Page title={`${title} - Fahrplan`} class="p-8">
+ <div class={S.window_content_fullscreen}>
+ <Titlebar>
+ <div class="w-full">
+ <!-- FIXME: I'm not sure I'm satisfied with the design of this part -->
+ <div
+ class="{S.title} rounded-xl w-full text-center flex items-center justify-between gap-2"
+ >
+ <LineGlyph
+ currentColor="#fff"
+ kind={routeShortName}
+ negative={false}
+ dark
+ />
+ <p class="inline cursor-default">
+ <span class="font-medium">
+ {fromName}
+ </span>
+ <span class="font-[450]"> to </span>
+ <span class="font-medium">
+ {toName}
+ </span>
+ </p>
+ <div class="opacity-0 pointer-events-none" aria-hidden="true">
+ <!-- make it properly centered -->
+ <LineGlyph
+ currentColor="#fff"
+ kind={routeShortName}
+ negative={false}
+ dark
+ />
+ </div>
+ </div>
+ <!-- <div
+ class="h-1 mt-2 -mb-3 bg-gradient-to-b from-[#111] to-[#1110]"
+ ></div> -->
+ </div>
+ </Titlebar>
+ <div class="w-full h-[2px] rounded-[2px] relative">
+ <Loader kind="hidden" />
+ </div>
+ <div class="p-3">
+ <Itinerary {itinerary} />
+ </div>
+ </div>
+</Page>