From 663b73781d693cbb67eec65f5001bd932ed05896 Mon Sep 17 00:00:00 2001 From: Doxa Maps Date: Mon, 28 Sep 2026 16:13:18 +0000 Subject: [PATCH] Warn the caller that groupings.label is a definition, not a name MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Measured on the published file: those labels run 7 to 206 characters and the long ones are the zone's member list, not its name. Tibet's is a ten-part list of provinces. Only two of the fourteen carry no member list at all. Used as a heading on a printed sheet that sets a 206-character title, and paper has no truncation-with-tooltip to rescue it. The name a reader wants is the humanised slug, uniform by construction and about 34 characters at worst, with the label carried separately as the definition it actually is. This component asserts nothing about the words in labels.rings, so the whole hazard lives at the call site — which is why the warning belongs in the file the caller reads rather than in a message they will not see. gospel found it. --- library/components/charts/CenteredSetTarget.vue | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/library/components/charts/CenteredSetTarget.vue b/library/components/charts/CenteredSetTarget.vue index e60dc2286..83490c6f5 100644 --- a/library/components/charts/CenteredSetTarget.vue +++ b/library/components/charts/CenteredSetTarget.vue @@ -28,6 +28,16 @@ * * ★ AND NO SEED: position is hashed from the group's own id, so two printings of one packet are * identical and a reader comparing sheets sees real movement rather than reshuffling. + * + * ★ A NOTE FOR WHOEVER BUILDS `labels.rings` — DO NOT PASS groupings.label AS A NAME. Measured on + * the published file: those labels run 7 to 206 characters, and the long ones are the zone's MEMBER + * LIST, not its name. Tibet's reads "Tibet Autonomous Region + Sichuan Province + Xinjiang Uyghur + * Autonomous Region + Gansu Province + ..." — only 2 of the 14 carry no "+" list at all (Gujarāt, + * and "Scattered / Diaspora"). Used as a heading on a printed sheet that sets a 206-character title. + * The field is a DEFINITION and is genuinely useful where there is room to say what a zone contains; + * for a name, humanise the slug, which is uniform by construction and tops out around 34 characters. + * gospel found this and carries the two separately; this component asserts nothing about the words, + * so the whole hazard lives at the call site, which is exactly why it is written down here. */ import { computed } from 'vue' import { layoutCenteredSet, ringTally, inwardArrow, ringRadii, RING_MIN, RING_MAX } from './centeredSet.js'