diff --git a/src/resources/views/dashboard.blade.php b/src/resources/views/dashboard.blade.php index 1bc364f..d11cd45 100644 --- a/src/resources/views/dashboard.blade.php +++ b/src/resources/views/dashboard.blade.php @@ -120,6 +120,22 @@
+ + + + +
+ @@ -377,8 +393,22 @@ // ── Date filter helpers ── function getDateParams() { - const from = document.getElementById('filter-from').value; - const to = document.getElementById('filter-to').value; + let from = document.getElementById('filter-from').value; + let to = document.getElementById('filter-to').value; + + // Default to YTD if both are empty + if (!from && !to) { + const now = new Date(); + from = `${now.getFullYear()}-01-01`; + to = now.toISOString().split('T')[0]; + + // Update the visual inputs + document.getElementById('filter-from').value = from; + document.getElementById('filter-to').value = to; + + setTimeout(updateFilterStatus, 50); + } + const params = new URLSearchParams(); if (from) params.set('from', from); if (to) params.set('to', to); @@ -386,9 +416,32 @@ function getDateParams() { } function clearDateFilter() { + document.getElementById('filter-fy').value = ''; document.getElementById('filter-from').value = ''; document.getElementById('filter-to').value = ''; - document.getElementById('filter-status').textContent = ''; + // When cleared, getDateParams will automatically set it back to YTD + // and updateFilterStatus will be called via timeout + loadAllData(); + } + + function applyFinancialYear() { + const fyYear = document.getElementById('filter-fy').value; + if (!fyYear) return; + + const startYear = parseInt(fyYear); + const endYear = startYear + 1; + + // Financial year starts March 1st + const from = `${startYear}-03-01`; + + // Calculate last day of Feb taking leap years into account + const isLeapYear = (endYear % 4 === 0 && endYear % 100 !== 0) || (endYear % 400 === 0); + const to = `${endYear}-02-${isLeapYear ? '29' : '28'}`; + + document.getElementById('filter-from').value = from; + document.getElementById('filter-to').value = to; + + updateFilterStatus(); loadAllData(); }