Gospel map: name the people who translated it
The brief asks for real leads — real translators, the real organisations that do the work — and the map had only URLs. A mobiliser who finds a neighbouring language already has Scripture wants to know who produced it, because that organisation has the linguists, the relationships and very often a team already in that country. The link answers where; this answers who to ask. eBible publishes its catalogue with a copyright line on every row and the join is exact: 964 of the 964 eBible links in this index match a catalogue row by translation id, none unmatched. 929 resolve to a named body across 137 organisations — Wycliffe Bible Translators, The Word for the World, Biblica, Pioneer Bible Translators, the Seed Company, World Bible Translation Center. It shows on the group sheet and on both bridges, where "who do I ask about this language" is the sharpest question on the page. NAMES ONLY, NO NEW LINKS. The catalogue also carries each publisher's domain, and shipping it would put hosts into this map that the doctrine screen has never seen — the screen is an allowlist precisely so a new publisher cannot arrive as a side effect of a data refresh. Measured after the change: 16,963 links scanned, the same count as before, and not one credit contains a URL. A licence is not a translator. 35 rows reduce to "public domain", which says how the text may be used and nothing about who made it; answering "who to ask" with a legal status would be worse than saying nothing, so those are dropped and counted separately from the rows that have no catalogue entry at all.
This commit is contained in:
parent
1008001ea5
commit
9272f1f9b7
15 changed files with 9534 additions and 39 deletions
File diff suppressed because one or more lines are too long
4660
data/tables/translation-credits.json
Normal file
4660
data/tables/translation-credits.json
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -736,6 +736,7 @@ function groupAt(i) {
|
|||
zume_url: c.z || '',
|
||||
zume_approx: c.za || null,
|
||||
scripture_title: c.sv || '',
|
||||
credit: c.cr || null,
|
||||
scripture_scope: c.ss || '',
|
||||
code_note: r[4] ? '' : 'This group has no ISO 639-3 code in the source, so no resource lookup is possible for it.',
|
||||
}
|
||||
|
|
@ -1226,6 +1227,7 @@ const bridgeResources = (b) => {
|
|||
return {
|
||||
iso: b.c,
|
||||
language: c.l || b.l || '',
|
||||
credit: c.cr || null,
|
||||
scripture_url: c.s || (fcbhText ? fcbhText.u : ''),
|
||||
scripture_title: c.sv || (fcbhText ? fcbhText.n : ''),
|
||||
film_url: c.f || '',
|
||||
|
|
@ -1339,6 +1341,8 @@ useShadowStyles(
|
|||
/* Quiet enough that the gap itself still reads first: the row is about what is MISSING, and
|
||||
the way in is the footnote to it, not the headline. */
|
||||
'.gm-pg-way{display:block;font-size:12.5px;color:#3b463d;opacity:.8;margin-top:2px}' +
|
||||
'.gm-credit{font-size:12.5px;color:#6d766e;line-height:1.35}' +
|
||||
'.is-dark .gm-credit{color:#d1d4cd}' +
|
||||
'.is-dark .gm-pg-way{color:#d1d4cd}' +
|
||||
'.gm-prose-note{opacity:.9;font-weight:600}' +
|
||||
// DETAIL: a bottom sheet on a phone, a corner card on desktop.
|
||||
|
|
@ -1994,6 +1998,11 @@ useShadowStyles(
|
|||
:href="tableLink({ iso: curatedBridgeRes.iso, label: curatedBridgeRes.language })">
|
||||
{{ t('gospel.sheet.everyResource') }} {{ curatedBridgeRes.language }} →</a>
|
||||
</div>
|
||||
<p v-if="curatedBridgeRes && curatedBridgeRes.credit" class="gm-credit" dir="ltr" style="margin:4px 0 0">
|
||||
The {{ curatedBridgeRes.language }} Scripture was translated by <b>{{ curatedBridgeRes.credit.o }}</b><template
|
||||
v-if="curatedBridgeRes.credit.y">, {{ curatedBridgeRes.credit.y }}</template> — the likeliest people to ask
|
||||
about this language next.
|
||||
</p>
|
||||
</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.
|
||||
|
|
@ -2075,11 +2084,26 @@ useShadowStyles(
|
|||
:href="tableLink({ iso: candidateBridgeRes.iso, label: candidateBridgeRes.language })">
|
||||
{{ t('gospel.sheet.everyResource') }} {{ candidateBridgeRes.language }} →</a>
|
||||
</div>
|
||||
<p v-if="candidateBridgeRes && candidateBridgeRes.credit" class="gm-credit" dir="ltr" style="margin:4px 0 0">
|
||||
The {{ candidateBridgeRes.language }} Scripture was translated by <b>{{ candidateBridgeRes.credit.o }}</b><template
|
||||
v-if="candidateBridgeRes.credit.y">, {{ candidateBridgeRes.credit.y }}</template> — the likeliest people to ask
|
||||
about this language next.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<p v-if="selectedGroup.scripture_title || selectedGroup.scripture_scope" class="gm-scope">
|
||||
<b>{{ selectedGroup.scripture_title || 'Scripture' }}</b>
|
||||
<template v-if="selectedGroup.scripture_scope"> — {{ selectedGroup.scripture_scope }}</template>
|
||||
<!-- ═══ WHO TO ASK, NOT JUST WHERE TO LOOK ══════════════════════════════════════
|
||||
A link answers where the Scripture is. The organisation that produced it is
|
||||
the one with the linguists, the relationships and very often a team already in
|
||||
that country — which is what a mobiliser actually needs next. A NAME and not a
|
||||
link: the catalogue carries the publisher's domain too, and shipping it would
|
||||
put a host into this map that the doctrine screen has never seen. -->
|
||||
<template v-if="selectedGroup.credit">
|
||||
<br><span class="gm-credit" dir="ltr">Translated by {{ selectedGroup.credit.o
|
||||
}}<template v-if="selectedGroup.credit.y">, {{ selectedGroup.credit.y }}</template></span>
|
||||
</template>
|
||||
</p>
|
||||
|
||||
<!-- A related variety that DOES have something. This is the note that stops the
|
||||
|
|
|
|||
|
|
@ -947,6 +947,22 @@ try {
|
|||
}
|
||||
} catch { /* no SUN index in this tree: the Deaf panel stays as it was */ }
|
||||
|
||||
/**
|
||||
* WHO TRANSLATED IT. Attribution for Scripture already in the index — a name, never a new link,
|
||||
* so no publisher can enter this map through a data refresh without passing the doctrine screen.
|
||||
* It adds no resource and moves no tier; note it is attached AFTER tierOfCode is defined and
|
||||
* BEFORE nothing, precisely because it must not participate in tiering.
|
||||
*/
|
||||
let credited = 0
|
||||
try {
|
||||
const cr = JSON.parse(readFileSync(resolve(REPO, 'data/tables/translation-credits.json'), 'utf8')).byCode || {}
|
||||
for (const [code, v] of Object.entries(cr)) {
|
||||
if (!codes[code] || !v.org) continue
|
||||
codes[code].cr = v.year ? { o: v.org, y: v.year } : { o: v.org }
|
||||
credited++
|
||||
}
|
||||
} catch { /* no credits table: the sheet simply does not name a translator */ }
|
||||
|
||||
const tiers = {}
|
||||
for (const [code, c] of Object.entries(codes)) tiers[code] = tierOfCode(c)
|
||||
|
||||
|
|
@ -983,6 +999,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(`translators named ${credited}\t(attribution only; no new link, no tier change)`)
|
||||
console.log(`tiers published ${Object.keys(tiers).length}\t(one per code, so a language with no pin still has a tier)`)
|
||||
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)`)
|
||||
|
|
|
|||
134
plugin-designs/gospel-resources/scripts/fetch-ebible-credits.mjs
Normal file
134
plugin-designs/gospel-resources/scripts/fetch-ebible-credits.mjs
Normal file
|
|
@ -0,0 +1,134 @@
|
|||
/**
|
||||
* fetch-ebible-credits.mjs — WHO translated the Scripture this map links to.
|
||||
*
|
||||
* WHY. The brief asks for real leads: real translators and the real organisations that do the
|
||||
* work, not just a URL. A mobiliser who finds a neighbouring language already has Scripture
|
||||
* wants to know who produced it, because that organisation is the one with the linguists, the
|
||||
* relationships and very often a field team already in that country. The link answers "where";
|
||||
* this answers "who to ask".
|
||||
*
|
||||
* eBible publishes its whole catalogue as CSV with a Copyright line on every row, and the join
|
||||
* is exact: 964 of the 964 eBible links in this index match a catalogue row by translation id,
|
||||
* with nothing unmatched. The organisations are real and countable — Wycliffe Bible Translators
|
||||
* on 899 rows, Bible Societies 89, Biblica 58, Pioneer Bible Translators 45, Seed Company 28.
|
||||
*
|
||||
* ⚠ NAMES ONLY. NO NEW LINKS. The catalogue also carries homeDomain and publicationURL, and
|
||||
* shipping those would put publishers into this map that the doctrine screen has never seen —
|
||||
* the screen is an allowlist precisely so a new host cannot arrive as a side effect of a data
|
||||
* refresh. A name is a lead a person can act on; a link is a claim this build has to stand
|
||||
* behind. So the name ships and the domain does not.
|
||||
*
|
||||
* It adds no resource and moves no tier. It is attribution for Scripture already in the index.
|
||||
*/
|
||||
import { writeFileSync, readFileSync } from 'node:fs'
|
||||
import { resolve, dirname } from 'node:path'
|
||||
import { fileURLToPath } from 'node:url'
|
||||
|
||||
const HERE = dirname(fileURLToPath(import.meta.url))
|
||||
const REPO = resolve(HERE, '../../..')
|
||||
const OUT = resolve(REPO, 'data/tables/translation-credits.json')
|
||||
const SRC = 'https://ebible.org/Scriptures/translations.csv'
|
||||
const UA = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0 Safari/537.36'
|
||||
|
||||
const res = await fetch(SRC, { headers: { 'user-agent': UA }, signal: AbortSignal.timeout(90000) })
|
||||
if (!res.ok) { console.error(`CREDITS: ${SRC} -> ${res.status}`); process.exit(1) }
|
||||
const text = await res.text()
|
||||
|
||||
/* A CSV parser rather than a split on commas: Copyright lines contain commas inside quotes
|
||||
("Wycliffe Bible Translators, Inc."), and splitting would cut every one of them in half. */
|
||||
const parseCsv = (s) => {
|
||||
const rows = []
|
||||
let row = [], field = '', quoted = false
|
||||
for (let i = 0; i < s.length; i++) {
|
||||
const ch = s[i]
|
||||
if (quoted) {
|
||||
if (ch === '"' && s[i + 1] === '"') { field += '"'; i++ }
|
||||
else if (ch === '"') quoted = false
|
||||
else field += ch
|
||||
} else if (ch === '"') quoted = true
|
||||
else if (ch === ',') { row.push(field); field = '' }
|
||||
else if (ch === '\n') { row.push(field); rows.push(row); row = []; field = '' }
|
||||
else if (ch !== '\r') field += ch
|
||||
}
|
||||
if (field || row.length) { row.push(field); rows.push(row) }
|
||||
return rows
|
||||
}
|
||||
|
||||
const raw = parseCsv(text.replace(/^/, ''))
|
||||
const header = raw[0]
|
||||
const col = (n) => header.indexOf(n)
|
||||
const iLang = col('languageCode'), iId = col('translationId'), iTitle = col('title'), iCr = col('Copyright')
|
||||
if (iLang < 0 || iId < 0 || iCr < 0) {
|
||||
console.error('CREDITS: the catalogue no longer has the columns this reads — refusing to write.')
|
||||
process.exit(1)
|
||||
}
|
||||
|
||||
/** "Copyright © 2009 Wycliffe Bible Translators, Inc." -> { org, year } */
|
||||
const split = (cr) => {
|
||||
const year = (cr.match(/\b(1[89]\d{2}|20\d{2})\b/) || [])[1] || ''
|
||||
const org = cr
|
||||
.replace(/^\s*copyright\s*/i, '')
|
||||
.replace(/©|\(c\)/gi, '')
|
||||
.replace(/\b(1[89]\d{2}|20\d{2})\b/g, '')
|
||||
.replace(/^[\s,.-]+|[\s,.]+$/g, '')
|
||||
.replace(/\s{2,}/g, ' ')
|
||||
.trim()
|
||||
return { org, year }
|
||||
}
|
||||
|
||||
const byId = {}
|
||||
const byIdAll = {}
|
||||
let withOrg = 0
|
||||
for (const r of raw.slice(1)) {
|
||||
if (!r[iId]) continue
|
||||
byIdAll[r[iId]] = true
|
||||
const { org, year } = split(r[iCr] || '')
|
||||
/* ⚠ A LICENCE IS NOT A TRANSLATOR. 35 rows reduce to "public domain", which says how the text
|
||||
may be used and nothing about who produced it. Shipping that as a credit would answer "who
|
||||
to ask" with a legal status, so those rows are dropped and the group simply has no credit —
|
||||
which is the true state of what this catalogue tells us. */
|
||||
if (!org || /^(public domain|no copyright|copyrighted|licen[cs]e)\b/i.test(org)) continue
|
||||
withOrg++
|
||||
byId[r[iId]] = { lang: r[iLang] || '', title: r[iTitle] || '', org, year }
|
||||
}
|
||||
|
||||
/* Only the translations this map actually links to are kept — the rest is somebody else's
|
||||
catalogue, and carrying it would grow the shipped payload for no reader. */
|
||||
const idx = JSON.parse(readFileSync(resolve(REPO, 'data/tables/people-group-pins.json'), 'utf8'))
|
||||
const used = {}
|
||||
let joined = 0, noRow = 0, licenceOnly = 0
|
||||
for (const [code, c] of Object.entries(idx.codes || {})) {
|
||||
const m = /^https?:\/\/ebible\.org\/([^/]+)\/?$/.exec(c.s || '')
|
||||
if (!m) continue
|
||||
const hit = byId[m[1]]
|
||||
/* Two different silences, counted apart: the catalogue has no row for this translation, or it
|
||||
has one whose copyright is a licence rather than a body. Adding them together would hide
|
||||
which of the two is growing. */
|
||||
if (!hit) { if (byIdAll[m[1]]) licenceOnly++; else noRow++; continue }
|
||||
joined++
|
||||
used[code] = { org: hit.org, year: hit.year, title: hit.title }
|
||||
}
|
||||
|
||||
if (!joined) {
|
||||
console.error('CREDITS: REFUSING TO WRITE — nothing joined; the URL shape or the catalogue changed.')
|
||||
process.exitCode = 1
|
||||
} else {
|
||||
writeFileSync(OUT, `${JSON.stringify({
|
||||
meta: {
|
||||
title: 'Who translated it — attribution for the Scripture this map links to',
|
||||
source: SRC,
|
||||
generated: new Date().toISOString().slice(0, 10),
|
||||
catalogue_rows: raw.length - 1,
|
||||
rows_with_an_organisation: withOrg,
|
||||
codes_joined: joined,
|
||||
codes_with_no_catalogue_row: noRow,
|
||||
codes_whose_copyright_is_a_licence_not_a_translator: licenceOnly,
|
||||
note: 'Names only. The catalogue also carries homeDomain and publicationURL; those are ' +
|
||||
'deliberately not shipped, because a link would put a publisher into this map that the ' +
|
||||
'doctrine screen has never seen. Adds no resource and moves no tier.',
|
||||
},
|
||||
byCode: used,
|
||||
}, null, 1)}\n`)
|
||||
console.log(`translation-credits: ${joined} code(s) with a named translator, ${licenceOnly} whose copyright is a licence, ${noRow} with no catalogue row, from ${raw.length - 1} rows`)
|
||||
console.log(`wrote ${OUT}`)
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
4660
public/dx-maps/assets/tables/translation-credits.json
Normal file
4660
public/dx-maps/assets/tables/translation-credits.json
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -579,7 +579,7 @@
|
|||
"bundle": "gospel-resources",
|
||||
"scriptUrl": "./gospel-resources/gospel-resources.js",
|
||||
"output": "dx-maps/gospel-resources/gospel-resources.js",
|
||||
"integrity": "sha384-BLxov30KvOIfmWqBZXBiuwt8pMgXoGd2PujpsIZo42NChDMbkaSqnUNm6FDSXRlA",
|
||||
"integrity": "sha384-98plszsnIB6YPPbI1OeOUYQbKmiHv3uXgXXXrK2y4mWb9oxtNMcUII7WAfJctZzj",
|
||||
"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-BLxov30KvOIfmWqBZXBiuwt8pMgXoGd2PujpsIZo42NChDMbkaSqnUNm6FDSXRlA\" 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-98plszsnIB6YPPbI1OeOUYQbKmiHv3uXgXXXrK2y4mWb9oxtNMcUII7WAfJctZzj\" 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-BLxov30KvOIfmWqBZXBiuwt8pMgXoGd2PujpsIZo42NChDMbkaSqnUNm6FDSXRlA\" 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-98plszsnIB6YPPbI1OeOUYQbKmiHv3uXgXXXrK2y4mWb9oxtNMcUII7WAfJctZzj\" 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-BLxov30KvOIfmWqBZXBiuwt8pMgXoGd2PujpsIZo42NChDMbkaSqnUNm6FDSXRlA\" 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-98plszsnIB6YPPbI1OeOUYQbKmiHv3uXgXXXrK2y4mWb9oxtNMcUII7WAfJctZzj\" 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-BLxov30KvOIfmWqBZXBiuwt8pMgXoGd2PujpsIZo42NChDMbkaSqnUNm6FDSXRlA\" 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-98plszsnIB6YPPbI1OeOUYQbKmiHv3uXgXXXrK2y4mWb9oxtNMcUII7WAfJctZzj\" 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-BLxov30KvOIfmWqBZXBiuwt8pMgXoGd2PujpsIZo42NChDMbkaSqnUNm6FDSXRlA\" 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-98plszsnIB6YPPbI1OeOUYQbKmiHv3uXgXXXrK2y4mWb9oxtNMcUII7WAfJctZzj\" 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>"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
|
|||
|
|
@ -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-BLxov30KvOIfmWqBZXBiuwt8pMgXoGd2PujpsIZo42NChDMbkaSqnUNm6FDSXRlA" crossorigin="anonymous"></script>
|
||||
<script src="../gospel-resources.js" integrity="sha384-98plszsnIB6YPPbI1OeOUYQbKmiHv3uXgXXXrK2y4mWb9oxtNMcUII7WAfJctZzj" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -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-BLxov30KvOIfmWqBZXBiuwt8pMgXoGd2PujpsIZo42NChDMbkaSqnUNm6FDSXRlA" crossorigin="anonymous"></script>
|
||||
<script src="../gospel-resources.js" integrity="sha384-98plszsnIB6YPPbI1OeOUYQbKmiHv3uXgXXXrK2y4mWb9oxtNMcUII7WAfJctZzj" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -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-BLxov30KvOIfmWqBZXBiuwt8pMgXoGd2PujpsIZo42NChDMbkaSqnUNm6FDSXRlA" crossorigin="anonymous"></script>
|
||||
<script src="../gospel-resources.js" integrity="sha384-98plszsnIB6YPPbI1OeOUYQbKmiHv3uXgXXXrK2y4mWb9oxtNMcUII7WAfJctZzj" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -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-BLxov30KvOIfmWqBZXBiuwt8pMgXoGd2PujpsIZo42NChDMbkaSqnUNm6FDSXRlA" crossorigin="anonymous"></script>
|
||||
<script src="../gospel-resources.js" integrity="sha384-98plszsnIB6YPPbI1OeOUYQbKmiHv3uXgXXXrK2y4mWb9oxtNMcUII7WAfJctZzj" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -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-BLxov30KvOIfmWqBZXBiuwt8pMgXoGd2PujpsIZo42NChDMbkaSqnUNm6FDSXRlA" crossorigin="anonymous"></script>
|
||||
<script src="../gospel-resources.js" integrity="sha384-98plszsnIB6YPPbI1OeOUYQbKmiHv3uXgXXXrK2y4mWb9oxtNMcUII7WAfJctZzj" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -579,7 +579,7 @@
|
|||
"bundle": "gospel-resources",
|
||||
"scriptUrl": "./gospel-resources/gospel-resources.js",
|
||||
"output": "dx-maps/gospel-resources/gospel-resources.js",
|
||||
"integrity": "sha384-BLxov30KvOIfmWqBZXBiuwt8pMgXoGd2PujpsIZo42NChDMbkaSqnUNm6FDSXRlA",
|
||||
"integrity": "sha384-98plszsnIB6YPPbI1OeOUYQbKmiHv3uXgXXXrK2y4mWb9oxtNMcUII7WAfJctZzj",
|
||||
"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-BLxov30KvOIfmWqBZXBiuwt8pMgXoGd2PujpsIZo42NChDMbkaSqnUNm6FDSXRlA\" 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-98plszsnIB6YPPbI1OeOUYQbKmiHv3uXgXXXrK2y4mWb9oxtNMcUII7WAfJctZzj\" 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-BLxov30KvOIfmWqBZXBiuwt8pMgXoGd2PujpsIZo42NChDMbkaSqnUNm6FDSXRlA\" 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-98plszsnIB6YPPbI1OeOUYQbKmiHv3uXgXXXrK2y4mWb9oxtNMcUII7WAfJctZzj\" 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-BLxov30KvOIfmWqBZXBiuwt8pMgXoGd2PujpsIZo42NChDMbkaSqnUNm6FDSXRlA\" 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-98plszsnIB6YPPbI1OeOUYQbKmiHv3uXgXXXrK2y4mWb9oxtNMcUII7WAfJctZzj\" 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-BLxov30KvOIfmWqBZXBiuwt8pMgXoGd2PujpsIZo42NChDMbkaSqnUNm6FDSXRlA\" 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-98plszsnIB6YPPbI1OeOUYQbKmiHv3uXgXXXrK2y4mWb9oxtNMcUII7WAfJctZzj\" 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-BLxov30KvOIfmWqBZXBiuwt8pMgXoGd2PujpsIZo42NChDMbkaSqnUNm6FDSXRlA\" 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-98plszsnIB6YPPbI1OeOUYQbKmiHv3uXgXXXrK2y4mWb9oxtNMcUII7WAfJctZzj\" 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>"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
|
|||
Loading…
Reference in a new issue