From c69b263cdceb459047f6333e176f1cef85a82966 Mon Sep 17 00:00:00 2001 From: Usman Baig Date: Mon, 19 Jan 2026 11:00:55 +0100 Subject: [PATCH] feat: Add 1 min and 1 hour interval selection for Today view in analytics dashboard --- app/share/[id]/page.tsx | 18 +++++++++++++++--- app/sites/[id]/page.tsx | 18 +++++++++++++++--- components/dashboard/Chart.tsx | 14 ++++++++++++-- 3 files changed, 42 insertions(+), 8 deletions(-) diff --git a/app/share/[id]/page.tsx b/app/share/[id]/page.tsx index 7545776..ae40be7 100644 --- a/app/share/[id]/page.tsx +++ b/app/share/[id]/page.tsx @@ -41,6 +41,7 @@ export default function PublicDashboardPage() { // Date range state const [dateRange, setDateRange] = useState(getDateRange(30)) const [isDatePickerOpen, setIsDatePickerOpen] = useState(false) + const [todayInterval, setTodayInterval] = useState<'minute' | 'hour'>('hour') // Auto-refresh interval (for realtime) useEffect(() => { @@ -56,7 +57,7 @@ export default function PublicDashboardPage() { useEffect(() => { loadDashboard() - }, [siteId, dateRange]) + }, [siteId, dateRange, todayInterval]) const loadDashboard = async (silent = false) => { try { @@ -67,7 +68,7 @@ export default function PublicDashboardPage() { dateRange.start, dateRange.end, 10, - dateRange.start === dateRange.end ? 'hour' : 'day', + dateRange.start === dateRange.end ? todayInterval : 'day', password ) @@ -224,6 +225,17 @@ export default function PublicDashboardPage() { { value: 'custom', label: 'Custom' }, ]} /> + {dateRange.start === new Date().toISOString().split('T')[0] && dateRange.end === new Date().toISOString().split('T')[0] && ( + setTodayInterval(value as 'minute' | 'hour')} + options={[ + { value: 'minute', label: '1 min' }, + { value: 'hour', label: '1 hour' }, + ]} + className="min-w-[100px]" + /> + )}