diff --git a/web/src/lib/components/base/dropdown.svelte b/web/src/lib/components/base/dropdown.svelte index 52988bcf..e86687f6 100644 --- a/web/src/lib/components/base/dropdown.svelte +++ b/web/src/lib/components/base/dropdown.svelte @@ -71,7 +71,7 @@ on:mousedown|stopPropagation={() => handleItemClick(item)} > {#if item.icon} - + {/if} {item.text} diff --git a/web/src/lib/components/trail/map_with_elevation.svelte b/web/src/lib/components/trail/map_with_elevation.svelte index 71d918fd..fb9c6bd3 100644 --- a/web/src/lib/components/trail/map_with_elevation.svelte +++ b/web/src/lib/components/trail/map_with_elevation.svelte @@ -23,6 +23,8 @@ let L: any; let controlElevation: any; + let selectedMetric: "altitude" | "slope" | "speed" | false = "altitude"; + $: gpxData = trail?.expand.gpx_data; $: if (gpxData && controlElevation) { controlElevation.clear(); @@ -33,11 +35,27 @@ controlElevation?.updateOptions(options); } - const hotlineSwitcherItems: DropdownItem[] = [ - { text: $_("altitude"), value: "altitude" }, - { text: $_("slope"), value: "slope" }, - { text: $_("speed"), value: "speed" }, - { text: $_("off"), value: false }, + $: hotlineSwitcherItems = [ + { + text: $_("altitude"), + value: "altitude", + icon: selectedMetric == "altitude" ? "square-check" : "square", + }, + { + text: $_("slope"), + value: "slope", + icon: selectedMetric == "slope" ? "square-check" : "square", + }, + { + text: $_("speed"), + value: "speed", + icon: selectedMetric == "speed" ? "square-check" : "square", + }, + { + text: $_("off"), + value: false, + icon: selectedMetric == false ? "square-check" : "square", + }, ]; onMount(async () => { @@ -183,7 +201,11 @@ }); function switchHotline(metric: "altitude" | "slope" | "speed" | false) { - controlElevation.updateOptions({ hotline: metric, autofitBounds: false }); + controlElevation.updateOptions({ + hotline: metric, + autofitBounds: false, + }); + selectedMetric = metric; controlElevation.clear(); controlElevation.load(gpxData); } @@ -204,7 +226,7 @@ let:toggleMenu={openDropdown} >