feat(windkarte): permanente 2km/5km-Ringe togglebar in Legende
Zeigt 2km (indigo) und 5km (lila) Pufferringe für alle Gebiete gleichzeitig, unabhängig von Selektion. Default versteckt, Klick auf Legendenitem ein-/ausblenden. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -22,6 +22,7 @@ let areas = $state<WindArea[]>([]);
|
||||
let initialGebietsNr = $state<string | null>(null);
|
||||
let resetMap: (() => void) | null = null;
|
||||
let hiddenStatuses = $state<string[]>([]);
|
||||
let hiddenRings = $state<string[]>(["2km", "5km"]);
|
||||
|
||||
function toggleStatus(status: string) {
|
||||
hiddenStatuses = hiddenStatuses.includes(status)
|
||||
@@ -29,6 +30,12 @@ let areas = $state<WindArea[]>([]);
|
||||
: [...hiddenStatuses, status];
|
||||
}
|
||||
|
||||
function toggleRing(ring: string) {
|
||||
hiddenRings = hiddenRings.includes(ring)
|
||||
? hiddenRings.filter((r) => r !== ring)
|
||||
: [...hiddenRings, ring];
|
||||
}
|
||||
|
||||
const MapComponent = browser
|
||||
? import("$lib/components/WindkarteMap.svelte").then((m) => m.default)
|
||||
: null;
|
||||
@@ -113,6 +120,7 @@ let areas = $state<WindArea[]>([]);
|
||||
{areas}
|
||||
{initialGebietsNr}
|
||||
{hiddenStatuses}
|
||||
{hiddenRings}
|
||||
onselect={handleSelect}
|
||||
onready={(ctrl) => { resetMap = ctrl.reset; }}
|
||||
/>
|
||||
@@ -159,6 +167,18 @@ let areas = $state<WindArea[]>([]);
|
||||
{ring.label}
|
||||
</span>
|
||||
{/each}
|
||||
{#each [{ key: "2km", color: "#5e6fa3", label: "2 km" }, { key: "5km", color: "#8a567a", label: "5 km" }] as ring}
|
||||
<button
|
||||
type="button"
|
||||
onclick={() => toggleRing(ring.key)}
|
||||
class="flex items-center gap-1.5 cursor-pointer select-none transition-opacity
|
||||
{hiddenRings.includes(ring.key) ? 'opacity-35' : 'opacity-100'}"
|
||||
title={hiddenRings.includes(ring.key) ? 'Einblenden (alle Gebiete)' : 'Ausblenden'}
|
||||
>
|
||||
<span class="dashed-line {hiddenRings.includes(ring.key) ? 'opacity-40' : ''}" style="border-color:{ring.color}"></span>
|
||||
<span class="{hiddenRings.includes(ring.key) ? 'line-through' : ''}">{ring.label}</span>
|
||||
</button>
|
||||
{/each}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user