All seven gallery tabs carry their info entry; a tab whose text is not bundled shows no button

Each production tab reads mapInfo.tab.<tabId>.lead and .takeaway, and Regions also its note, with
the India/China reasoning beside it. Only files already in the tree are listed as examples (the
UPG-100 poster); the rest join when their shots land. A tab's button renders only when its lead
key resolves in the bundled catalogue, so a key that has not landed yet hides the button instead of
opening a popup of raw key names.
This commit is contained in:
Doxa Maps 2026-09-29 19:17:42 +00:00
parent a1d9a1e318
commit 37f3aa1221
7 changed files with 72 additions and 23 deletions

View file

@ -1097,7 +1097,13 @@ export default defineComponent({
this.$nextTick(() => back && back.focus && back.focus())
},
// Does this tab have what/how text? Marks its pane, so a map's hosted "?" knows to show.
infoFor(t) { return (this.showInfo && t && TAB_INFO[t.id]) || null },
// A tab's button shows only when its lead text is in the bundled catalogue: a key that has not
// landed would otherwise open a popup of raw key names. English is the check because every
// locale falls back to it.
infoFor(t) {
const e = this.showInfo && t && TAB_INFO[t.id]
return e && (!e.leadKey || tStatic(e.leadKey, 'en')) ? e : null
},
tabHasHelp(t) { return !!(t && t.discovered && helpFor(t.id, this.uiLocale)) },
// A map's "?" (library HelpButton) asked for help. Answer only for the active tab, and only when
// it has text; remember the exact button (composedPath reaches into the map's shadow root) so

View file

@ -27,4 +27,48 @@ export const TAB_INFO = {
{ kind: 'image', src: 'previews/middle-east-core.webp', full: 'posters/middle-east-core.html' },
],
},
'regions-dashboard': {
storageKey: 'regions-dashboard',
leadKey: 'mapInfo.tab.regions-dashboard.lead',
takeawayKey: 'mapInfo.tab.regions-dashboard.takeaway',
// "except India and China": India is genuinely unsupported -- no sheet, no geometry, and 855
// people groups, too many to fit one poster legibly (library/data/country-posters.json carries
// that reason itself). CHINA IS DIFFERENT: it is technically supported TODAY (sheet 3x4,
// geometry present, 154 groups -- the 3x4 tier exists precisely so it renders) and is withheld
// deliberately, not because the pipeline cannot do it. Do not "fix" this by enabling China;
// that is a decision above this file.
noteKey: 'mapInfo.tab.regions-dashboard.note',
// The Sudan poster, packet pages and card deck join when rega's shots are in the tree.
examples: [],
},
'dashboard-plus-grid': {
storageKey: 'dashboard-plus-grid',
leadKey: 'mapInfo.tab.dashboard-plus-grid.lead',
takeawayKey: 'mapInfo.tab.dashboard-plus-grid.takeaway',
examples: [],
},
'research-map-plus-grid': {
storageKey: 'research-map-plus-grid',
leadKey: 'mapInfo.tab.research-map-plus-grid.lead',
takeawayKey: 'mapInfo.tab.research-map-plus-grid.takeaway',
examples: [],
},
'prayer-map': {
storageKey: 'prayer-map',
leadKey: 'mapInfo.tab.prayer-map.lead',
takeawayKey: 'mapInfo.tab.prayer-map.takeaway',
examples: [],
},
'cities-internet': {
storageKey: 'cities-internet',
leadKey: 'mapInfo.tab.cities-internet.lead',
takeawayKey: 'mapInfo.tab.cities-internet.takeaway',
examples: [],
},
'gospel-resources': {
storageKey: 'gospel-resources',
leadKey: 'mapInfo.tab.gospel-resources.lead',
takeawayKey: 'mapInfo.tab.gospel-resources.takeaway',
examples: [],
},
}

File diff suppressed because one or more lines are too long

View file

@ -61,7 +61,7 @@
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
<!-- Bundle IIFE — registers the <doxa-maps-spa> custom element. -->
<script src="../../doxa-maps-spa.js" integrity="sha384-fpVrJ+JyLhOfCmL/BzLnd960rk4Nq4TopYkzpzQ1jpT7dL2wfjI4Ocd14DqOiIFZ" crossorigin="anonymous"></script>
<script src="../../doxa-maps-spa.js" integrity="sha384-6nge3ptiyqcahNIUxB+LXYbgMe/gsOmV4mhxV4KOUN6DVw9TvNizyWh98MTTP3Bz" crossorigin="anonymous"></script>
<script>
// Mapbox token resolution — the A3 ladder, in precedence order:

View file

@ -61,7 +61,7 @@
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
<!-- Bundle IIFE — registers the <doxa-maps-spa> custom element. -->
<script src="../doxa-maps-spa.js" integrity="sha384-fpVrJ+JyLhOfCmL/BzLnd960rk4Nq4TopYkzpzQ1jpT7dL2wfjI4Ocd14DqOiIFZ" crossorigin="anonymous"></script>
<script src="../doxa-maps-spa.js" integrity="sha384-6nge3ptiyqcahNIUxB+LXYbgMe/gsOmV4mhxV4KOUN6DVw9TvNizyWh98MTTP3Bz" crossorigin="anonymous"></script>
<script>
// Mapbox token resolution — the A3 ladder, in precedence order:

View file

@ -361,7 +361,7 @@
"bundle": "doxa-maps-spa",
"scriptUrl": "./doxa-maps-spa/doxa-maps-spa.js",
"output": "dx-maps/doxa-maps-spa/doxa-maps-spa.js",
"integrity": "sha384-fpVrJ+JyLhOfCmL/BzLnd960rk4Nq4TopYkzpzQ1jpT7dL2wfjI4Ocd14DqOiIFZ",
"integrity": "sha384-6nge3ptiyqcahNIUxB+LXYbgMe/gsOmV4mhxV4KOUN6DVw9TvNizyWh98MTTP3Bz",
"elements": [
"doxa-maps-spa"
],
@ -389,7 +389,7 @@
"scriptUrl": "./doxa-maps-spa/doxa-maps-spa.js",
"embed": {
"iframe": "<iframe src=\"./doxa-maps-spa/doxa-maps-spa/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./doxa-maps-spa/doxa-maps-spa.js\" integrity=\"sha384-fpVrJ+JyLhOfCmL/BzLnd960rk4Nq4TopYkzpzQ1jpT7dL2wfjI4Ocd14DqOiIFZ\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<doxa-maps-spa profile-config='{\"profile\":\"doxa-maps-spa\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></doxa-maps-spa>"
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./doxa-maps-spa/doxa-maps-spa.js\" integrity=\"sha384-6nge3ptiyqcahNIUxB+LXYbgMe/gsOmV4mhxV4KOUN6DVw9TvNizyWh98MTTP3Bz\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<doxa-maps-spa profile-config='{\"profile\":\"doxa-maps-spa\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></doxa-maps-spa>"
},
"instances": [
{

View file

@ -361,7 +361,7 @@
"bundle": "doxa-maps-spa",
"scriptUrl": "./doxa-maps-spa/doxa-maps-spa.js",
"output": "dx-maps/doxa-maps-spa/doxa-maps-spa.js",
"integrity": "sha384-fpVrJ+JyLhOfCmL/BzLnd960rk4Nq4TopYkzpzQ1jpT7dL2wfjI4Ocd14DqOiIFZ",
"integrity": "sha384-6nge3ptiyqcahNIUxB+LXYbgMe/gsOmV4mhxV4KOUN6DVw9TvNizyWh98MTTP3Bz",
"elements": [
"doxa-maps-spa"
],
@ -389,7 +389,7 @@
"scriptUrl": "./doxa-maps-spa/doxa-maps-spa.js",
"embed": {
"iframe": "<iframe src=\"./doxa-maps-spa/doxa-maps-spa/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./doxa-maps-spa/doxa-maps-spa.js\" integrity=\"sha384-fpVrJ+JyLhOfCmL/BzLnd960rk4Nq4TopYkzpzQ1jpT7dL2wfjI4Ocd14DqOiIFZ\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<doxa-maps-spa profile-config='{\"profile\":\"doxa-maps-spa\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></doxa-maps-spa>"
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./doxa-maps-spa/doxa-maps-spa.js\" integrity=\"sha384-6nge3ptiyqcahNIUxB+LXYbgMe/gsOmV4mhxV4KOUN6DVw9TvNizyWh98MTTP3Bz\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<doxa-maps-spa profile-config='{\"profile\":\"doxa-maps-spa\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></doxa-maps-spa>"
},
"instances": [
{