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();
}