fixed even bin sizes (0-4 days and 360-364 days) for year review graph

This commit is contained in:
junlu592 2025-12-09 14:56:30 +01:00
parent 6e341d5e07
commit a2be2b964f

View file

@ -90,7 +90,7 @@ export function renderReviews(
): TableDatum[] { ): TableDatum[] {
const svg = select(svgElem); const svg = select(svgElem);
const trans = svg.transition().duration(600) as any; const trans = svg.transition().duration(600) as any;
const xMax = 1; let xMax = 1;
let xMin = 0; let xMin = 0;
// cap max to selected range // cap max to selected range
switch (range) { switch (range) {
@ -119,21 +119,20 @@ export function renderReviews(
const spacing = thresholds[1] - thresholds[0]; const spacing = thresholds[1] - thresholds[0];
const partial = thresholds[0] - xMin!; const partial = thresholds[0] - xMin!;
if (spacing > 0 && partial > 0 && partial < spacing) { if (spacing > 0 && partial > 0 && partial < spacing) {
const adjustedMin = thresholds[0] - spacing; xMin = Math.max(thresholds[0] - spacing, shouldCapRange ? originalXMin! : -Infinity);
// Don't extend beyond the original range limit for fixed ranges
xMin = shouldCapRange
? Math.max(adjustedMin, originalXMin!)
: adjustedMin;
x = scaleLinear().domain([xMin, xMax]); x = scaleLinear().domain([xMin, xMax]);
thresholds = x.ticks(desiredBars); thresholds = x.ticks(desiredBars);
} }
} }
// For Year, shift thresholds forward by one day to make first bin 0-4 instead of 0-5
if (range === GraphRange.Year) {
thresholds = [...new Set(thresholds.map(t => Math.min(t + 1, 1)))].sort((a, b) => a - b);
}
const sourceMap = showTime ? sourceData.reviewTime : sourceData.reviewCount; const sourceMap = showTime ? sourceData.reviewTime : sourceData.reviewCount;
let bins = bin() let bins = bin()
.value((m) => { .value((m) => m[0])
return m[0];
})
.domain(x.domain() as any) .domain(x.domain() as any)
.thresholds(thresholds)(sourceMap.entries() as any); .thresholds(thresholds)(sourceMap.entries() as any);