From 4134c3708bc5e3e309c43f71c21c543401ac8c47 Mon Sep 17 00:00:00 2001 From: Selina Date: Wed, 26 Nov 2025 19:19:46 +0800 Subject: [PATCH] Fix range date display for year graph --- ts/routes/graphs/reviews.ts | 39 +++++++++++++++++++++++++++++-------- 1 file changed, 31 insertions(+), 8 deletions(-) diff --git a/ts/routes/graphs/reviews.ts b/ts/routes/graphs/reviews.ts index 1f382c24b..4c83920a4 100644 --- a/ts/routes/graphs/reviews.ts +++ b/ts/routes/graphs/reviews.ts @@ -218,15 +218,38 @@ export function renderReviews( } function tooltipText(d: BinType, cumulative: number): string { + let dateStr: string; const now = new Date(); - let date = timeDay.offset(now, Math.floor(d.x0!)); - date = timeHour.offset(date, -sourceData.rolloverHour); - const dateStr = localizedDate(date, { - weekday: "long", - year: "numeric", - month: "long", - day: "numeric", - }); + const larger = Math.max(Math.abs(d.x0!), Math.abs(d.x1!)); + const smaller = Math.min(Math.abs(d.x0!), Math.abs(d.x1!)); + if (larger - smaller > 1) { + // range (year) + let startDate = timeDay.offset(now, Math.floor(d.x0!)); + startDate = timeHour.offset(startDate, -sourceData.rolloverHour); + let endDate = timeDay.offset(now, Math.floor(d.x1!) - 1); + endDate = timeHour.offset(endDate, -sourceData.rolloverHour); + const startDateStr = localizedDate(startDate, { + year: "numeric", + month: "short", + day: "numeric", + }); + const endDateStr = localizedDate(endDate, { + year: "numeric", + month: "short", + day: "numeric", + }); + dateStr = startDateStr + " - " + endDateStr; + } else { + // 1 month, 3 months + let date = timeDay.offset(now, Math.floor(d.x0!)); + date = timeHour.offset(date, -sourceData.rolloverHour); + dateStr = localizedDate(date, { + weekday: "long", + year: "numeric", + month: "long", + day: "numeric", + }); + } const day = dayLabel(d.x0!, d.x1!); const totals = totalsForBin(d); const dayTotal = valueLabel(sum(totals));