feat(plugin-chart-country-map): ship all 33 NE worldviews at Admin 0

Previously the build only emitted the ukr (Ukraine) worldview, so the
worldview dropdown had a single option even though it claimed otherwise.
Build now produces Admin 0 GeoJSON for every NE-published editorial:
default, arg, bdg, bra, chn, deu, egy, esp, fra, gbr, grc, idn, ind, iso,
isr, ita, jpn, kor, mar, nep, nld, pak, pol, prt, pse, rus, sau, swe, tur,
twn, ukr, usa, vnm (33 total).

NE does not publish per-worldview Admin 1 variants, so subdivisions within
a country come from a single shared file. The frontend now always points
Admin 1, regional aggregation, and composite URLs at the ukr-prefixed
shared outputs regardless of the selected worldview — the worldview
control only affects the world (Admin 0) map.

- build.py: expand WORLDVIEWS_ADMIN_0 to 33 worldviews; main() builds
  Admin 0 for all of them, Admin 1 only for ukr
- transformProps.ts: introduce SHARED_ADMIN1_WORLDVIEW = 'ukr'; pin all
  non-Admin-0 URLs to it
- controlPanel.tsx: WORLDVIEW_LABELS now covers all 33 codes; unrecognized
  codes still fall back to raw code for forward-compat
- transformProps.test.ts: cover shared-Admin1 contract (admin1+chn still
  resolves to ukr_admin1_*)
- pre-commit: exclude .geo.json from check-added-large-files (existing
  rule only excluded .geojson and would block these ~2MB worldview files)
- README + SIP: document the worldview model and check off Phase 1 item

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
Superset Dev
2026-05-13 09:10:04 -07:00
parent ae7a947bc0
commit adbf5bcff8
42 changed files with 8333 additions and 42 deletions

View File

@@ -103,6 +103,16 @@ test('worldview includes ukr', () => {
expect(codes).toContain('ukr');
});
test('worldview offers multiple NE-published editorials', () => {
const c = findControl('worldview');
const codes = c.choices.map((ch: [string, string]) => ch[0]);
// Sanity-check a handful of high-impact ones — we don't pin the full
// set so the build pipeline can add/remove worldviews without
// tripping this test.
expect(codes).toEqual(expect.arrayContaining(['default', 'ukr']));
expect(codes.length).toBeGreaterThanOrEqual(2);
});
test('country selector visibility hides on Admin 0', () => {
const c = findControl('country');
expect(c).not.toBeNull();