auto-sync: 2026-05-05 16:00:01
This commit is contained in:
34
tasks/enduro-trails/prototype/static/app.js
vendored
34
tasks/enduro-trails/prototype/static/app.js
vendored
@@ -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);
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user