diff --git a/frontend/index.html b/frontend/index.html index 8a169bb..0d51073 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -140,9 +140,14 @@
- - - + +
+ + + +
diff --git a/frontend/src/app.js b/frontend/src/app.js index f1cc4d0..dc2ba7e 100644 --- a/frontend/src/app.js +++ b/frontend/src/app.js @@ -443,22 +443,40 @@ gutter.addEventListener('dblclick', () => { /* CSS-`zoom` skaliert die Layout-Box, dadurch greifen die Scrollbalken des Diagramm-Containers korrekt (anders als transform: scale). */ const ZMIN = 0.3, ZMAX = 3, ZSTEP = 0.1; +const ZOOM_COLLAPSE_DELAY = 3000; /* 3 Sekunden */ let zoom = 1; +let zoomCollapseTimeout; + +function resetZoomCollapseTimeout(){ + const zoomctl = document.querySelector('.zoomctl'); + if(!zoomctl) return; + clearTimeout(zoomCollapseTimeout); + zoomctl.classList.remove('collapsed'); + zoomCollapseTimeout = setTimeout(() => { + zoomctl.classList.add('collapsed'); + }, ZOOM_COLLAPSE_DELAY); +} + function applyZoom(){ zoom = Math.min(ZMAX, Math.max(ZMIN, Math.round(zoom * 100) / 100)); out.style.zoom = zoom; document.getElementById('zoomReset').textContent = Math.round(zoom * 100) + ' %'; + resetZoomCollapseTimeout(); saveUI(); } document.getElementById('zoomIn').addEventListener('click', () => { zoom += ZSTEP; applyZoom(); }); document.getElementById('zoomOut').addEventListener('click', () => { zoom -= ZSTEP; applyZoom(); }); document.getElementById('zoomReset').addEventListener('click', () => { zoom = 1; applyZoom(); }); +document.querySelector('.zoomctl').addEventListener('click', (e) => { + if(e.target.closest('#zoomToggle')) resetZoomCollapseTimeout(); +}); diagramEl.addEventListener('wheel', e => { if(!(e.ctrlKey || e.metaKey)) return; /* Strg/Cmd + Mausrad zoomt */ e.preventDefault(); zoom += (e.deltaY < 0 ? ZSTEP : -ZSTEP); applyZoom(); }, {passive:false}); +resetZoomCollapseTimeout(); /* Initialer Timeout beim Laden */ const showc = document.getElementById('showc'); function discardedShown(){ return showc.getAttribute('aria-pressed') === 'true'; } diff --git a/frontend/src/style.css b/frontend/src/style.css index 36e7fcc..b012676 100644 --- a/frontend/src/style.css +++ b/frontend/src/style.css @@ -343,7 +343,7 @@ /* Zoom-Steuerung: schwebt unten rechts über dem Diagramm. */ .zoomctl{ - position:absolute;right:14px;bottom:14px;z-index:5; + position:absolute;right:6px;bottom:6px;z-index:5; display:inline-flex;align-items:center;gap:2px;padding:2px; background:var(--card);border:1px solid rgba(36,52,71,.18); border-radius:8px;box-shadow:0 1px 4px rgba(36,52,71,.14); @@ -355,6 +355,10 @@ } #zoomReset{min-width:48px;font-size:.72rem} .zoomctl button:hover{background:var(--paper);color:var(--or)} + .zoomToggle{display:none;padding:6px} + .zoomToggle svg{width:20px;height:20px} + .zoomctl.collapsed .zoomToggle{display:block} + .zoomctl.collapsed .zoomcontrols{display:none} .panel.collapsed .zoomctl{display:none} /* ---------- Baum ---------- */