Commit Graph

4 Commits

Author SHA1 Message Date
Superset Dev
d1a7c9e82f fix(plugin-chart-country-map): control-panel UX — validators, dynamic choices, visibility
Four UX bugs reported on the new country map chart:

1. **"Country: cannot be empty" stuck on the Data tab even at Admin 0.**
   The Country control had a hard `validators: [validateNonEmpty]`, but
   it's only rendered (and only meaningful) when admin_level != 0 and no
   composite is set. The validator was firing for the hidden empty value
   and trapped the user — the Update Chart button was permanently
   disabled with no visible control to satisfy. Switched to a dynamic
   validator via mapStateToProps so it only fires when the field is
   actually needed.

2. **"Aggregated regions" threw TypeError: t.map is not a function.**
   The region_set control used `choices: ({ controls }) => ...`, but
   SelectControl's `choices` must be a literal array. Moved the
   country-dependent choice computation into `mapStateToProps` (same
   pattern other plugins use).

3. **Composite map always visible and "sticky" overriding admin_level.**
   At Admin 0 (world choropleth) the composite override produced a map
   that didn't change when you toggled admin_level. Hidden composite
   control at Admin 0 entirely, and hidden it whenever the build
   pipeline didn't emit any composites — leaves room for future
   per-country scoping (e.g. only show france_overseas when country=FRA).

4. **Show flying islands checkbox was a no-op.** The build pipeline
   doesn't currently tag features as flying, so the runtime drop logic
   had nothing to act on. Removed from the control set rather than ship
   a misleading control; a single line brings it back once the build
   tags features.

Tests updated to cover all four behaviors.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-13 09:29:03 -07:00
Superset Dev
adbf5bcff8 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>
2026-05-13 09:10:04 -07:00
Superset Dev
ae7a947bc0 fix: prettier on remaining country-map files
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-13 00:15:38 -07:00
Evan Rusackas
9a4fff02bf test(country-map): controlPanel test (10 cases)
Completes the test trio (transformProps + buildQuery + controlPanel).
Verifies:

- All 9 new controls (worldview / admin_level / country / region_set /
  composite / region_includes / region_excludes / show_flying_islands /
  name_language) are present in the panel
- Worldview defaults to 'ukr' (Superset's editorial choice)
- show_flying_islands defaults to true
- name_language defaults to 'en'
- admin_level offers exactly the 3 expected codes
- Country selector visibility hides on Admin 0 OR when composite set
- Region-set selector only visible when admin_level === 'aggregated'
- Region-set choices key off the selected country (TUR → nuts_1,
  FRA → regions, USA → empty)
- Composite selector exposes france_overseas

These tests would fail loudly if anyone refactored the visibility
predicates or accidentally removed/renamed a control.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-12 17:38:26 -07:00