From dd4ed959ab7c75b51c8dfd7efa8ab55a944211f1 Mon Sep 17 00:00:00 2001 From: Stream Date: Tue, 5 May 2026 14:10:01 +0300 Subject: [PATCH] auto-sync: 2026-05-05 14:10:01 --- tasks/enduro-trails/prototype/static/app.js | 75 ++++++++++----------- 1 file changed, 35 insertions(+), 40 deletions(-) diff --git a/tasks/enduro-trails/prototype/static/app.js b/tasks/enduro-trails/prototype/static/app.js index 08ebfda..1c02823 100644 --- a/tasks/enduro-trails/prototype/static/app.js +++ b/tasks/enduro-trails/prototype/static/app.js @@ -281,7 +281,8 @@ function showSkeleton(containerId, count) { // ─── Deactivate All Modes ────────────────────────────────────────── function deactivateAllModes() { - if (routeMode) { routeMode = false; document.getElementById('tb-route').classList.remove('active'); closeSheet('sheet-route'); clearRoute(); } + // Deactivate all input modes but preserve route/scenic/link data on map + if (routeMode) { routeMode = false; document.getElementById('tb-route').classList.remove('active'); closeSheet('sheet-route'); /* NOT clearRoute — keep line on map */ } if (rulerMode) toggleRuler(); if (markerMode) toggleMarkerMode(); if (typeof reconMode !== 'undefined' && reconMode) toggleReconMode(); @@ -392,19 +393,22 @@ function toggleRouteMode() { const sheet = document.getElementById('sheet-route'); if (routeMode) { - // Already in route mode - if (sheet.classList.contains('open')) { - // Sheet is open → close sheet but keep route on map - minimizeSheet('sheet-route'); - } else { - // Sheet already closed → exit route mode entirely (clear route) - routeMode = false; - btn.classList.remove('active'); - clearRoute(); - window._map.getCanvas().style.cursor = ''; - } + // Already in route input mode → exit input mode but keep route on map + routeMode = false; + btn.classList.remove('active'); + closeSheet('sheet-route'); + window._map.getCanvas().style.cursor = ''; + } else if (routeResults.length > 0) { + // Not in input mode, but route exists on map → clear it and start fresh + clearRoute(); + // Now enter input mode + deactivateAllModes(); + routeMode = true; + btn.classList.add('active'); + openSheet('sheet-route'); + window._map.getCanvas().style.cursor = 'crosshair'; } else { - // Enter route mode + // No route, not in mode → enter route input mode deactivateAllModes(); routeMode = true; btn.classList.add('active'); @@ -1183,16 +1187,13 @@ let reconRadius = 20; function toggleReconMode() { const btn = document.getElementById('tb-recon'); - const sheet = document.getElementById('sheet-recon'); if (reconMode) { - if (sheet.classList.contains('open')) { - minimizeSheet('sheet-recon'); - } else { - reconMode = false; - btn.classList.remove('active'); - window._map.getCanvas().style.cursor = ''; - clearRecon(); - } + // Exit recon mode + reconMode = false; + btn.classList.remove('active'); + closeSheet('sheet-recon'); + window._map.getCanvas().style.cursor = ''; + clearRecon(); // recon data is transient — safe to clear } else { deactivateAllModes(); reconMode = true; @@ -1295,16 +1296,13 @@ let linkMarkers = []; function toggleLinkMode() { const btn = document.getElementById('tb-link'); - const sheet = document.getElementById('sheet-link'); if (linkMode) { - if (sheet.classList.contains('open')) { - minimizeSheet('sheet-link'); - } else { - linkMode = false; - btn.classList.remove('active'); - window._map.getCanvas().style.cursor = ''; - clearLink(); - } + // Exit link mode + linkMode = false; + btn.classList.remove('active'); + closeSheet('sheet-link'); + window._map.getCanvas().style.cursor = ''; + clearLink(); } else { deactivateAllModes(); linkMode = true; @@ -1451,16 +1449,13 @@ let activeScenicIdx = 0; function toggleScenicMode() { const btn = document.getElementById('tb-scenic'); - const sheet = document.getElementById('sheet-scenic'); if (scenicMode) { - if (sheet.classList.contains('open')) { - minimizeSheet('sheet-scenic'); - } else { - scenicMode = false; - btn.classList.remove('active'); - window._map.getCanvas().style.cursor = ''; - clearScenic(); - } + // Exit scenic mode + scenicMode = false; + btn.classList.remove('active'); + closeSheet('sheet-scenic'); + window._map.getCanvas().style.cursor = ''; + clearScenic(); } else { deactivateAllModes(); scenicMode = true;