feat: Trail-Stores registrieren und Navigationseintrag ergänzen
Die vier Trail-Stores (trails, trailVersions, trailFlags, trailMarkers) werden im Dashboard-Layout per Context bereitgestellt, laden ihre Daten beim Mount, abonnieren Realtime-Updates und werden beim Unmount wieder aufgeräumt. Zusätzlich ergänzt ein Navigationseintrag „Trails" mit dem Route-Icon aus lucide-svelte.
This commit is contained in:
parent
f432b47df1
commit
616694a7f5
1 changed files with 22 additions and 2 deletions
|
|
@ -7,11 +7,15 @@
|
|||
import { setRunContext } from '$lib/stores/runs.svelte'
|
||||
import { setRiderContext } from '$lib/stores/riders.svelte'
|
||||
import { setTimeContext } from '$lib/stores/times.svelte'
|
||||
import { setTrailContext } from '$lib/stores/trails.svelte'
|
||||
import { setTrailVersionContext } from '$lib/stores/trailVersions.svelte'
|
||||
import { setTrailFlagContext } from '$lib/stores/trailFlags.svelte'
|
||||
import { setTrailMarkerContext } from '$lib/stores/trailMarkers.svelte'
|
||||
import { Button } from '@/components/ui/button'
|
||||
import { Separator } from '@/components/ui/separator'
|
||||
import Logo from '$lib/components/Logo.svelte'
|
||||
import TeamSwitcher from '$lib/components/TeamSwitcher.svelte'
|
||||
import { Home, Calendar, Flag, Timer, LogOut, Menu, X, Moon, Sun } from 'lucide-svelte'
|
||||
import { Home, Calendar, Flag, Timer, LogOut, Menu, X, Moon, Sun, Route } from 'lucide-svelte'
|
||||
import { toggleMode, mode } from 'mode-watcher'
|
||||
import { onDestroy, onMount } from 'svelte'
|
||||
|
||||
|
|
@ -24,6 +28,10 @@
|
|||
const runs = setRunContext()
|
||||
const riders = setRiderContext()
|
||||
const times = setTimeContext()
|
||||
const trails = setTrailContext()
|
||||
const trailVersions = setTrailVersionContext()
|
||||
const trailFlags = setTrailFlagContext()
|
||||
const trailMarkers = setTrailMarkerContext()
|
||||
|
||||
let isMobileMenuOpen = $state(false)
|
||||
|
||||
|
|
@ -35,11 +43,18 @@
|
|||
// Teams zuerst laden, weil die anderen Stores nach team filtern
|
||||
await teams.load()
|
||||
teams.subscribe()
|
||||
await Promise.all([events.load(), runs.load(), riders.load(), times.load()])
|
||||
await Promise.all([
|
||||
events.load(), runs.load(), riders.load(), times.load(),
|
||||
trails.load(), trailVersions.load(), trailFlags.load(), trailMarkers.load(),
|
||||
])
|
||||
events.subscribe()
|
||||
runs.subscribe()
|
||||
riders.subscribe()
|
||||
times.subscribe()
|
||||
trails.subscribe()
|
||||
trailVersions.subscribe()
|
||||
trailFlags.subscribe()
|
||||
trailMarkers.subscribe()
|
||||
})
|
||||
|
||||
onDestroy(() => {
|
||||
|
|
@ -48,6 +63,10 @@
|
|||
runs.destroy()
|
||||
riders.destroy()
|
||||
times.destroy()
|
||||
trails.destroy()
|
||||
trailVersions.destroy()
|
||||
trailFlags.destroy()
|
||||
trailMarkers.destroy()
|
||||
})
|
||||
|
||||
function handleLogout() {
|
||||
|
|
@ -66,6 +85,7 @@
|
|||
const nav = [
|
||||
{ href: '/dashboard', icon: Home, label: 'Dashboard' },
|
||||
{ href: '/dashboard/events', icon: Calendar, label: 'Events' },
|
||||
{ href: '/dashboard/trails', icon: Route, label: 'Trails' },
|
||||
{ href: '/dashboard/timing', icon: Timer, label: 'Zeitnahme' },
|
||||
{ href: '/dashboard/results', icon: Flag, label: 'Ergebnisse' },
|
||||
]
|
||||
|
|
|
|||
Loading…
Reference in a new issue