From 5daa6f2a25402958d608ae5b3ca5b56d4c2890d6 Mon Sep 17 00:00:00 2001 From: Gregor Vostrak Date: Mon, 7 Jul 2025 14:03:02 +0200 Subject: [PATCH] fix last 7 days statistic labels --- resources/js/packages/ui/src/utils/time.ts | 23 +++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/resources/js/packages/ui/src/utils/time.ts b/resources/js/packages/ui/src/utils/time.ts index d856ddac..8fc387ec 100644 --- a/resources/js/packages/ui/src/utils/time.ts +++ b/resources/js/packages/ui/src/utils/time.ts @@ -160,12 +160,29 @@ export function formatWeek(date: string | null): string { * @param date - date in the format of 'YYYY-MM-DD' */ export function formatHumanReadableDate(date: string) { - if (dayjs(date).isToday()) { + const dateObj = dayjs(date); + const today = dayjs(); + + if (dateObj.isToday()) { return 'Today'; - } else if (dayjs(date).isYesterday()) { + } else if (dateObj.isYesterday()) { return 'Yesterday'; } - return dayjs(date).fromNow(); + + // Calculate difference in days + const diffInDays = today.diff(dateObj, 'day'); + + if (diffInDays > 0 && diffInDays <= 30) { + // For dates in the past (2-30 days ago) + return `${diffInDays} ${diffInDays === 1 ? 'day' : 'days'} ago`; + } else if (diffInDays < 0 && diffInDays >= -30) { + // For dates in the future (within 30 days) + const futureDays = Math.abs(diffInDays); + return `In ${futureDays} ${futureDays === 1 ? 'day' : 'days'}`; + } + + // For dates older than 30 days, show the actual date + return dateObj.format('MMM D, YYYY'); } export function formatWeekday(date: string) {