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');
|
sheet.classList.remove('swiping');
|
||||||
const dy = e.changedTouches[0].clientY - startY;
|
const dy = e.changedTouches[0].clientY - startY;
|
||||||
if (dy > 80) {
|
if (dy > 80) {
|
||||||
// Close the sheet and deactivate mode
|
|
||||||
const sheetId = sheet.id;
|
const sheetId = sheet.id;
|
||||||
closeSheet(sheetId);
|
if (sheetId === 'sheet-route' && routeResults && routeResults.length > 0) {
|
||||||
// Deactivate corresponding mode
|
minimizeSheet(sheetId);
|
||||||
if (sheetId === 'sheet-route' && routeMode) toggleRouteMode();
|
} else {
|
||||||
else if (sheetId === 'sheet-recon' && reconMode) toggleReconMode();
|
closeSheet(sheetId);
|
||||||
else if (sheetId === 'sheet-scenic' && scenicMode) toggleScenicMode();
|
// Deactivate corresponding mode
|
||||||
else if (sheetId === 'sheet-link' && linkMode) toggleLinkMode();
|
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 {
|
} else {
|
||||||
sheet.style.transform = '';
|
sheet.style.transform = '';
|
||||||
}
|
}
|
||||||
@@ -393,16 +397,16 @@ function getBasePath() {
|
|||||||
// ─── Режим маршрута ────────────────────────────────────────────────
|
// ─── Режим маршрута ────────────────────────────────────────────────
|
||||||
function toggleRouteMode() {
|
function toggleRouteMode() {
|
||||||
const btn = document.getElementById('tb-route');
|
const btn = document.getElementById('tb-route');
|
||||||
const sheet = document.getElementById('sheet-route');
|
|
||||||
|
|
||||||
if (routeMode) {
|
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;
|
routeMode = false;
|
||||||
btn.classList.remove('active');
|
btn.classList.remove('active');
|
||||||
closeSheet('sheet-route');
|
closeSheet('sheet-route');
|
||||||
|
clearRoute();
|
||||||
window._map.getCanvas().style.cursor = '';
|
window._map.getCanvas().style.cursor = '';
|
||||||
} else if (routeResults.length > 0) {
|
} else if (routeResults.length > 0) {
|
||||||
// Route exists — show full panel (hide mini first)
|
// Route exists, mini-bar visible → show full panel
|
||||||
hideMiniRouteSheet();
|
hideMiniRouteSheet();
|
||||||
deactivateAllModes();
|
deactivateAllModes();
|
||||||
routeMode = true;
|
routeMode = true;
|
||||||
@@ -410,7 +414,7 @@ function toggleRouteMode() {
|
|||||||
openSheet('sheet-route');
|
openSheet('sheet-route');
|
||||||
window._map.getCanvas().style.cursor = 'crosshair';
|
window._map.getCanvas().style.cursor = 'crosshair';
|
||||||
} else {
|
} else {
|
||||||
// No route, not in mode → enter route input mode
|
// No route → enter route input mode
|
||||||
hideMiniRouteSheet();
|
hideMiniRouteSheet();
|
||||||
deactivateAllModes();
|
deactivateAllModes();
|
||||||
routeMode = true;
|
routeMode = true;
|
||||||
@@ -1613,7 +1617,6 @@ document.addEventListener('DOMContentLoaded', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// ─── Mini Route Bar ──────────────────────────────────────────────────
|
// ─── Mini Route Bar ──────────────────────────────────────────────────
|
||||||
const MINI_ROUTE_COLORS = ['#0066ff','#ff6600','#00aa44','#aa00ff','#ff0044'];
|
|
||||||
|
|
||||||
function showMiniRouteSheet() {
|
function showMiniRouteSheet() {
|
||||||
if (!routeResults || routeResults.length === 0) return;
|
if (!routeResults || routeResults.length === 0) return;
|
||||||
@@ -1632,7 +1635,7 @@ function updateMiniRouteCard() {
|
|||||||
if (!r) return;
|
if (!r) return;
|
||||||
const km = (r.distance_m / 1000).toFixed(0);
|
const km = (r.distance_m / 1000).toFixed(0);
|
||||||
const dirt = r.stats?.dirt_total_pct ?? '—';
|
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-label').textContent = `Вариант ${activeRouteIdx + 1} из ${routeResults.length}`;
|
||||||
document.getElementById('mini-stats').textContent = `${km} км · ${dirt}% грунт`;
|
document.getElementById('mini-stats').textContent = `${km} км · ${dirt}% грунт`;
|
||||||
document.getElementById('mini-prev').style.opacity = activeRouteIdx > 0 ? '1' : '0.3';
|
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 dx = e.changedTouches[0].clientX - startX;
|
||||||
const dy = e.changedTouches[0].clientY - startY;
|
const dy = e.changedTouches[0].clientY - startY;
|
||||||
if (Math.abs(dy) > Math.abs(dx)) {
|
if (Math.abs(dy) > Math.abs(dx)) {
|
||||||
if (dy < -40) { hideMiniRouteSheet(); openSheet('sheet-route'); }
|
if (dy < -40) { hideMiniRouteSheet(); openSheet('sheet-route'); selectRoute(activeRouteIdx); }
|
||||||
} else {
|
} else {
|
||||||
if (dx < -40) selectMiniRoute(activeRouteIdx + 1);
|
if (dx < -40) selectMiniRoute(activeRouteIdx + 1);
|
||||||
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;
|
if (e.target.classList.contains('mini-arrow')) return;
|
||||||
hideMiniRouteSheet();
|
hideMiniRouteSheet();
|
||||||
openSheet('sheet-route');
|
openSheet('sheet-route');
|
||||||
|
selectRoute(activeRouteIdx);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user