diff --git a/wwwroot/app.js b/wwwroot/app.js index fb63ac1..c4ec65e 100644 --- a/wwwroot/app.js +++ b/wwwroot/app.js @@ -67,7 +67,7 @@ async function loadView() { $('range-label').textContent = `${fmtDate(viewFrom)} - ${fmtDate(viewTo)} (${entryMode ? 'Einträge' : ZOOM_LEVELS[zoomIndex].name})`; - $('btn-zoom-out').disabled = zoomStack.length === 0; + $('btn-zoom-out').disabled = zoomStack.length === 0 && zoomIndex === 0 && !entryMode; if (entryMode) { const [entries, summary] = await Promise.all([ @@ -337,12 +337,20 @@ function enterEntryMode(bucketStart, bucketEnd) { } function zoomOut() { - if (!zoomStack.length) return; - const prev = zoomStack.pop(); - viewFrom = prev.from; - viewTo = prev.to; - zoomIndex = prev.zoom; - entryMode = prev.entry; + if (zoomStack.length) { + const prev = zoomStack.pop(); + viewFrom = prev.from; + viewTo = prev.to; + zoomIndex = prev.zoom; + entryMode = prev.entry; + } else { + // Reset to default view + viewTo = new Date(); + viewFrom = new Date(viewTo); + viewFrom.setDate(viewFrom.getDate() - ZOOM_LEVELS[0].days); + zoomIndex = 0; + entryMode = false; + } loadView(); } @@ -473,5 +481,5 @@ function escAttr(s) { } function pct(cost) { - return (cost / WEEKLY_BUDGET * 100).toFixed(2) + '%'; + return (cost / WEEKLY_BUDGET * 100).toFixed(3) + '%'; }