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}
-