diff --git a/app/api/servers/get/route.ts b/app/api/servers/get/route.ts index 65551ee..7b7e156 100644 --- a/app/api/servers/get/route.ts +++ b/app/api/servers/get/route.ts @@ -5,13 +5,19 @@ import { Prisma } from "@prisma/client"; interface GetRequest { page?: number; ITEMS_PER_PAGE?: number; - timeRange?: '1h' | '7d' | '30d'; + timeRange?: '1h' | '1d' | '7d' | '30d'; serverId?: number; } -const getTimeRange = (timeRange: '1h' | '7d' | '30d' = '1h') => { +const getTimeRange = (timeRange: '1h' | '1d' | '7d' | '30d' = '1h') => { const now = new Date(); switch (timeRange) { + case '1d': + return { + start: new Date(now.getTime() - 24 * 60 * 60 * 1000), + end: now, + intervalMinutes: 15 // 15 minute intervals + }; case '7d': return { start: new Date(now.getTime() - 7 * 24 * 60 * 60 * 1000), @@ -34,11 +40,14 @@ const getTimeRange = (timeRange: '1h' | '7d' | '30d' = '1h') => { } }; -const getIntervals = (timeRange: '1h' | '7d' | '30d' = '1h') => { +const getIntervals = (timeRange: '1h' | '1d' | '7d' | '30d' = '1h') => { const { start, end, intervalMinutes } = getTimeRange(timeRange); let intervalCount: number; switch (timeRange) { + case '1d': + intervalCount = 96; // 24 hours * 4 (15-minute intervals) + break; case '7d': intervalCount = 168; // 7 days * 24 hours break; diff --git a/app/dashboard/servers/[server_id]/Server.tsx b/app/dashboard/servers/[server_id]/Server.tsx index e9b2cf6..4d0846b 100644 --- a/app/dashboard/servers/[server_id]/Server.tsx +++ b/app/dashboard/servers/[server_id]/Server.tsx @@ -67,7 +67,7 @@ export default function ServerDetail() { const params = useParams() const serverId = params.server_id as string const [server, setServer] = useState(null) - const [timeRange, setTimeRange] = useState<'1h' | '7d' | '30d'>('1h') + const [timeRange, setTimeRange] = useState<'1h' | '1d' | '7d' | '30d'>('1h') const [loading, setLoading] = useState(true) // Chart references @@ -114,6 +114,12 @@ export default function ServerDetail() { const d = new Date(date) if (timeRange === '1h') { return d.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }) + } else if (timeRange === '1d') { + // For 1 day, show hours and minutes + return d.toLocaleTimeString([], { + hour: '2-digit', + minute: '2-digit' + }) } else if (timeRange === '7d') { // For 7 days, show day and time return d.toLocaleDateString([], { @@ -139,6 +145,8 @@ export default function ServerDetail() { if (timeRange === '1h') { return `Last Hour (${startDate.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' })} - ${now.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' })})` + } else if (timeRange === '1d') { + return `Last 24 Hours (${startDate.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' })} - ${now.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' })})` } else if (timeRange === '7d') { return `Last 7 Days (${startDate.toLocaleDateString([], { month: 'short', day: 'numeric' })} - ${now.toLocaleDateString([], { month: 'short', day: 'numeric' })})` } else { @@ -516,18 +524,21 @@ export default function ServerDetail() { {timeRange === '1h' ? 'Last hour, per minute' - : timeRange === '7d' - ? 'Last 7 days, hourly intervals' - : 'Last 30 days, 4-hour intervals'} + : timeRange === '1d' + ? 'Last 24 hours, 15-minute intervals' + : timeRange === '7d' + ? 'Last 7 days, hourly intervals' + : 'Last 30 days, 4-hour intervals'}
- setTimeRange(value)}> Last Hour (per minute) + Last 24 Hours (15 min) Last 7 Days (hourly) Last 30 Days (4h intervals)