doxa-maps/data/tables
doxa-maps-88655c70 dfb4f755be Carry the map selection into the resource table
The table listed every link but had no idea what you had just tapped, so answering
"what exists for THIS group" meant reading a language name off the map and typing it
into a filter box. The map and the table are separate PAGES, so the selection travels
as a URL: ?tab=links&iso=<code> from a people group, &country=<ISO3> from a country.

FILTERED IN THE PROFILE, NOT IN THE SHARED COMPONENT. DataTable has other consumers
and none of them need a filter prop; teaching it one would put a change with repo-wide
blast radius behind a feature only this bundle uses. The rows are filtered before they
are handed over, which is invisible to every other caller.

COUNTRY FILTERING WITHOUT A SECOND FETCH. Rows carry country_codes, the ISO3 set the
language is spoken in, so a country filter is a membership test on data already loaded
rather than pulling the 679KB pin table just to resolve which languages a country has.
+23KB for the column, against 679KB avoided.

THE EMPTY CASE SAYS WHY. A selection with no match renders "nothing found for this
selection in the pools checked, which is not proof that nothing exists" rather than an
empty grid, which would read as a broken filter or, worse, as proof of absence.
Switching to a tab that has no language key says so too instead of showing zero rows.

Verified end to end on the served tree: clicked a real pin, followed the link THE SHEET
RENDERED rather than one built in the test, and landed on 2 rows both carrying cmn with
"Showing 2 of 581 resources for Chinese, Mandarin". Country path checked the same way —
Nepal 51, Chad 22, unfiltered 581 with no banner, and an unmatched code showing the
honest empty state.
2026-09-24 03:35:35 +00:00
..
city-bridge-opportunities.json Data out of public/ (phase 2): posters + tables live in data/ 2026-09-16 01:37:52 +00:00
country-connectivity.json Data out of public/ (phase 2): posters + tables live in data/ 2026-09-16 01:37:52 +00:00
deaf-gap.json Data out of public/ (phase 2): posters + tables live in data/ 2026-09-16 01:37:52 +00:00
door43-index.json Add Door43 as a third pool, so 240 groups stop reading "nothing found" 2026-09-24 03:18:27 +00:00
gaps-and-opportunities.json Public data ships without working notes; unused data files stay out of the drop-in 2026-09-16 20:16:08 -05:00
gospel-access-vs-growth.json Data out of public/ (phase 2): posters + tables live in data/ 2026-09-16 01:37:52 +00:00
gospel-by-country.json Data out of public/ (phase 2): posters + tables live in data/ 2026-09-16 01:37:52 +00:00
gospel-link-verification.json Public data ships without working notes; unused data files stay out of the drop-in 2026-09-16 20:16:08 -05:00
gospel-resource-links.json Carry the map selection into the resource table 2026-09-24 03:35:35 +00:00
index.json A table of every resource and its link, keyed by the resource not the group 2026-09-24 03:25:13 +00:00
internet-by-country.json Data out of public/ (phase 2): posters + tables live in data/ 2026-09-16 01:37:52 +00:00
key-cities-admin-n.json Public data ships without working notes; unused data files stay out of the drop-in 2026-09-16 20:16:08 -05:00
key-cities.json Data out of public/ (phase 2): posters + tables live in data/ 2026-09-16 01:37:52 +00:00
languages-by-country.json Public data ships without working notes; unused data files stay out of the drop-in 2026-09-16 20:16:08 -05:00
languages-per-city.json Data out of public/ (phase 2): posters + tables live in data/ 2026-09-16 01:37:52 +00:00
messaging-channels.json Data out of public/ (phase 2): posters + tables live in data/ 2026-09-16 01:37:52 +00:00
network-operators.json Data out of public/ (phase 2): posters + tables live in data/ 2026-09-16 01:37:52 +00:00
open-doors.json Public data ships without working notes; unused data files stay out of the drop-in 2026-09-16 20:16:08 -05:00
people-group-pins.json Add Door43 as a third pool, so 240 groups stop reading "nothing found" 2026-09-24 03:18:27 +00:00
people-group-resources.json Public data ships without working notes; unused data files stay out of the drop-in 2026-09-16 20:16:08 -05:00
platform-reachability.json Data out of public/ (phase 2): posters + tables live in data/ 2026-09-16 01:37:52 +00:00
social-platforms.json Data out of public/ (phase 2): posters + tables live in data/ 2026-09-16 01:37:52 +00:00