diff --git a/app/javascript/controllers/maps_controller.js b/app/javascript/controllers/maps_controller.js index 61aa970c..2d2f57a0 100644 --- a/app/javascript/controllers/maps_controller.js +++ b/app/javascript/controllers/maps_controller.js @@ -992,18 +992,29 @@ export default class extends Controller { // Get current date from URL query parameters const urlParams = new URLSearchParams(window.location.search); const startDate = urlParams.get('start_at'); - const currentYear = startDate ? new Date(startDate).getFullYear().toString() : null; - const currentMonth = startDate ? allMonths[new Date(startDate).getMonth()] : null; + const currentYear = startDate + ? new Date(startDate).getFullYear().toString() + : new Date().getFullYear().toString(); + const currentMonth = startDate + ? allMonths[new Date(startDate).getMonth()] + : allMonths[new Date().getMonth()]; // Initially create select with loading state and current year if available div.innerHTML = `
- +
+ + + Whole year + +
${allMonths.map(month => ` @@ -1060,8 +1071,8 @@ export default class extends Controller { const updateMonthLinks = (selectedYear, availableMonths) => { // Get current date from URL parameters const urlParams = new URLSearchParams(window.location.search); - const startDate = urlParams.get('start_at') ? new Date(urlParams.get('start_at')) : null; - const endDate = urlParams.get('end_at') ? new Date(urlParams.get('end_at')) : null; + const startDate = urlParams.get('start_at') ? new Date(urlParams.get('start_at')) : new Date(); + const endDate = urlParams.get('end_at') ? new Date(urlParams.get('end_at')) : new Date(); allMonths.forEach((month, index) => { const monthLink = div.querySelector(`a[data-month-name="${month}"]`); @@ -1115,6 +1126,14 @@ export default class extends Controller { const selectedOption = event.target.selectedOptions[0]; const selectedYear = selectedOption.value; const availableMonths = JSON.parse(selectedOption.dataset.months || '[]'); + + // Update whole year link with selected year + const wholeYearLink = document.getElementById('whole-year-link'); + const startDate = `${selectedYear}-01-01T00:00`; + const endDate = `${selectedYear}-12-31T23:59`; + const href = `map?end_at=${encodeURIComponent(endDate)}&start_at=${encodeURIComponent(startDate)}`; + wholeYearLink.setAttribute('href', href); + console.log('Year changed to:', selectedYear); updateMonthLinks(selectedYear, availableMonths); }); @@ -1179,5 +1198,28 @@ export default class extends Controller { } return chunked; } + + getWholeYearLink() { + // First try to get year from URL parameters + const urlParams = new URLSearchParams(window.location.search); + let year; + + if (urlParams.has('start_at')) { + year = new Date(urlParams.get('start_at')).getFullYear(); + } else { + // If no URL params, try to get year from start_at input + const startAtInput = document.querySelector('input#start_at'); + if (startAtInput && startAtInput.value) { + year = new Date(startAtInput.value).getFullYear(); + } else { + // If no input value, use current year + year = new Date().getFullYear(); + } + } + + const startDate = `${year}-01-01T00:00`; + const endDate = `${year}-12-31T23:59`; + return `map?end_at=${encodeURIComponent(endDate)}&start_at=${encodeURIComponent(startDate)}`; + } }