Merge pull request #906 from hgiesel/nozerointervals

Omit zero interval, and don't nice the values in Review intervals graph
This commit is contained in:
Damien Elmes 2021-01-08 22:04:01 +10:00 committed by GitHub
commit c8373f1ced
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 24 additions and 9 deletions

View file

@ -197,7 +197,7 @@ export function renderCards(
x.range([bounds.marginLeft, bounds.width - bounds.marginRight]);
const tableData = (data as any).flatMap((d: SummedDatum, idx: number) => {
const tableData = data.flatMap((d: SummedDatum, idx: number) => {
const percent = ((d.count / xMax) * 100).toFixed(1);
return d.show
? ({

View file

@ -67,33 +67,48 @@ export function prepareIntervalData(
return [null, []];
}
const [_xMinOrig, origXMax] = extent(allIntervals);
let xMax = origXMax;
const xMin = 0;
let [, xMax] = extent(allIntervals);
let niceNecessary = false;
// cap max to selected range
switch (range) {
case IntervalRange.Month:
xMax = Math.min(xMax!, 31);
xMax = Math.min(xMax!, 30);
break;
case IntervalRange.Percentile50:
xMax = quantile(allIntervals, 0.5);
niceNecessary = true;
break;
case IntervalRange.Percentile95:
xMax = quantile(allIntervals, 0.95);
niceNecessary = true;
break;
case IntervalRange.All:
niceNecessary = true;
break;
}
const xMin = 0;
xMax = xMax! + 1;
// do not show the zero interval
const increment = (x: number): number => x + 1;
const adjustTicks = (x: number, idx: number, ticks: number[]): number[] =>
idx === ticks.length - 1 ? [x - (ticks[0] - 1), x + 1] : [x - (ticks[0] - 1)];
// cap bars to available range
const desiredBars = Math.min(70, xMax! - xMin!);
const scale = scaleLinear().domain([xMin!, xMax!]).nice();
const prescale = scaleLinear().domain([xMin!, xMax!]);
const scale = scaleLinear().domain(
(niceNecessary ? prescale.nice() : prescale).domain().map(increment)
);
const bins = histogram()
.domain(scale.domain() as any)
.thresholds(scale.ticks(desiredBars))(allIntervals);
.domain(scale.domain() as [number, number])
.thresholds(scale.ticks(desiredBars).flatMap(adjustTicks))(allIntervals);
// empty graph?
const totalInPeriod = sum(bins, (bin) => bin.length);

View file

@ -3,7 +3,7 @@
"compilerOptions": {
"target": "es6",
"module": "es6",
"lib": ["es2016", "dom"],
"lib": ["es2016", "es2019.array", "dom"],
"baseUrl": ".",
"paths": {
"anki/*": ["../bazel-bin/ts/lib/*"]