Merge remote-tracking branch 'origin/main' into rega/research-gallery-embed

# Conflicts:
#	public/doxa-maps/index.html
This commit is contained in:
doxa-maps-88655c70 2026-09-25 09:46:44 +00:00
commit 631f0f027b
17 changed files with 298 additions and 192 deletions

View file

@ -1431,12 +1431,12 @@
"stories_url": "",
"gospel_audio_url": "https://fivefish.org/alk",
"training_url": "",
"bridge_language": "Akha",
"bridge_iso639_3": "ahk",
"bridge_strength": "strong",
"bridge_groups_speaking": 12,
"bridge_has_scripture": true,
"bridge_has_film": true,
"bridge_language": "",
"bridge_iso639_3": "",
"bridge_strength": "",
"bridge_groups_speaking": 0,
"bridge_has_scripture": false,
"bridge_has_film": false,
"bridge_candidate": "",
"bridge_candidate_iso": "",
"bridge_candidate_groups": 0,
@ -1728,12 +1728,12 @@
"stories_url": "",
"gospel_audio_url": "https://fivefish.org/nos",
"training_url": "",
"bridge_language": "Chinese, Mandarin",
"bridge_iso639_3": "cmn",
"bridge_strength": "strong",
"bridge_groups_speaking": 25,
"bridge_has_scripture": true,
"bridge_has_film": true,
"bridge_language": "",
"bridge_iso639_3": "",
"bridge_strength": "",
"bridge_groups_speaking": 0,
"bridge_has_scripture": false,
"bridge_has_film": false,
"bridge_candidate": "",
"bridge_candidate_iso": "",
"bridge_candidate_groups": 0,
@ -3708,12 +3708,12 @@
"stories_url": "",
"gospel_audio_url": "https://fivefish.org/jle",
"training_url": "",
"bridge_language": "Arabic, Sudanese",
"bridge_iso639_3": "apd",
"bridge_strength": "strong",
"bridge_groups_speaking": 65,
"bridge_has_scripture": true,
"bridge_has_film": true,
"bridge_language": "",
"bridge_iso639_3": "",
"bridge_strength": "",
"bridge_groups_speaking": 0,
"bridge_has_scripture": false,
"bridge_has_film": false,
"bridge_candidate": "",
"bridge_candidate_iso": "",
"bridge_candidate_groups": 0,
@ -12288,12 +12288,12 @@
"stories_url": "",
"gospel_audio_url": "https://fivefish.org/nos",
"training_url": "",
"bridge_language": "Chinese, Mandarin",
"bridge_iso639_3": "cmn",
"bridge_strength": "strong",
"bridge_groups_speaking": 25,
"bridge_has_scripture": true,
"bridge_has_film": true,
"bridge_language": "",
"bridge_iso639_3": "",
"bridge_strength": "",
"bridge_groups_speaking": 0,
"bridge_has_scripture": false,
"bridge_has_film": false,
"bridge_candidate": "",
"bridge_candidate_iso": "",
"bridge_candidate_groups": 0,
@ -19581,12 +19581,12 @@
"stories_url": "",
"gospel_audio_url": "https://fivefish.org/jle",
"training_url": "",
"bridge_language": "Arabic, Sudanese",
"bridge_iso639_3": "apd",
"bridge_strength": "strong",
"bridge_groups_speaking": 65,
"bridge_has_scripture": true,
"bridge_has_film": true,
"bridge_language": "",
"bridge_iso639_3": "",
"bridge_strength": "",
"bridge_groups_speaking": 0,
"bridge_has_scripture": false,
"bridge_has_film": false,
"bridge_candidate": "",
"bridge_candidate_iso": "",
"bridge_candidate_groups": 0,
@ -33771,12 +33771,12 @@
"stories_url": "",
"gospel_audio_url": "https://fivefish.org/ngt",
"training_url": "",
"bridge_language": "Akha",
"bridge_iso639_3": "ahk",
"bridge_strength": "strong",
"bridge_groups_speaking": 12,
"bridge_has_scripture": true,
"bridge_has_film": true,
"bridge_language": "",
"bridge_iso639_3": "",
"bridge_strength": "",
"bridge_groups_speaking": 0,
"bridge_has_scripture": false,
"bridge_has_film": false,
"bridge_candidate": "",
"bridge_candidate_iso": "",
"bridge_candidate_groups": 0,
@ -38292,12 +38292,12 @@
"stories_url": "",
"gospel_audio_url": "https://fivefish.org/nos",
"training_url": "",
"bridge_language": "Chinese, Mandarin",
"bridge_iso639_3": "cmn",
"bridge_strength": "strong",
"bridge_groups_speaking": 25,
"bridge_has_scripture": true,
"bridge_has_film": true,
"bridge_language": "",
"bridge_iso639_3": "",
"bridge_strength": "",
"bridge_groups_speaking": 0,
"bridge_has_scripture": false,
"bridge_has_film": false,
"bridge_candidate": "",
"bridge_candidate_iso": "",
"bridge_candidate_groups": 0,
@ -38556,12 +38556,12 @@
"stories_url": "",
"gospel_audio_url": "https://fivefish.org/lbo",
"training_url": "",
"bridge_language": "Akha",
"bridge_iso639_3": "ahk",
"bridge_strength": "strong",
"bridge_groups_speaking": 12,
"bridge_has_scripture": true,
"bridge_has_film": true,
"bridge_language": "",
"bridge_iso639_3": "",
"bridge_strength": "",
"bridge_groups_speaking": 0,
"bridge_has_scripture": false,
"bridge_has_film": false,
"bridge_candidate": "",
"bridge_candidate_iso": "",
"bridge_candidate_groups": 0,
@ -47697,12 +47697,12 @@
"stories_url": "",
"gospel_audio_url": "https://fivefish.org/jle",
"training_url": "",
"bridge_language": "Arabic, Sudanese",
"bridge_iso639_3": "apd",
"bridge_strength": "strong",
"bridge_groups_speaking": 65,
"bridge_has_scripture": true,
"bridge_has_film": true,
"bridge_language": "",
"bridge_iso639_3": "",
"bridge_strength": "",
"bridge_groups_speaking": 0,
"bridge_has_scripture": false,
"bridge_has_film": false,
"bridge_candidate": "",
"bridge_candidate_iso": "",
"bridge_candidate_groups": 0,
@ -48555,12 +48555,12 @@
"stories_url": "",
"gospel_audio_url": "https://fivefish.org/nev",
"training_url": "",
"bridge_language": "Akha",
"bridge_iso639_3": "ahk",
"bridge_strength": "strong",
"bridge_groups_speaking": 12,
"bridge_has_scripture": true,
"bridge_has_film": true,
"bridge_language": "",
"bridge_iso639_3": "",
"bridge_strength": "",
"bridge_groups_speaking": 0,
"bridge_has_scripture": false,
"bridge_has_film": false,
"bridge_candidate": "",
"bridge_candidate_iso": "",
"bridge_candidate_groups": 0,

File diff suppressed because one or more lines are too long

View file

@ -203,6 +203,11 @@ const doxaUnplaced = ref(0) // on the roster, no coordinates in this build
const doxaByCountry = shallowRef({})
const pinCodes = ref({})
const pinBridges = ref({}) // '<iso639-3>|<ISO3 country>' -> the in-country bridge, if any
/* Declared beside pinBridges. The previous edit USED this ref without declaring it —
a silent string replace that matched nothing — and the ReferenceError died inside the
custom-element boundary, so the map simply never mounted and the page reported no error
at all. Zero errors is not the same as working. */
const pinCandidates = shallowRef({})
const pinCount = ref(0)
// The legend quotes these, so they can never drift from what the layer is drawing.
@ -713,6 +718,7 @@ function groupAt(i) {
scripture_earth: c.se || null,
gospel_audio: c.ga || null,
bridge: pinBridges.value[`${r[4]}|${r[3]}`] || null,
bridge_candidate: pinCandidates.value[`${r[4]}|${r[3]}`] || null,
related: c.rel || null,
zume_url: c.z || '',
zume_approx: c.za || null,
@ -842,6 +848,7 @@ async function load() {
rows.value = data.countries || []
pinCodes.value = pinData.codes || {}
pinBridges.value = pinData.bridges || {}
pinCandidates.value = pinData.bridgeCandidates || {}
/* Same seven-slot shape the rest of this file already speaks, so narrowing the roster
changes WHICH pins exist and nothing about how they are drawn, clicked or filtered. */
@ -1734,6 +1741,26 @@ useShadowStyles(
<br><em>Bridge strength: {{ selectedGroup.bridge.st }}.</em> A second language is a
way in, not a translation — the gap in their own language is unchanged.
</div>
<!-- THE WEAKER CASE, and it says so on its face. No curated bridge exists for this
group, but their country does have a language carrying Scripture and the film.
No strength is shown because none can honestly be computed: ranking needs "is
this a lingua franca", and by population share a 10% floor refuses Urdu in
Pakistan while by group count Oman picks Swahili for an Arabic-speaking people.
The evidence is shown instead and the reader judges. Never for a sign language:
a spoken bridge is no bridge for a Deaf community. -->
<div v-else-if="selectedGroup.bridge_candidate && !selectedGroup.is_sign
&& !selectedGroup.scripture_url && !selectedGroup.film_url
&& !selectedGroup.audio && !selectedGroup.gospel_audio && !selectedGroup.scripture_earth"
class="gm-sign" style="border-left-color:#d1d4cd" dir="ltr">
<b>Possibly a way in — worth checking locally.</b>
<br>Nothing was found in {{ selectedGroup.language || 'their language' }}. The largest
language in this country that does have Scripture and the JESUS Film is
<b>{{ selectedGroup.bridge_candidate.l }}</b>, spoken by
{{ selectedGroup.bridge_candidate.n }} people group<template v-if="selectedGroup.bridge_candidate.n !== 1">s</template>
here ({{ selectedGroup.bridge_candidate.pct }}% of this country's mapped population).
<br><em>Not ranked and not recommended</em> — whether it actually reaches this group
is a local question, and the gap in their own language is unchanged.
</div>
<p v-if="selectedGroup.scripture_title || selectedGroup.scripture_scope" class="gm-scope">
<b>{{ selectedGroup.scripture_title || 'Scripture' }}</b>

View file

@ -40,52 +40,12 @@ const REPO = resolve(HERE, '../../..')
const T = (f) => JSON.parse(readFileSync(resolve(REPO, 'data/tables', f), 'utf8'))
const doxa = T('doxa-people-groups.json')
const { codes, bridges, pins } = T('people-group-pins.json')
const { codes, bridges, bridgeCandidates } = T('people-group-pins.json')
/**
* ═══ A SECOND-BEST BRIDGE, OFFERED AS EVIDENCE AND NOT AS A RECOMMENDATION ══════════════
*
* The curated bridge above covers 168 of Doxa's 369 groups with nothing, because it comes
* from a curated subset table rather than from the data. For the other 201 a candidate IS
* computable from the pin index — the languages spoken in their country that have both
* Scripture and the film — and 196 of them have one.
*
* WHAT I COULD NOT COMPUTE, and therefore do not claim. Ranking those candidates needs a
* notion of "is this a lingua franca", and neither proxy available here survives contact:
* - by GROUP COUNT, Oman picks Swahili (2 groups) for an Arabic-speaking people.
* - by SHARE OF PINNED POPULATION, a 10% floor REFUSES Urdu in Pakistan at 7.3% — the
* national language — because few Pakistani groups are pinned as Urdu speakers. That is
* the same bad-denominator mistake this map already fixed on the choropleth: dividing by
* something that does not mean what the question needs it to mean.
* Both produce confident wrong answers, so neither ships as a strength. What ships is the
* CANDIDATE and the EVIDENCE — which language, how many groups there speak it, and what
* share of that country's pinned population they are — under column names that say
* "candidate". A reader who knows Pakistan will see Urdu at 7.3% and know what to do with
* it; a score would have thrown it away on their behalf.
*/
const countryPool = {}
const countryPop = {}
for (const p of pins) {
const iso3 = p[3], code = p[4], pop = p[5] || 0
if (!iso3 || !code) continue
const c = codes[code]
if (!c) continue
countryPop[iso3] = (countryPop[iso3] || 0) + pop
const e = (countryPool[iso3] ||= {})
const slot = (e[code] ||= { n: 0, pop: 0, l: c.l || '', rows: resourceRows(c) })
slot.n += 1
slot.pop += pop
}
const candidateFor = (iso3, ownCode) => {
const pool = countryPool[iso3] || {}
const best = Object.entries(pool)
.filter(([code, s]) => code !== ownCode &&
s.rows.some((x) => x.type === 'Scripture') && s.rows.some((x) => x.type === 'Film'))
.sort((a, b) => b[1].pop - a[1].pop)[0]
if (!best) return null
const tot = countryPop[iso3] || 0
return { code: best[0], l: best[1].l, n: best[1].n, share: tot ? Math.round((1000 * best[1].pop) / tot) / 10 : 0 }
}
/* The candidate is computed ONCE, in build-people-group-pins.mjs beside the curated bridge,
and read here. It used to be computed in this file, which meant the table could offer a
group a next step the map did not show — the same disagreement the tier rule exists to
prevent. One source, two surfaces. */
const TYPE_ORDER = ['Scripture', 'Film', 'Audio Scripture', 'Bible video', 'Bible Stories', 'Gospel presentation', 'Gospel audio', 'Discipleship training']
const first = (rows, type) => rows.find((r) => r.type === type) || null
@ -144,7 +104,8 @@ const rows = doxa.rows.map((g) => {
const isSign = c?.sg === 1 || /sign language/i.test(g.language || '') || /^Deaf /i.test(g.name || '')
const br = !isSign && g.iso639_3 ? bridges[`${g.iso639_3}|${g.iso3}`] : null
/* Only where the curated bridge has nothing to say, and only for a group with nothing. */
const cand = !isSign && !br && access === 'nothing found' ? candidateFor(g.iso3, g.iso639_3) : null
const cand = !isSign && !br && access === 'nothing found'
? (bridgeCandidates[`${g.iso639_3}|${g.iso3}`] || null) : null
return {
people_group: g.name,
@ -172,9 +133,9 @@ const rows = doxa.rows.map((g) => {
bridge_has_scripture: br ? !!br.s : false,
bridge_has_film: br ? !!br.f : false,
bridge_candidate: cand ? cand.l : '',
bridge_candidate_iso: cand ? cand.code : '',
bridge_candidate_iso: cand ? cand.c : '',
bridge_candidate_groups: cand ? cand.n : 0,
bridge_candidate_pct_of_country: cand ? cand.share : 0,
bridge_candidate_pct_of_country: cand ? cand.pct : 0,
pray_url: g.pray_url,
people_praying: g.people_praying,
placed: g.mapped,

View file

@ -739,8 +739,65 @@ for (const p of slim) {
])
}
/**
* ═══ THE WEAKER COUSIN OF A BRIDGE, COMPUTED HERE SO BOTH SURFACES READ ONE SOURCE ══════
*
* `bridges` above comes from the curated gaps-and-opportunities table and covers 168 of
* Doxa's 369 groups with nothing. For the rest a CANDIDATE is computable straight from this
* index: the largest language in their country that carries both Scripture and the film.
*
* It lives here rather than in the access-table builder because the map sheet and the table
* must not disagree about what a group's next step is — the same rule that put the tier in
* one place. The access table used to compute this for itself, which meant the table offered
* 107 groups a candidate while the map showed them nothing at all.
*
* NO STRENGTH IS ATTACHED, on purpose. Ranking needs "is this a lingua franca" and neither
* proxy survives: by group count Oman picks Swahili for an Arabic-speaking people, and by
* population share a 10% floor refuses Urdu in Pakistan. So the candidate ships with its
* group count and its share of the country's pinned population, and the reader judges.
*
* NEVER FOR A SIGN LANGUAGE. A spoken bridge is not a bridge for a Deaf community — the same
* reason GRN is skipped for them above.
*/
const bridgeCandidates = {}
{
const pool = {}
const cpop = {}
for (const p of pins) {
const iso3 = p[3], code = p[4], pop = p[5] || 0
if (!iso3 || !code) continue
const c = codes[code]
if (!c) continue
cpop[iso3] = (cpop[iso3] || 0) + pop
const e = (pool[iso3] ||= {})
const slot = (e[code] ||= { n: 0, pop: 0, l: c.l || '', s: false, f: false })
slot.n += 1
slot.pop += pop
slot.s = slot.s || !!c.s || !!c.se || (c.d || []).some((d) => !/^Open Bible Stories/.test(d.s || ''))
slot.f = slot.f || !!c.f
}
for (const p of pins) {
const iso3 = p[3], code = p[4]
if (!iso3 || !code || p[6] !== 0) continue
if (codes[code] && codes[code].sg === 1) continue
const key = `${code}|${iso3}`
if (bridges[key] || bridgeCandidates[key]) continue
const best = Object.entries(pool[iso3] || {})
.filter(([cc, s]) => cc !== code && s.s && s.f)
.sort((a, b) => b[1].pop - a[1].pop)[0]
if (!best) continue
const tot = cpop[iso3] || 0
bridgeCandidates[key] = {
l: best[1].l, c: best[0], n: best[1].n,
pct: tot ? Math.round((1000 * best[1].pop) / tot) / 10 : 0,
}
}
}
const out = {
bridges,
bridgeCandidates,
_note: 'Generated by scripts/build-people-group-pins.mjs. pins=[name,lat,lng,iso3,code,pop,tier]; URLs live in codes[] by ISO 639-3. No URL is invented here.',
generated: new Date().toISOString().slice(0, 10),
counts: { pins: pins.length, joined, withUrl, liftedByD43, codes: Object.keys(codes).length, droppedNoCoord: noCoord },
@ -769,6 +826,7 @@ console.log(`arclight codes ${Object.keys(arc).length} (${arcOnly} new, ${upgr
console.log(`share urls ${Object.keys(share).length}`)
console.log(`fcbh codes ${audioCodes} (${audioNew} new codes)`)
console.log(`gospel tracts ${gospelCodes} (Cru/GodTools presentations; depth only, tier UNCHANGED)`)
console.log(`bridge candidates ${Object.keys(bridgeCandidates).length} (computed here so the map sheet and the access table cannot disagree)`)
console.log(`in-country bridge ${bridgeRows} (groups with NOTHING of their own; a widely-spoken language around them has something — never counted as theirs)`)
console.log(`gospel audio ${grnCodes} (${grnNew} new codes; GRN via 5fish — heard, not read; ${grnSignSkipped} sign language(s) skipped)`)
console.log(`scripture earth ${seCodes} (${seNew} new codes; SIL partners — Scripture in their own language)`)

File diff suppressed because one or more lines are too long

View file

@ -1431,12 +1431,12 @@
"stories_url": "",
"gospel_audio_url": "https://fivefish.org/alk",
"training_url": "",
"bridge_language": "Akha",
"bridge_iso639_3": "ahk",
"bridge_strength": "strong",
"bridge_groups_speaking": 12,
"bridge_has_scripture": true,
"bridge_has_film": true,
"bridge_language": "",
"bridge_iso639_3": "",
"bridge_strength": "",
"bridge_groups_speaking": 0,
"bridge_has_scripture": false,
"bridge_has_film": false,
"bridge_candidate": "",
"bridge_candidate_iso": "",
"bridge_candidate_groups": 0,
@ -1728,12 +1728,12 @@
"stories_url": "",
"gospel_audio_url": "https://fivefish.org/nos",
"training_url": "",
"bridge_language": "Chinese, Mandarin",
"bridge_iso639_3": "cmn",
"bridge_strength": "strong",
"bridge_groups_speaking": 25,
"bridge_has_scripture": true,
"bridge_has_film": true,
"bridge_language": "",
"bridge_iso639_3": "",
"bridge_strength": "",
"bridge_groups_speaking": 0,
"bridge_has_scripture": false,
"bridge_has_film": false,
"bridge_candidate": "",
"bridge_candidate_iso": "",
"bridge_candidate_groups": 0,
@ -3708,12 +3708,12 @@
"stories_url": "",
"gospel_audio_url": "https://fivefish.org/jle",
"training_url": "",
"bridge_language": "Arabic, Sudanese",
"bridge_iso639_3": "apd",
"bridge_strength": "strong",
"bridge_groups_speaking": 65,
"bridge_has_scripture": true,
"bridge_has_film": true,
"bridge_language": "",
"bridge_iso639_3": "",
"bridge_strength": "",
"bridge_groups_speaking": 0,
"bridge_has_scripture": false,
"bridge_has_film": false,
"bridge_candidate": "",
"bridge_candidate_iso": "",
"bridge_candidate_groups": 0,
@ -12288,12 +12288,12 @@
"stories_url": "",
"gospel_audio_url": "https://fivefish.org/nos",
"training_url": "",
"bridge_language": "Chinese, Mandarin",
"bridge_iso639_3": "cmn",
"bridge_strength": "strong",
"bridge_groups_speaking": 25,
"bridge_has_scripture": true,
"bridge_has_film": true,
"bridge_language": "",
"bridge_iso639_3": "",
"bridge_strength": "",
"bridge_groups_speaking": 0,
"bridge_has_scripture": false,
"bridge_has_film": false,
"bridge_candidate": "",
"bridge_candidate_iso": "",
"bridge_candidate_groups": 0,
@ -19581,12 +19581,12 @@
"stories_url": "",
"gospel_audio_url": "https://fivefish.org/jle",
"training_url": "",
"bridge_language": "Arabic, Sudanese",
"bridge_iso639_3": "apd",
"bridge_strength": "strong",
"bridge_groups_speaking": 65,
"bridge_has_scripture": true,
"bridge_has_film": true,
"bridge_language": "",
"bridge_iso639_3": "",
"bridge_strength": "",
"bridge_groups_speaking": 0,
"bridge_has_scripture": false,
"bridge_has_film": false,
"bridge_candidate": "",
"bridge_candidate_iso": "",
"bridge_candidate_groups": 0,
@ -33771,12 +33771,12 @@
"stories_url": "",
"gospel_audio_url": "https://fivefish.org/ngt",
"training_url": "",
"bridge_language": "Akha",
"bridge_iso639_3": "ahk",
"bridge_strength": "strong",
"bridge_groups_speaking": 12,
"bridge_has_scripture": true,
"bridge_has_film": true,
"bridge_language": "",
"bridge_iso639_3": "",
"bridge_strength": "",
"bridge_groups_speaking": 0,
"bridge_has_scripture": false,
"bridge_has_film": false,
"bridge_candidate": "",
"bridge_candidate_iso": "",
"bridge_candidate_groups": 0,
@ -38292,12 +38292,12 @@
"stories_url": "",
"gospel_audio_url": "https://fivefish.org/nos",
"training_url": "",
"bridge_language": "Chinese, Mandarin",
"bridge_iso639_3": "cmn",
"bridge_strength": "strong",
"bridge_groups_speaking": 25,
"bridge_has_scripture": true,
"bridge_has_film": true,
"bridge_language": "",
"bridge_iso639_3": "",
"bridge_strength": "",
"bridge_groups_speaking": 0,
"bridge_has_scripture": false,
"bridge_has_film": false,
"bridge_candidate": "",
"bridge_candidate_iso": "",
"bridge_candidate_groups": 0,
@ -38556,12 +38556,12 @@
"stories_url": "",
"gospel_audio_url": "https://fivefish.org/lbo",
"training_url": "",
"bridge_language": "Akha",
"bridge_iso639_3": "ahk",
"bridge_strength": "strong",
"bridge_groups_speaking": 12,
"bridge_has_scripture": true,
"bridge_has_film": true,
"bridge_language": "",
"bridge_iso639_3": "",
"bridge_strength": "",
"bridge_groups_speaking": 0,
"bridge_has_scripture": false,
"bridge_has_film": false,
"bridge_candidate": "",
"bridge_candidate_iso": "",
"bridge_candidate_groups": 0,
@ -47697,12 +47697,12 @@
"stories_url": "",
"gospel_audio_url": "https://fivefish.org/jle",
"training_url": "",
"bridge_language": "Arabic, Sudanese",
"bridge_iso639_3": "apd",
"bridge_strength": "strong",
"bridge_groups_speaking": 65,
"bridge_has_scripture": true,
"bridge_has_film": true,
"bridge_language": "",
"bridge_iso639_3": "",
"bridge_strength": "",
"bridge_groups_speaking": 0,
"bridge_has_scripture": false,
"bridge_has_film": false,
"bridge_candidate": "",
"bridge_candidate_iso": "",
"bridge_candidate_groups": 0,
@ -48555,12 +48555,12 @@
"stories_url": "",
"gospel_audio_url": "https://fivefish.org/nev",
"training_url": "",
"bridge_language": "Akha",
"bridge_iso639_3": "ahk",
"bridge_strength": "strong",
"bridge_groups_speaking": 12,
"bridge_has_scripture": true,
"bridge_has_film": true,
"bridge_language": "",
"bridge_iso639_3": "",
"bridge_strength": "",
"bridge_groups_speaking": 0,
"bridge_has_scripture": false,
"bridge_has_film": false,
"bridge_candidate": "",
"bridge_candidate_iso": "",
"bridge_candidate_groups": 0,

File diff suppressed because one or more lines are too long

View file

@ -579,7 +579,7 @@
"bundle": "gospel-resources",
"scriptUrl": "./gospel-resources/gospel-resources.js",
"output": "doxa-maps/gospel-resources/gospel-resources.js",
"integrity": "sha384-SQD84HjvCJ8hyWy/4iHK/Ddo9KGh1JuilIxbn/hvTJuOA0rKVo4ZvJjcTEyur2rg",
"integrity": "sha384-SNFMlwKISnpQzfZl8S6ClWBB/LgxXsvmaw6Wupl9vaQkOigNwwExruJn8u2H5oDj",
"elements": [
"gospel-resources-map"
],
@ -599,7 +599,7 @@
"scriptUrl": "./gospel-resources/gospel-resources.js",
"embed": {
"iframe": "<iframe src=\"./gospel-resources/charts/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=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-SQD84HjvCJ8hyWy/4iHK/Ddo9KGh1JuilIxbn/hvTJuOA0rKVo4ZvJjcTEyur2rg\" crossorigin=\"anonymous\"></script>\n<gospel-resources-map profile-config='{\"profile\":\"charts\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-map>"
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-SNFMlwKISnpQzfZl8S6ClWBB/LgxXsvmaw6Wupl9vaQkOigNwwExruJn8u2H5oDj\" crossorigin=\"anonymous\"></script>\n<gospel-resources-map profile-config='{\"profile\":\"charts\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-map>"
}
},
{
@ -613,7 +613,7 @@
"scriptUrl": "./gospel-resources/gospel-resources.js",
"embed": {
"iframe": "<iframe src=\"./gospel-resources/data-tables/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=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-SQD84HjvCJ8hyWy/4iHK/Ddo9KGh1JuilIxbn/hvTJuOA0rKVo4ZvJjcTEyur2rg\" crossorigin=\"anonymous\"></script>\n<gospel-resources-map profile-config='{\"profile\":\"data-tables\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-map>"
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-SNFMlwKISnpQzfZl8S6ClWBB/LgxXsvmaw6Wupl9vaQkOigNwwExruJn8u2H5oDj\" crossorigin=\"anonymous\"></script>\n<gospel-resources-map profile-config='{\"profile\":\"data-tables\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-map>"
}
},
{
@ -627,7 +627,7 @@
"scriptUrl": "./gospel-resources/gospel-resources.js",
"embed": {
"iframe": "<iframe src=\"./gospel-resources/gospel-dashboard/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
"script": "<!-- Mapbox engine, fetched early; remove this line if you set \"provider\":\"maplibre\" -->\n<link rel=\"preload\" as=\"script\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.js\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-SQD84HjvCJ8hyWy/4iHK/Ddo9KGh1JuilIxbn/hvTJuOA0rKVo4ZvJjcTEyur2rg\" crossorigin=\"anonymous\"></script>\n<gospel-resources-map profile-config='{\"profile\":\"gospel-dashboard\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-map>"
"script": "<!-- Mapbox engine, fetched early; remove this line if you set \"provider\":\"maplibre\" -->\n<link rel=\"preload\" as=\"script\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.js\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-SNFMlwKISnpQzfZl8S6ClWBB/LgxXsvmaw6Wupl9vaQkOigNwwExruJn8u2H5oDj\" crossorigin=\"anonymous\"></script>\n<gospel-resources-map profile-config='{\"profile\":\"gospel-dashboard\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-map>"
}
},
{
@ -641,7 +641,7 @@
"scriptUrl": "./gospel-resources/gospel-resources.js",
"embed": {
"iframe": "<iframe src=\"./gospel-resources/resources-list/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=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-SQD84HjvCJ8hyWy/4iHK/Ddo9KGh1JuilIxbn/hvTJuOA0rKVo4ZvJjcTEyur2rg\" crossorigin=\"anonymous\"></script>\n<gospel-resources-map profile-config='{\"profile\":\"resources-list\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-map>"
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-SNFMlwKISnpQzfZl8S6ClWBB/LgxXsvmaw6Wupl9vaQkOigNwwExruJn8u2H5oDj\" crossorigin=\"anonymous\"></script>\n<gospel-resources-map profile-config='{\"profile\":\"resources-list\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-map>"
}
},
{
@ -655,7 +655,7 @@
"scriptUrl": "./gospel-resources/gospel-resources.js",
"embed": {
"iframe": "<iframe src=\"./gospel-resources/resources-map/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
"script": "<!-- Mapbox engine, fetched early; remove this line if you set \"provider\":\"maplibre\" -->\n<link rel=\"preload\" as=\"script\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.js\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-SQD84HjvCJ8hyWy/4iHK/Ddo9KGh1JuilIxbn/hvTJuOA0rKVo4ZvJjcTEyur2rg\" crossorigin=\"anonymous\"></script>\n<gospel-resources-map profile-config='{\"profile\":\"resources-map\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-map>"
"script": "<!-- Mapbox engine, fetched early; remove this line if you set \"provider\":\"maplibre\" -->\n<link rel=\"preload\" as=\"script\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.js\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-SNFMlwKISnpQzfZl8S6ClWBB/LgxXsvmaw6Wupl9vaQkOigNwwExruJn8u2H5oDj\" crossorigin=\"anonymous\"></script>\n<gospel-resources-map profile-config='{\"profile\":\"resources-map\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-map>"
}
}
]

View file

@ -26,7 +26,7 @@
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
<!-- Bundle IIFE — registers the <gospel-resources-map> custom element. -->
<script src="../gospel-resources.js" integrity="sha384-SQD84HjvCJ8hyWy/4iHK/Ddo9KGh1JuilIxbn/hvTJuOA0rKVo4ZvJjcTEyur2rg" crossorigin="anonymous"></script>
<script src="../gospel-resources.js" integrity="sha384-SNFMlwKISnpQzfZl8S6ClWBB/LgxXsvmaw6Wupl9vaQkOigNwwExruJn8u2H5oDj" crossorigin="anonymous"></script>
<script>
// Mapbox token resolution — the A3 ladder, in precedence order:

View file

@ -26,7 +26,7 @@
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
<!-- Bundle IIFE — registers the <gospel-resources-map> custom element. -->
<script src="../gospel-resources.js" integrity="sha384-SQD84HjvCJ8hyWy/4iHK/Ddo9KGh1JuilIxbn/hvTJuOA0rKVo4ZvJjcTEyur2rg" crossorigin="anonymous"></script>
<script src="../gospel-resources.js" integrity="sha384-SNFMlwKISnpQzfZl8S6ClWBB/LgxXsvmaw6Wupl9vaQkOigNwwExruJn8u2H5oDj" crossorigin="anonymous"></script>
<script>
// Mapbox token resolution — the A3 ladder, in precedence order:

View file

@ -40,7 +40,7 @@
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
<!-- Bundle IIFE — registers the <gospel-resources-map> custom element. -->
<script src="../gospel-resources.js" integrity="sha384-SQD84HjvCJ8hyWy/4iHK/Ddo9KGh1JuilIxbn/hvTJuOA0rKVo4ZvJjcTEyur2rg" crossorigin="anonymous"></script>
<script src="../gospel-resources.js" integrity="sha384-SNFMlwKISnpQzfZl8S6ClWBB/LgxXsvmaw6Wupl9vaQkOigNwwExruJn8u2H5oDj" crossorigin="anonymous"></script>
<script>
// Mapbox token resolution — the A3 ladder, in precedence order:

File diff suppressed because one or more lines are too long

View file

@ -26,7 +26,7 @@
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
<!-- Bundle IIFE — registers the <gospel-resources-map> custom element. -->
<script src="../gospel-resources.js" integrity="sha384-SQD84HjvCJ8hyWy/4iHK/Ddo9KGh1JuilIxbn/hvTJuOA0rKVo4ZvJjcTEyur2rg" crossorigin="anonymous"></script>
<script src="../gospel-resources.js" integrity="sha384-SNFMlwKISnpQzfZl8S6ClWBB/LgxXsvmaw6Wupl9vaQkOigNwwExruJn8u2H5oDj" crossorigin="anonymous"></script>
<script>
// Mapbox token resolution — the A3 ladder, in precedence order:

View file

@ -29,7 +29,7 @@
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
<!-- Bundle IIFE — registers the <gospel-resources-map> custom element. -->
<script src="../gospel-resources.js" integrity="sha384-SQD84HjvCJ8hyWy/4iHK/Ddo9KGh1JuilIxbn/hvTJuOA0rKVo4ZvJjcTEyur2rg" crossorigin="anonymous"></script>
<script src="../gospel-resources.js" integrity="sha384-SNFMlwKISnpQzfZl8S6ClWBB/LgxXsvmaw6Wupl9vaQkOigNwwExruJn8u2H5oDj" crossorigin="anonymous"></script>
<script>
// Mapbox token resolution — the A3 ladder, in precedence order:

File diff suppressed because one or more lines are too long

View file

@ -579,7 +579,7 @@
"bundle": "gospel-resources",
"scriptUrl": "./gospel-resources/gospel-resources.js",
"output": "doxa-maps/gospel-resources/gospel-resources.js",
"integrity": "sha384-SQD84HjvCJ8hyWy/4iHK/Ddo9KGh1JuilIxbn/hvTJuOA0rKVo4ZvJjcTEyur2rg",
"integrity": "sha384-SNFMlwKISnpQzfZl8S6ClWBB/LgxXsvmaw6Wupl9vaQkOigNwwExruJn8u2H5oDj",
"elements": [
"gospel-resources-map"
],
@ -599,7 +599,7 @@
"scriptUrl": "./gospel-resources/gospel-resources.js",
"embed": {
"iframe": "<iframe src=\"./gospel-resources/charts/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=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-SQD84HjvCJ8hyWy/4iHK/Ddo9KGh1JuilIxbn/hvTJuOA0rKVo4ZvJjcTEyur2rg\" crossorigin=\"anonymous\"></script>\n<gospel-resources-map profile-config='{\"profile\":\"charts\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-map>"
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-SNFMlwKISnpQzfZl8S6ClWBB/LgxXsvmaw6Wupl9vaQkOigNwwExruJn8u2H5oDj\" crossorigin=\"anonymous\"></script>\n<gospel-resources-map profile-config='{\"profile\":\"charts\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-map>"
}
},
{
@ -613,7 +613,7 @@
"scriptUrl": "./gospel-resources/gospel-resources.js",
"embed": {
"iframe": "<iframe src=\"./gospel-resources/data-tables/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=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-SQD84HjvCJ8hyWy/4iHK/Ddo9KGh1JuilIxbn/hvTJuOA0rKVo4ZvJjcTEyur2rg\" crossorigin=\"anonymous\"></script>\n<gospel-resources-map profile-config='{\"profile\":\"data-tables\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-map>"
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-SNFMlwKISnpQzfZl8S6ClWBB/LgxXsvmaw6Wupl9vaQkOigNwwExruJn8u2H5oDj\" crossorigin=\"anonymous\"></script>\n<gospel-resources-map profile-config='{\"profile\":\"data-tables\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-map>"
}
},
{
@ -627,7 +627,7 @@
"scriptUrl": "./gospel-resources/gospel-resources.js",
"embed": {
"iframe": "<iframe src=\"./gospel-resources/gospel-dashboard/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
"script": "<!-- Mapbox engine, fetched early; remove this line if you set \"provider\":\"maplibre\" -->\n<link rel=\"preload\" as=\"script\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.js\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-SQD84HjvCJ8hyWy/4iHK/Ddo9KGh1JuilIxbn/hvTJuOA0rKVo4ZvJjcTEyur2rg\" crossorigin=\"anonymous\"></script>\n<gospel-resources-map profile-config='{\"profile\":\"gospel-dashboard\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-map>"
"script": "<!-- Mapbox engine, fetched early; remove this line if you set \"provider\":\"maplibre\" -->\n<link rel=\"preload\" as=\"script\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.js\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-SNFMlwKISnpQzfZl8S6ClWBB/LgxXsvmaw6Wupl9vaQkOigNwwExruJn8u2H5oDj\" crossorigin=\"anonymous\"></script>\n<gospel-resources-map profile-config='{\"profile\":\"gospel-dashboard\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-map>"
}
},
{
@ -641,7 +641,7 @@
"scriptUrl": "./gospel-resources/gospel-resources.js",
"embed": {
"iframe": "<iframe src=\"./gospel-resources/resources-list/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=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-SQD84HjvCJ8hyWy/4iHK/Ddo9KGh1JuilIxbn/hvTJuOA0rKVo4ZvJjcTEyur2rg\" crossorigin=\"anonymous\"></script>\n<gospel-resources-map profile-config='{\"profile\":\"resources-list\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-map>"
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-SNFMlwKISnpQzfZl8S6ClWBB/LgxXsvmaw6Wupl9vaQkOigNwwExruJn8u2H5oDj\" crossorigin=\"anonymous\"></script>\n<gospel-resources-map profile-config='{\"profile\":\"resources-list\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-map>"
}
},
{
@ -655,7 +655,7 @@
"scriptUrl": "./gospel-resources/gospel-resources.js",
"embed": {
"iframe": "<iframe src=\"./gospel-resources/resources-map/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
"script": "<!-- Mapbox engine, fetched early; remove this line if you set \"provider\":\"maplibre\" -->\n<link rel=\"preload\" as=\"script\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.js\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-SQD84HjvCJ8hyWy/4iHK/Ddo9KGh1JuilIxbn/hvTJuOA0rKVo4ZvJjcTEyur2rg\" crossorigin=\"anonymous\"></script>\n<gospel-resources-map profile-config='{\"profile\":\"resources-map\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-map>"
"script": "<!-- Mapbox engine, fetched early; remove this line if you set \"provider\":\"maplibre\" -->\n<link rel=\"preload\" as=\"script\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.js\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-SNFMlwKISnpQzfZl8S6ClWBB/LgxXsvmaw6Wupl9vaQkOigNwwExruJn8u2H5oDj\" crossorigin=\"anonymous\"></script>\n<gospel-resources-map profile-config='{\"profile\":\"resources-map\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-map>"
}
}
]