From b4fac02c270c3058891b858ecd2ccedfef01ac5c Mon Sep 17 00:00:00 2001 From: Stream Date: Tue, 5 May 2026 16:00:01 +0300 Subject: [PATCH] auto-sync: 2026-05-05 16:00:01 --- tasks/enduro-trails/prototype/static/app.js | 34 ++++++++++++--------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/tasks/enduro-trails/prototype/static/app.js b/tasks/enduro-trails/prototype/static/app.js index 5713071..af2f6a2 100644 --- a/tasks/enduro-trails/prototype/static/app.js +++ b/tasks/enduro-trails/prototype/static/app.js @@ -249,14 +249,18 @@ function initSheetSwipe() { sheet.classList.remove('swiping'); const dy = e.changedTouches[0].clientY - startY; if (dy > 80) { - // Close the sheet and deactivate mode const sheetId = sheet.id; - closeSheet(sheetId); - // Deactivate corresponding mode - if (sheetId === 'sheet-route' && routeMode) toggleRouteMode(); - else if (sheetId === 'sheet-recon' && reconMode) toggleReconMode(); - else if (sheetId === 'sheet-scenic' && scenicMode) toggleScenicMode(); - else if (sheetId === 'sheet-link' && linkMode) toggleLinkMode(); + if (sheetId === 'sheet-route' && routeResults && routeResults.length > 0) { + minimizeSheet(sheetId); + } else { + closeSheet(sheetId); + // Deactivate corresponding mode + if (sheetId === 'sheet-route' && routeMode) toggleRouteMode(); + else if (sheetId === 'sheet-recon' && reconMode) toggleReconMode(); + else if (sheetId === 'sheet-scenic' && scenicMode) toggleScenicMode(); + else if (sheetId === 'sheet-link' && linkMode) toggleLinkMode(); + } + sheet.style.transform = ''; } else { sheet.style.transform = ''; } @@ -393,16 +397,16 @@ function getBasePath() { // ─── Режим маршрута ──────────────────────────────────────────────── function toggleRouteMode() { const btn = document.getElementById('tb-route'); - const sheet = document.getElementById('sheet-route'); - + if (routeMode) { - // Already in route input mode → exit input mode but keep route on map + // X button pressed while panel open → exit mode + clear route routeMode = false; btn.classList.remove('active'); closeSheet('sheet-route'); + clearRoute(); window._map.getCanvas().style.cursor = ''; } else if (routeResults.length > 0) { - // Route exists — show full panel (hide mini first) + // Route exists, mini-bar visible → show full panel hideMiniRouteSheet(); deactivateAllModes(); routeMode = true; @@ -410,7 +414,7 @@ function toggleRouteMode() { openSheet('sheet-route'); window._map.getCanvas().style.cursor = 'crosshair'; } else { - // No route, not in mode → enter route input mode + // No route → enter route input mode hideMiniRouteSheet(); deactivateAllModes(); routeMode = true; @@ -1613,7 +1617,6 @@ document.addEventListener('DOMContentLoaded', () => { }); // ─── Mini Route Bar ────────────────────────────────────────────────── -const MINI_ROUTE_COLORS = ['#0066ff','#ff6600','#00aa44','#aa00ff','#ff0044']; function showMiniRouteSheet() { if (!routeResults || routeResults.length === 0) return; @@ -1632,7 +1635,7 @@ function updateMiniRouteCard() { if (!r) return; const km = (r.distance_m / 1000).toFixed(0); const dirt = r.stats?.dirt_total_pct ?? '—'; - document.getElementById('mini-dot').style.background = MINI_ROUTE_COLORS[activeRouteIdx % MINI_ROUTE_COLORS.length]; + document.getElementById('mini-dot').style.background = ROUTE_COLORS[activeRouteIdx % ROUTE_COLORS.length]; document.getElementById('mini-label').textContent = `Вариант ${activeRouteIdx + 1} из ${routeResults.length}`; document.getElementById('mini-stats').textContent = `${km} км · ${dirt}% грунт`; document.getElementById('mini-prev').style.opacity = activeRouteIdx > 0 ? '1' : '0.3'; @@ -1675,7 +1678,7 @@ function initMiniRouteInteraction() { const dx = e.changedTouches[0].clientX - startX; const dy = e.changedTouches[0].clientY - startY; if (Math.abs(dy) > Math.abs(dx)) { - if (dy < -40) { hideMiniRouteSheet(); openSheet('sheet-route'); } + if (dy < -40) { hideMiniRouteSheet(); openSheet('sheet-route'); selectRoute(activeRouteIdx); } } else { if (dx < -40) selectMiniRoute(activeRouteIdx + 1); if (dx > 40) selectMiniRoute(activeRouteIdx - 1); @@ -1686,5 +1689,6 @@ function initMiniRouteInteraction() { if (e.target.classList.contains('mini-arrow')) return; hideMiniRouteSheet(); openSheet('sheet-route'); + selectRoute(activeRouteIdx); }); }