From 092585af6cc45ad7b87c41aefc5825b2a7d7067d Mon Sep 17 00:00:00 2001 From: Doxa Maps Date: Mon, 28 Sep 2026 17:02:03 +0000 Subject: [PATCH] Put the bounded set on the whiteboard too, with its boundary in map units MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Both set charts now pan and zoom. The chart still makes one claim — which side of the line a group is on — so nothing here encodes distance or rank; what zoom buys is reading the names, because at two thousand dots the inside is a cluster until you can get close to it. The boundary is the shared dish layer, which is the same layer a language family's circle uses, so it is not a new type for either of us. Its radius takes an exponential-base-2 zoom interpolation rather than a fixed pixel value. circle-radius is screen pixels: a constant would hold its size while the dots spread out from under it, leaving the circle correct at exactly one zoom and wrong at every other — and for a dot near the edge the inside/outside reading would silently invert, which is the only thing this chart says. Pixels per degree double with each zoom level, measured at exactly 2.000000 between adjacent levels, so the interpolation tracks map units exactly rather than approximately. The boundary is drawn as a line with a transparent fill. A filled disc would say the inside is a region, when what the chart means is a threshold. The cross rides in the point collection as its own tier rather than as an overlay, so it pans and zooms with the drawing instead of floating above it. --- .../src/components/GiBoundedSet.vue | 30 ++--- .../src/components/GiBoundedSetMap.vue | 108 ++++++++++++++++++ .../gospel-internet/src/setChartFeatures.js | 17 +++ 3 files changed, 136 insertions(+), 19 deletions(-) create mode 100644 plugin-designs/gospel-internet/src/components/GiBoundedSetMap.vue diff --git a/plugin-designs/gospel-internet/src/components/GiBoundedSet.vue b/plugin-designs/gospel-internet/src/components/GiBoundedSet.vue index 5c622642c..5f4777e1a 100644 --- a/plugin-designs/gospel-internet/src/components/GiBoundedSet.vue +++ b/plugin-designs/gospel-internet/src/components/GiBoundedSet.vue @@ -28,7 +28,12 @@ import { formatCount } from '@map/utils/formatCount.js' import { useBoardState } from '../useBoard.js' import { useGiT } from '../useGiT.js' import { loadNearRows, indexFor } from '../nearRows.js' +<<<<<<< HEAD import { layoutBoundedSet, boundedSetTally } from '@map/components/charts/boundedSet.js' +======= +import { layoutBoundedSet, boundedSetTally } from '../boundedSet.js' +import GiBoundedSetMap from './GiBoundedSetMap.vue' +>>>>>>> ea8dbe45 (Put the bounded set on the whiteboard too, with its boundary in map units) const T = useGiT() const board = useBoardState() @@ -73,7 +78,7 @@ useShadowStyles( // can never push the figure out of its pane the way the legend did on the centered set. '.gbs{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;' + 'justify-content:center;padding:46px 10px 10px;box-sizing:border-box;overflow:hidden;background:#f3f3f1}' + - '.gbs svg{max-width:100%;max-height:100%}' + + '.gbs-fig{position:relative;flex:1 1 auto;align-self:stretch;min-height:0;min-width:0}' + '.gbs-ring{fill:none;stroke:#3b463d;stroke-width:1.5}' + '.gbs-in{fill:#92b195}.gbs-out{fill:#6d766e;opacity:.65}' + '.gbs-cross-halo{stroke:var(--gbs-bg,#f3f3f1);stroke-width:7;stroke-linecap:square}' + @@ -91,24 +96,11 @@ useShadowStyles( {{ failed }}