Compare commits
1 Commits
v3.0.0-dev
...
v3.0.0-dev
| Author | SHA1 | Date | |
|---|---|---|---|
| 91cb119b7d |
1806
package-lock.json
generated
1806
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -41,7 +41,7 @@
|
|||||||
"vitest-browser-svelte": "^2.0.2"
|
"vitest-browser-svelte": "^2.0.2"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@owlboard/owlboard-ts": "^3.0.0-dev.20260428T2753",
|
"@owlboard/owlboard-ts": "^3.0.0-dev.20260503T0051",
|
||||||
"@tabler/icons-svelte": "^3.40.0"
|
"@tabler/icons-svelte": "^3.40.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,15 +1,51 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import type { ApiTrainsTrainByHeadcode } from '@owlboard/owlboard-ts';
|
import type { ApiTrainsTrainByHeadcode } from '@owlboard/owlboard-ts';
|
||||||
import { slide } from 'svelte/transition';
|
import { OwlClient, ApiError, ValidationError } from '$lib/owlClient';
|
||||||
|
import { slide } from 'svelte/transition';
|
||||||
|
import { quintOut} from 'svelte/easing';
|
||||||
import { formatUkTime } from '$lib/utils/time';
|
import { formatUkTime } from '$lib/utils/time';
|
||||||
import TocStyle from '$lib/components/ui/TocStyle.svelte';
|
import TocStyle from '$lib/components/ui/TocStyle.svelte';
|
||||||
|
|
||||||
let { service }: { service: ApiTrainsTrainByHeadcode.TrainByHeadcodeResponse} = $props();
|
let { service }: { service: ApiTrainsTrainByHeadcode.TrainByHeadcodeResponse} = $props();
|
||||||
let isExpanded = $state(false);
|
let isExpanded = $state(false);
|
||||||
|
let loadingDetails = $state(false)
|
||||||
|
let details = $state(null);
|
||||||
|
|
||||||
|
const toggleExpand = async (rid: string) => {
|
||||||
|
if (isExpanded) {
|
||||||
|
isExpanded = false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (details) {
|
||||||
|
isExpanded = true;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
loadingDetails = true;
|
||||||
|
try {
|
||||||
|
const result = await OwlClient.trains.getByRid(service.r)
|
||||||
|
details = result.data;
|
||||||
|
isExpanded = true;
|
||||||
|
} catch (e) {
|
||||||
|
console.Error("Failde to load train details")
|
||||||
|
} finally {
|
||||||
|
loading = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
const toggleExpand = () => isExpanded = !isExpanded;
|
|
||||||
|
|
||||||
let OriginDepartureSummary = $derived(formatUkTime(service.od));
|
let OriginDepartureSummary = $derived(formatUkTime(service.od));
|
||||||
|
|
||||||
|
async function loadDetails(rid: string) {
|
||||||
|
if (details) return;
|
||||||
|
loadingDetails = true;
|
||||||
|
|
||||||
|
const result = await OwlClient.trains.getByRid(service.r)
|
||||||
|
details = result.data;
|
||||||
|
loadingDetails = false;
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="train-service">
|
<div class="train-service">
|
||||||
@@ -31,8 +67,15 @@ import { formatUkTime } from '$lib/utils/time';
|
|||||||
{service.dt}
|
{service.dt}
|
||||||
</div>
|
</div>
|
||||||
<!-- Add arrow icon to signify drop-down -->
|
<!-- Add arrow icon to signify drop-down -->
|
||||||
|
<!-- ADD LOADING STATE -->
|
||||||
</div>
|
</div>
|
||||||
</button>
|
</button>
|
||||||
|
{#if isExpanded && details}
|
||||||
|
<div transition:slide={{duration: 800, easing: quintOut}} class="detauls-content">
|
||||||
|
<!-- Here goes the data formatting! -->
|
||||||
|
{JSON.stringify(details)}
|
||||||
|
</div>
|
||||||
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
|
|||||||
@@ -24,6 +24,7 @@
|
|||||||
width: 95%;
|
width: 95%;
|
||||||
margin: auto;
|
margin: auto;
|
||||||
padding-top: 1rem;
|
padding-top: 1rem;
|
||||||
|
padding-bottom: 1rem;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
|
|||||||
Reference in New Issue
Block a user