reverses waypoint relation

This commit is contained in:
Christian Beutel
2025-09-12 17:48:41 +02:00
parent 9c628c6511
commit 73d20b1cbc
19 changed files with 238 additions and 115 deletions

View File

@@ -139,7 +139,7 @@
summit_logs_via_trail: z
.array(SummitLogCreateSchema)
.optional(),
waypoints: z
waypoints_via_trail: z
.array(
WaypointCreateSchema.extend({
marker: z.any().optional(),
@@ -384,11 +384,10 @@
}
function clearWaypoints() {
for (const waypoint of $formData.expand!.waypoints ?? []) {
for (const waypoint of $formData.expand!.waypoints_via_trail ?? []) {
waypoint.marker?.remove();
}
$formData.expand!.waypoints = [];
$formData.waypoints = [];
$formData.expand!.waypoints_via_trail = [];
}
function initRouteAnchors(gpx: GPX, addToMap: boolean = false) {
@@ -445,29 +444,28 @@
}
function deleteWaypoint(index: number) {
const wp = $formData.expand!.waypoints?.splice(index, 1);
$formData.waypoints.splice(index, 1);
const wp = $formData.expand!.waypoints_via_trail?.splice(index, 1);
if (!$formData.expand!.waypoints?.length) {
$formData.expand!.waypoints = [];
if (!$formData.expand!.waypoints_via_trail?.length) {
$formData.expand!.waypoints_via_trail = [];
}
$formData.expand!.waypoints = $formData.expand!.waypoints;
$formData.expand!.waypoints_via_trail = $formData.expand!.waypoints_via_trail;
// updateTrailOnMap();
}
function saveWaypoint(savedWaypoint: Waypoint) {
let editedWaypointIndex =
$formData.expand!.waypoints?.findIndex(
$formData.expand!.waypoints_via_trail?.findIndex(
(s) => s.id == savedWaypoint.id,
) ?? -1;
if (editedWaypointIndex >= 0) {
$formData.expand!.waypoints![editedWaypointIndex] = savedWaypoint;
$formData.expand!.waypoints_via_trail![editedWaypointIndex] = savedWaypoint;
} else {
savedWaypoint.id = cryptoRandomString({ length: 15 });
$formData.expand!.waypoints = [
...($formData.expand!.waypoints ?? []),
$formData.expand!.waypoints_via_trail = [
...($formData.expand!.waypoints_via_trail ?? []),
savedWaypoint,
];
@@ -478,15 +476,15 @@
function moveMarker(marker: M.Marker, wpId?: string) {
const position = marker.getLngLat();
const editableWaypointIndex =
$formData.expand!.waypoints?.findIndex((w) => w.id == wpId) ?? -1;
$formData.expand!.waypoints_via_trail?.findIndex((w) => w.id == wpId) ?? -1;
const editableWaypoint =
$formData.expand!.waypoints![editableWaypointIndex];
$formData.expand!.waypoints_via_trail![editableWaypointIndex];
if (!editableWaypoint) {
return;
}
editableWaypoint.lat = position.lat;
editableWaypoint.lon = position.lng;
$formData.expand!.waypoints = [...($formData.expand!.waypoints ?? [])];
$formData.expand!.waypoints_via_trail = [...($formData.expand!.waypoints_via_trail ?? [])];
// updateTrailOnMap();
}
@@ -1369,7 +1367,7 @@
{$_("waypoints", { values: { n: 2 } })}
</h3>
<ul>
{#each $formData.expand?.waypoints ?? [] as waypoint, i}
{#each $formData.expand?.waypoints_via_trail ?? [] as waypoint, i}
<li
onmouseenter={() => openMarkerPopup(waypoint)}
onmouseleave={() => openMarkerPopup(waypoint)}
@@ -1501,7 +1499,7 @@
<div id="trail-map">
<MapWithElevationMaplibre
trails={mapTrail}
waypoints={$formData.expand?.waypoints}
waypoints={$formData.expand?.waypoints_via_trail}
drawing={drawingActive}
showTerrain={true}
onmarkerdragend={moveMarker}