From 7b1df79a371b3d5fa53d49006f54fd645b557f9f Mon Sep 17 00:00:00 2001 From: Daniel Michelberger Date: Thu, 6 Aug 2026 19:28:28 +0200 Subject: [PATCH] =?UTF-8?q?fix:=20H=C3=B6henprofil-Hervorhebung=20=C3=BCbe?= =?UTF-8?q?r=20Distanz=20statt=20Index=20koppeln?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit elevation enthält einen Eintrag pro Originalpunkt, geojson.coordinates nur die per Douglas-Peucker vereinfachten Punkte. Ein gemeinsamer Index zeigte deshalb ab rund 3 % des Profils auf das Streckenende. Die neue Distanz-Kopplung nutzt coord_distances (kumulative Distanz je vereinfachter Koordinate), um beim Überfahren des Höhenprofils die nächstgelegene Stelle auf der Karte zu finden. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01NBMBfip6BAG8VV9raSf6vu --- .../pb_migrations/1754400000_init_schema.js | 13 ++++- ...54500400_trail_versions_coord_distances.js | 20 ++++++++ .../lib/components/ElevationProfile.svelte | 11 +++-- frontend/src/lib/components/TrailMap.svelte | 25 ++++++++-- frontend/src/lib/gpx.test.ts | 18 +++++++ frontend/src/lib/gpx.ts | 48 +++++++++++++------ .../src/lib/stores/trailVersions.svelte.ts | 1 + frontend/src/lib/types.d.ts | 5 +- .../src/routes/dashboard/trails/+page.svelte | 2 + .../routes/dashboard/trails/[id]/+page.svelte | 31 ++++++++---- 10 files changed, 138 insertions(+), 36 deletions(-) create mode 100644 backend/pb_migrations/1754500400_trail_versions_coord_distances.js diff --git a/backend/pb_migrations/1754400000_init_schema.js b/backend/pb_migrations/1754400000_init_schema.js index 1b1ec74..23aed54 100644 --- a/backend/pb_migrations/1754400000_init_schema.js +++ b/backend/pb_migrations/1754400000_init_schema.js @@ -1260,11 +1260,22 @@ migrate((app) => { "presentable": false, "system": false, "type": "autodate" + }, + { + "help": "", + "hidden": false, + "id": "json1889387860", + "maxSize": 2000000, + "name": "coord_distances", + "presentable": false, + "required": false, + "system": false, + "type": "json" } ], "indexes": [], "created": "2026-08-06 14:55:19.501Z", - "updated": "2026-08-06 14:55:19.501Z", + "updated": "2026-08-06 17:20:30.496Z", "system": false }, { diff --git a/backend/pb_migrations/1754500400_trail_versions_coord_distances.js b/backend/pb_migrations/1754500400_trail_versions_coord_distances.js new file mode 100644 index 0000000..54bd586 --- /dev/null +++ b/backend/pb_migrations/1754500400_trail_versions_coord_distances.js @@ -0,0 +1,20 @@ +/// + +// Kumulative Distanz je Koordinate der vereinfachten Geometrie. Nötig, weil +// elevation einen Eintrag pro Originalpunkt hat, geojson aber nur die +// vereinfachten — ohne diese Brücke zeigt die Hervorhebung aus dem +// Höhenprofil auf der Karte an die falsche Stelle. + +migrate((app) => { + const c = app.findCollectionByNameOrId('trail_versions') + c.fields.add(new Field({ + name: 'coord_distances', + type: 'json', + maxSize: 2000000, + })) + app.save(c) +}, (app) => { + const c = app.findCollectionByNameOrId('trail_versions') + c.fields.removeByName('coord_distances') + app.save(c) +}) diff --git a/frontend/src/lib/components/ElevationProfile.svelte b/frontend/src/lib/components/ElevationProfile.svelte index b8ff0ba..116dc1b 100644 --- a/frontend/src/lib/components/ElevationProfile.svelte +++ b/frontend/src/lib/components/ElevationProfile.svelte @@ -1,8 +1,9 @@