| ... | ... | @@ -61,8 +61,10 @@ export function UsagePage() { |
| 61 | 61 | : enumerateHourStarts(window.sinceTime, window.untilTime), |
| 62 | 62 | [window.sinceTime, window.untilTime], |
| 63 | 63 | ); |
| 64 | | const recentPeriods = useMemo<readonly (DailyTotals | HourlyTotals)[]>( |
| 65 | | () => (isPast24Hours ? merged.hourly : merged.daily).toReversed().slice(0, 8), |
| 64 | // Newest first: the window can run 90 periods, so the interesting end |
| 65 | // belongs at the top of the table. |
| 66 | const breakdownPeriods = useMemo<readonly (DailyTotals | HourlyTotals)[]>( |
| 67 | () => (isPast24Hours ? merged.hourly : merged.daily).toReversed(), |
| 66 | 68 | [isPast24Hours, merged.daily, merged.hourly], |
| 67 | 69 | ); |
| 68 | 70 | |
| ... | ... | @@ -393,14 +395,14 @@ export function UsagePage() { |
| 393 | 395 | </tr> |
| 394 | 396 | </thead> |
| 395 | 397 | <tbody> |
| 396 | | {recentPeriods.length === 0 ? ( |
| 398 | {breakdownPeriods.length === 0 ? ( |
| 397 | 399 | <tr> |
| 398 | 400 | <td colSpan={5} className="py-6 text-center text-muted-foreground"> |
| 399 | 401 | No activity in this window. |
| 400 | 402 | </td> |
| 401 | 403 | </tr> |
| 402 | 404 | ) : ( |
| 403 | | recentPeriods.map((period) => ( |
| 405 | breakdownPeriods.map((period) => ( |
| 404 | 406 | <tr |
| 405 | 407 | key={"hourStart" in period ? period.hourStart : period.day} |
| 406 | 408 | className="border-b border-border/50" |