Files
superset2/superset-frontend/plugins/plugin-chart-country-map
Evan Rusackas f696fe1e05 feat(country-map): full control panel — worldview, admin level, region filters, language
Replace the placeholder control panel with the real form-data surface.
New controls (none of which exist on the legacy plugin):

- worldview: SelectControl, defaults to 'ukr' per documented editorial
  choice; configurable per-deployment + per-chart
- admin_level: SelectControl (Admin 0 / Admin 1 / Aggregated regions)
- country: SelectControl, visible only when admin_level !== 0 and no
  composite is selected
- region_set: SelectControl, visible only when admin_level === 'aggregated';
  choices depend on selected country (sourced from the regional_aggregations
  YAML's snapshot table)
- composite: SelectControl (france_overseas etc.); when set, overrides
  admin_level + country
- region_includes / region_excludes: free-form multi-select for client-side
  filtering at render time (these drive the projection refit too — the
  renderer's `filterFeatures` uses them)
- show_flying_islands: CheckboxControl, default true
- name_language: SelectControl with 20 NE-supported languages

The choice tables (WORLDVIEW_CHOICES, COUNTRY_CHOICES, REGION_SET_CHOICES_
BY_COUNTRY, COMPOSITE_CHOICES) are hardcoded snapshots for the POC.
Follow-up commit will replace these with options pulled from the build
pipeline's manifest.json so adding a new worldview or country only
requires a build script run, not a plugin code change.

Standard query controls (entity, metric, adhoc_filters, row_limit,
linear_color_scheme, number_format) preserved from the legacy plugin.

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

@superset-ui/plugin-chart-country-map

Modern country/region choropleth chart for Apache Superset. Replaces legacy-plugin-chart-country-map.

Status

🚧 Work in progress — see SIP_DRAFT.md in this directory for the full design rationale and implementation phases. This plugin lives in the same PR as the build pipeline that produces its data; both are currently scaffolded and being progressively fleshed out.

What it offers vs. the legacy plugin

Legacy New
Backend endpoint explore_json chart/data (modern)
Disputed-region handling Hardcoded NE editorial Configurable per-deployment + per-chart worldview (NE _ukr default)
Subdivisions level Country-only Country (Admin 0) and Subdivisions (Admin 1) and Aggregated regions
Data pipeline Jupyter notebook Reproducible script + YAML configs (see scripts/)
Per-deployment customization Fork required superset_config.COUNTRY_MAP block + chart-level controls
Composite maps (e.g. France-with-Overseas) Hardcoded in notebook Declarative in composite_maps.yaml
Regional aggregations (NUTS-1 etc.) Hardcoded Declarative in regional_aggregations.yaml

Layout

src/
  index.ts          — package entry; exports CountryMapChartPlugin and types
  types.ts          — TypeScript types for form data + transform props
  CountryMap.tsx    — React component; renders the SVG chart
  plugin/
    index.ts        — ChartPlugin class with metadata
    buildQuery.ts   — modern chart/data query builder
    controlPanel.tsx— form controls (worldview, admin level, country, ...)
    transformProps.ts — form_data → renderer props
scripts/            — build pipeline (NE shapefile → simplified GeoJSON outputs)
SIP_DRAFT.md        — design draft for the eventual SIP issue

See also

  • SIP_DRAFT.md — design rationale, audit of legacy notebook, obsolescence findings, open questions
  • scripts/README.md — build pipeline operating principles
  • scripts/config/*.yaml — declarative transform configs (5 schemas for the 5 transform categories)
  • scripts/procedural/README.md — escape hatch for edge cases YAML can't express