diff --git a/rslib/src/config/bool.rs b/rslib/src/config/bool.rs index c76787cb0..8e4076175 100644 --- a/rslib/src/config/bool.rs +++ b/rslib/src/config/bool.rs @@ -59,11 +59,8 @@ pub enum BoolKey { /// This is a workaround for old clients that used ints to represent boolean /// values. For new config items, prefer using a bool directly. #[derive(Deserialize, Default)] -struct BoolLike( - #[serde(deserialize_with = "deserialize_bool_from_anything")] - #[allow(dead_code)] - bool, -); +#[allow(dead_code)] +struct BoolLike(#[serde(deserialize_with = "deserialize_bool_from_anything")] bool); impl Collection { pub fn get_config_bool(&self, key: BoolKey) -> bool { diff --git a/ts/lib/tslib/time.ts b/ts/lib/tslib/time.ts index a6285ff3f..b560f1546 100644 --- a/ts/lib/tslib/time.ts +++ b/ts/lib/tslib/time.ts @@ -170,37 +170,37 @@ export function dayLabel(daysStart: number, daysEnd: number): string { } else { return tr.statisticsDaysAgoSingle({ days: -daysStart }); } + } else { + // range + if (daysStart >= 0) { + return tr.statisticsInDaysRange({ + daysStart, + daysEnd: daysEnd - 1, + }); } else { - // range - if (daysStart >= 0) { - return tr.statisticsInDaysRange({ - daysStart, - daysEnd: daysEnd - 1, + // For bins that cross or end at day 0, we need special handling + if (daysEnd > 0) { + // Bin crosses day 0: show from 0 to the oldest day (exclusive of endDay) + // If bin is [-5, 1), we want "0-4 days ago" + return tr.statisticsDaysAgoRange({ + daysStart: 0, + daysEnd: -daysStart - 1, }); } else { - // For bins that cross or end at day 0, we need special handling - if (daysEnd > 0) { - // Bin crosses day 0: show from 0 to the oldest day (exclusive of endDay) - // If bin is [-5, 1), we want "0-4 days ago" - return tr.statisticsDaysAgoRange({ - daysStart: 0, - daysEnd: -daysStart - 1, - }); - } else { - // Bin is entirely in the past: show from newest to oldest - // For a bin [startDay, endDay), to show consecutive ranges like "0-4", "5-9", "10-14", - // we use endDay as the start of the range - // The bin width is daysEnd - daysStart, so daysEnd = daysStart + (width - 1) - // Example: bin [-10, -5) has width 5, should show "5-9 days ago" - const binWidth = Math.abs(daysEnd - daysStart); - const daysStartAbs = Math.abs(daysEnd); - return tr.statisticsDaysAgoRange({ - daysStart: daysStartAbs, - daysEnd: daysStartAbs + binWidth - 1, - }); - } + // Bin is entirely in the past: show from newest to oldest + // For a bin [startDay, endDay), to show consecutive ranges like "0-4", "5-9", "10-14", + // we use endDay as the start of the range + // The bin width is daysEnd - daysStart, so daysEnd = daysStart + (width - 1) + // Example: bin [-10, -5) has width 5, should show "5-9 days ago" + const binWidth = Math.abs(daysEnd - daysStart); + const daysStartAbs = Math.abs(daysEnd); + return tr.statisticsDaysAgoRange({ + daysStart: daysStartAbs, + daysEnd: daysStartAbs + binWidth - 1, + }); } } + } } /** Helper for converting Unix timestamps to date strings. */ diff --git a/ts/routes/graphs/reviews.ts b/ts/routes/graphs/reviews.ts index ed9c799d2..f26a9b157 100644 --- a/ts/routes/graphs/reviews.ts +++ b/ts/routes/graphs/reviews.ts @@ -239,7 +239,14 @@ export function renderReviews( const startDay = Math.floor(d.x0!); // If bin ends at 0, treat it as including day 0 (so use 1 as endDay for dayLabel) // For negative bins, use the bin end directly (dayLabel will handle the conversion) - const endDay = d.x1! === 0 ? 1 : d.x1! < 0 ? d.x1! : Math.ceil(d.x1!); + let endDay: number; + if (d.x1! === 0) { + endDay = 1; + } else if (d.x1! < 0) { + endDay = d.x1!; + } else { + endDay = Math.ceil(d.x1!); + } const day = dayLabel(startDay, endDay); const totals = totalsForBin(d); const dayTotal = valueLabel(sum(totals));