Add click-on-same-month to exit drill-down

Clicking on the already-selected month button now returns to root
view when drilled down, providing a quick way to reset the chart
without using browser back or center click.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Anton Volnuhin 2026-01-31 18:52:30 +03:00
parent d93c7c6051
commit 3e0726d34f

19
app.js
View File

@ -73,6 +73,16 @@ function navigateForward() {
} }
} }
// Go directly to root level
function goToRoot() {
if (drillDownHistory.length > 0 && historyIndex > 0) {
historyIndex = 0;
navigateToHistoryState(drillDownHistory[0]);
// Update browser history to reflect root state
history.replaceState({ drillDown: 0 }, '');
}
}
// Listen for browser back/forward via popstate // Listen for browser back/forward via popstate
window.addEventListener('popstate', function(e) { window.addEventListener('popstate', function(e) {
// If a modal is open, close it and push state back to prevent navigation // If a modal is open, close it and push state back to prevent navigation
@ -1602,9 +1612,16 @@ function navigateToPath(sunburstData, path) {
// Select and load a specific month // Select and load a specific month
async function selectMonth(index) { async function selectMonth(index) {
currentMonthIndex = index;
const month = availableMonths[index]; const month = availableMonths[index];
// If clicking on the already-selected month while drilled down, reset to root
if (index === currentMonthIndex && currentDrillPath.length > 0) {
goToRoot();
return;
}
currentMonthIndex = index;
// Update hidden select for compatibility // Update hidden select for compatibility
const select = document.getElementById('month-select'); const select = document.getElementById('month-select');
select.value = month; select.value = month;