doxa-maps/library/components/charts
Doxa Maps de2ec6fe46 bandFill mode: 'fill-all' draws every group and lets the zoom separate them
Rings that zoom apart, as a flag, so either answer to row 130 is one line at
the call site. DEFAULT IS 'fit' — this changes nothing today.

'fit' keeps every pin at least minSep apart at the chart's own scale and reports
what will not fit. That is the right behaviour for a PRINTED sheet, where there
is no zoom and a dot a reader cannot resolve is a dot that is not there.

'fill-all' places all of them. Separation is in map units, so it grows with zoom:
measured on the shipped table, the worst ring is ring 1 (1,190 groups in the
smallest circle) separating to 8px on screen at z=4.45, and ring 8 (1,932) at
z=3.50. The GROUP label tier already starts at 5.2, so every pin is clickable
before the names appear. At the start zoom the band reads as a dense arc of
colour rather than countable dots, which is the intended appearance — and the
reason a caller in this mode must caption the true total rather than a count
that changes with zoom.

The row count had to follow the POPULATION here, not the pin size. Keeping the
'fit' row count would have packed 1,932 pins into the two rows a band allows at
full size, and they would have sat almost on top of each other along the arc —
the single-line defect again, one level down. Ring 8 uses 14 rows in fill-all
against 2 in fit.

Real table: fit places 1,851 of 7,296, fill-all places 7,296 of 7,296, both with
zero pins outside their band. Six new assertions, and the row-growth arm is
poison-tested: making fill-all reuse the fit row count fails it at "2 rows vs 2".
2026-09-29 01:38:08 +00:00
..
BarChart.vue Bar charts read right in Arabic, and the value column fits its longest number 2026-09-27 09:07:17 +00:00
boundedSet.js Promote the set layouts to library, as one implementation 2026-09-28 16:49:01 +00:00
centeredSet.js Promote the set layouts to library, as one implementation 2026-09-28 16:49:01 +00:00
LifeCalendar.vue A life-calendar anchor outside the grid says so instead of drawing nothing 2026-09-28 16:49:01 +00:00
packetCharts.js A life-calendar anchor outside the grid says so instead of drawing nothing 2026-09-28 16:49:01 +00:00
ProgressBar.vue The prayer-progress cards become shared components too 2026-09-27 04:14:31 +00:00
ringBands.js bandFill mode: 'fill-all' draws every group and lets the zoom separate them 2026-09-29 01:38:08 +00:00
ShareCalendar.vue The three packet charts, and two constraints that live in a prop 2026-09-28 15:01:19 +00:00