diff --git a/src/__tests__/format.test.ts b/src/__tests__/format.test.ts index 0ca2a06..a0fc903 100644 --- a/src/__tests__/format.test.ts +++ b/src/__tests__/format.test.ts @@ -114,6 +114,20 @@ describe("formatWindowLabel", () => { it("returns Daily for 1440", () => { expect(formatWindowLabel(1440)).toBe("Daily") }) + + it("returns Monthly for 43200", () => { + expect(formatWindowLabel(43200)).toBe("Monthly") + }) + + it("returns Hourly for 60", () => { + expect(formatWindowLabel(60)).toBe("Hourly") + }) + + it("returns human-readable fallback for unknown durations", () => { + expect(formatWindowLabel(720)).toBe("12h") + expect(formatWindowLabel(2880)).toBe("2d") + expect(formatWindowLabel(30)).toBe("30m") + }) }) describe("getPercentColor", () => { diff --git a/src/format.ts b/src/format.ts index de8edb2..ea423a6 100644 --- a/src/format.ts +++ b/src/format.ts @@ -43,10 +43,16 @@ export function formatBar( export function formatWindowLabel(windowDurationMins: number | null | undefined): string { if (windowDurationMins == null) return "Unknown" + if (windowDurationMins === 60) return "Hourly" if (windowDurationMins === 300) return "Session" - if (windowDurationMins === 10080) return "Weekly" if (windowDurationMins === 1440) return "Daily" - if (windowDurationMins === 60) return "Hourly" + if (windowDurationMins === 10080) return "Weekly" + if (windowDurationMins === 43200) return "Monthly" + + const totalHours = Math.floor(windowDurationMins / 60) + const days = Math.floor(totalHours / 24) + if (days > 0) return `${days}d` + if (totalHours > 0) return `${totalHours}h` return `${windowDurationMins}m` }