A people-group pin is a representative point, not an address, and some pins ARE the same point: on the Doxa roster 2,107 groups sit on 2,048 coordinates, 108 of them on a point shared with another (gospel- plugin's measurement). Every map with people-group pins must say so, in one wording. - library/components/legends/ApproxPinNote.vue: "The dot marks where this people is found, not a town or a boundary." always; when the selected pin's point is shared, "It sits on the same point as <names> — <n> groups share this coordinate…". Never prints the raw coordinate. Wording: gospel-plugin's P5 proposal, in a new pins catalogue (11 locales). - library/utils/colocation.js: the co-location index, built from the roster THE MAP draws (rows or GeoJSON features), never a hardcoded count. - LegendDesktop and LegendMobile (research map, simple map, country posters, cities, UPG-100) show the note under the legend, and under the detail card with the shared names. - check:approx-pin-note (headless, gates:post): the index, the two sentences, no coordinate, Arabic. |
||
|---|---|---|
| .. | ||
| .gitkeep | ||
| apiBaseUrl.js | ||
| ClusterHelpers.js | ||
| colocation.js | ||
| countries-meta.js | ||
| DataSourceManager.js | ||
| embedBase.js | ||
| geoUtils.js | ||
| html.js | ||
| loadPinnedUmd.js | ||
| MSTClusteringUtil.js | ||
| NetworkClusteringUtil.js | ||
| README.md | ||
| viewportScrim.js | ||
library/utils/ — pure JS helpers
No Vue, no Pinia, no Mapbox. Anything reactive is a composable; anything stateful is a store.
| File | Purpose |
|---|---|
apiBaseUrl.js |
Resolves the API base URL at runtime (window.MAP_APP_API_URL / VITE_API_BASE_URL) |
embedBase.js |
Share/embed URL ladder — the built bundle derives its tree root from its own script url (profileConfig.shareUrl / embedBaseUrl / window.MAP_EMBED_BASE_URL override) so tree-relative <bundle>/<profile>/index.html links work on any host |
geoUtils.js |
Centroid, bounds, validation, GeoJSON helpers |
ClusterHelpers.js |
Shared helpers for the two clustering utilities below |
MSTClusteringUtil.js |
Minimum-spanning-tree clustering for affinity blocks |
NetworkClusteringUtil.js |
Network-line clustering — connect nearby pins with edges |
- No
import { ref } from 'vue'and noimport mapboxglin this folder — operate on plain[lng, lat]arrays. - Named exports (for tree-shaking), JSDoc on every export.
- Writing reactive logic or needing Mapbox APIs? That's a composable — move it to
../composables/.