From 01ffaf9b8f05ffa73ba14202a36727e593878918 Mon Sep 17 00:00:00 2001 From: Christian Beutel <> Date: Sat, 14 Sep 2024 19:27:59 +0200 Subject: [PATCH] fixes icon picker --- web/src/lib/components/base/combobox.svelte | 7 ++--- web/src/lib/components/base/text_field.svelte | 4 ++- .../trail/map_with_elevation_multiple.svelte | 2 +- web/src/lib/stores/trail_store.ts | 6 +++-- .../libs/leaflet-gpxgroup.js | 1 + web/src/routes/map/+page.svelte | 27 +++++++++++++++---- 6 files changed, 35 insertions(+), 12 deletions(-) diff --git a/web/src/lib/components/base/combobox.svelte b/web/src/lib/components/base/combobox.svelte index 7ed43152..c18eae77 100644 --- a/web/src/lib/components/base/combobox.svelte +++ b/web/src/lib/components/base/combobox.svelte @@ -28,10 +28,11 @@ await tick(); const dropdownMenu = document.querySelector(".menu"); if (dropdownMenu) { - let dropdownHTML = dropdownMenu.innerHTML; - - for (const li of dropdownMenu.children) { + for (let i = 0; i < dropdownMenu.children.length; i++) { + const li = dropdownMenu.children[i]; const textNode = li.getElementsByTagName("p")[0]; + textNode.innerHTML = items[i].text; + const text = textNode.innerText.replace( new RegExp(value, "gi"), (match) => `${match}`, diff --git a/web/src/lib/components/base/text_field.svelte b/web/src/lib/components/base/text_field.svelte index da513fc1..32a7baba 100644 --- a/web/src/lib/components/base/text_field.svelte +++ b/web/src/lib/components/base/text_field.svelte @@ -22,7 +22,9 @@ {/if}
{#if icon.length > 0} - +
+ +
{/if} + `
  • diff --git a/web/src/lib/stores/trail_store.ts b/web/src/lib/stores/trail_store.ts index b3f1e387..f9437b3e 100644 --- a/web/src/lib/stores/trail_store.ts +++ b/web/src/lib/stores/trail_store.ts @@ -35,7 +35,7 @@ export async function trails_index(perPage: number = 21, random: boolean = false export async function trails_search_filter(filter: TrailFilter, page: number = 1, f: (url: RequestInfo | URL, config?: RequestInit) => Promise = fetch) { let filterText: string = buildFilterText(filter, true); - + let r = await f("/api/v1/search/trails", { method: "POST", body: JSON.stringify({ q: filter.q, options: { filter: filterText, sort: [`${filter.sort}:${filter.sortOrder == "+" ? "asc" : "desc"}`], hitsPerPage: 21, page: page } }), @@ -120,7 +120,9 @@ export async function trails_search_bounding_box(northEast: LatLng, southWest: L const comparison = compareObjectArrays(get(trails), response.items) - trails.set(response.items); + if (comparison.added.length || comparison.deleted.length || comparison.updated.length) { + trails.set(response.items); + } return comparison; } else { diff --git a/web/src/lib/vendor/leaflet-elevation/libs/leaflet-gpxgroup.js b/web/src/lib/vendor/leaflet-elevation/libs/leaflet-gpxgroup.js index 63da6a6e..0c3f09ef 100644 --- a/web/src/lib/vendor/leaflet-elevation/libs/leaflet-gpxgroup.js +++ b/web/src/lib/vendor/leaflet-elevation/libs/leaflet-gpxgroup.js @@ -362,6 +362,7 @@ export const GpxGroup = L.GpxGroup = L.Class.extend({ } await elevation._initHotLine(route, this._hotline) + this._map.flyToBounds(route.getBounds(), { duration: 0.25, easeLinearity: 0.25, noMoveStart: true }); diff --git a/web/src/routes/map/+page.svelte b/web/src/routes/map/+page.svelte index 8ce1e7c8..f09148c9 100644 --- a/web/src/routes/map/+page.svelte +++ b/web/src/routes/map/+page.svelte @@ -93,7 +93,7 @@ } function handleSearchClick(item: SearchItem) { - map.setView([item.value._geo.lat, item.value._geo.lng], 12); + map.setView([item.value._geo.lat, item.value._geo.lng], 14); } async function searchTrails(northEast: LatLng, southWest: LatLng) { @@ -130,7 +130,18 @@ } function handleMapInit() { - if (settings && settings.mapFocus == "trails") { + if ( + $page.url.searchParams.has("tl_lat") && + $page.url.searchParams.has("tl_lon") && + $page.url.searchParams.has("br_lat") && + $page.url.searchParams.has("br_lon") + ) { + const boundingBox: LatLngBoundsExpression = [ + [parseFloat($page.url.searchParams.get("br_lat")!), parseFloat($page.url.searchParams.get("tl_lon")!)], + [parseFloat($page.url.searchParams.get("tl_lat")!), parseFloat($page.url.searchParams.get("br_lon")!)], + ]; + map.fitBounds(boundingBox); + } else if (settings && settings.mapFocus == "trails") { const boundingBox: LatLngBoundsExpression = [ [maxBoundingBox.max_lat, maxBoundingBox.min_lon], [maxBoundingBox.min_lat, maxBoundingBox.max_lon], @@ -206,8 +217,11 @@ {#if $trails.length == 0} {/if} - {#each $trails as trail,i} -
    + {#each $trails as trail, i} + handleTrailCardMouseEnter(trail)} @@ -217,7 +231,10 @@ {/each} {/if}
  • -
    +