{#if !trail}

Trail nicht gefunden.

{:else}

{trail.name}

{#if canEdit} {#snippet child({ props })} {/snippet} Zustand melden {#each TRAIL_STATUS as s (s.value)} setStatus(s.value)} class={s.value === trail.status ? 'bg-accent' : ''} > {s.label} {s.hint} {/each} {:else} {statusInfo.label} {/if} {#if version} {(version.distance_m / 1000).toFixed(1)} km {version.ascent_m} hm {/if}
{#if trail.status_changed}

{statusInfo.label} gemeldet {formatRelative(trail.status_changed)} {#if trail.status_by} von {teams.userLabel(trail.status_by)} {/if}

{/if} {#if safeDescription}

{@html safeDescription}

{/if}
{#if version?.geojson} (highlight = d)} /> {#if version.elevation?.length} (highlight = d)} onselect={canPlace ? placeFromProfile : undefined} /> {/if} {:else}

Für diesen Trail gibt es noch keine GPX-Datei.

{#if canEdit} {/if}
{/if}
Marker ({trailMarkers.length})

Auf die Trail-Linie oder ins Höhenprofil klicken, um dort einen Marker zu setzen.

{#if trailMarkers.length === 0}

Noch keine Meldung.

{:else}
    {#each trailMarkers as m (m.id)} {@const look = markerLook(m)}
  • {look.label}

    {#if m.note}

    {m.note}

    {/if}

    {formatDate(m.created)} · {markers.authorName(m)}

    {#if markers.canEdit(m, (trail.stewards ?? []) as string[], team?.owner, (team?.admins ?? []) as string[])}
    {/if}
  • {/each}
{/if}
Kommentare ({comments.length})
e.key === 'Enter' && addComment()} />
{#if commentError}

{commentError}

{/if} {#if comments.length === 0}

Noch keine Kommentare.

{:else}
    {#each comments as c (c.id)} {@const author = c.expand?.created_by}
  • {c.text}

    {formatDate(c.created)}

  • {/each}
{/if}
{#if showVersions} {#if canEdit} {/if} {#if trailVersions.length === 0}

Noch keine Version hochgeladen.

{:else}
    {#each trailVersions as v (v.id)}
  • {formatDate(v.created)}

    {#if v.id === trail.current} Aktiv {/if}

    {(v.distance_m / 1000).toFixed(1)} km · {v.ascent_m} hm {#if v.note}· {v.note}{/if}

    {#if v.gpx} {/if} {#if canEdit && v.id !== trail.current} {/if}
  • {/each}
{/if}
{/if}
{/if} GPX-Datei hochladen Die bisherige Version bleibt erhalten; die neue wird zur aktiven.
(uploadFile = e.currentTarget.files?.[0] ?? null)} />
{#if uploadError}

{uploadError}

{/if}
Marker setzen {#if markerDistance != null} bei km {(markerDistance / 1000).toFixed(2)} des Trails {/if}
{#if selectedFlag} {selectedFlag.label} {:else} Eigener Typ {/if} Eigener Typ … {#each flags.scoped as f (f.id)} {f.label} {/each}
{#if !markerFlag}
{/if}
{#if markerError}

{markerError}

{/if}