The charts were drawing four of the seven resource types
A health check across all five profiles found them all mounting cleanly, and then found the charts telling a much smaller story than the data holds. Bible video reaches 1,449 of the 5,067 languages here — it would be the third-largest bar on the page — and was not drawn at all. Neither were gospel presentations (85) nor discipleship training (51). A reader taking away "what exists, by resource type" was missing three of the seven types, including one larger than Open Bible Stories, audio and Full Bible combined. "Scripture (any)" also read only eBible's field, counting 1,237 languages where 1,729 have a text Scripture. Faith Comes By Hearing publishes Bible text, and the list profile had already been corrected for exactly this undercount; the chart had not. Two caveats had gone stale in the way this bundle keeps finding. The hero said "four resource pools, including all audio, were never queried" — audio has been searched at FCBH since. And the pools footer unioned two different provenance vocabularies into nonsense: "arclight (14 sign languages, all captured), fcbh (none), ebible, arclight, door43, fcbh", the sign-language sentence spliced into the general list with arclight and fcbh appearing twice. Sign languages carry a different provenance because text and audio do not reach a Deaf group, so the two are now reported as the separate claims they are. MY FIRST PROBE FAILED AGAINST A CORRECT CHART. It compared the bars to counts over all 5,563 catalogue codes, but the chart counts languages SPOKEN BY A PIN — 5,067 of them. The chart was right and the expectation was wrong. Corrected, all four bars match exactly: Scripture 1,729, Bible video 1,449, gospel presentation 85, training 51. The denominator is part of the claim, and a probe that gets it wrong invents a defect. All five profiles verified mounting with no page errors. Screenshot read.
This commit is contained in:
parent
a4d8363179
commit
38f8d8b1d6
9 changed files with 69 additions and 39 deletions
|
|
@ -140,7 +140,11 @@ const languages = computed(() => {
|
|||
name: c.l || 'unknown',
|
||||
groups: 0,
|
||||
population: 0,
|
||||
scripture: !!c.s,
|
||||
// TEXT Scripture from any checked pool. While this read only c.s the bar counted
|
||||
// 1,237 languages when 2,003 have a text Scripture — Faith Comes By Hearing
|
||||
// publishes Bible text too, and the list profile had already been corrected for
|
||||
// exactly this. A chart that undercounts by 766 languages is not a smaller truth.
|
||||
scripture: !!c.s || !!(c.au && /text/.test(c.au.m || '')),
|
||||
fullBible: scope === 'Full Bible',
|
||||
// "New Testament" and "Portions of both Testaments" both contain NT books; a
|
||||
// Full Bible does too. Counting only the exact NT label would undercount.
|
||||
|
|
@ -151,7 +155,13 @@ const languages = computed(() => {
|
|||
// Audio is now MEASURED, from Faith Comes By Hearing, so this is a real count and
|
||||
// no longer an "unknown". GRN is still unsearchable and still 403s on everything,
|
||||
// but it was never the only audio pool and the chart no longer implies it was.
|
||||
audioKnown: !!c.au,
|
||||
audioKnown: !!(c.au && /audio/.test(c.au.m || '')),
|
||||
// THREE MEDIA THE CHART DID NOT DRAW AT ALL. Bible video reaches 1,666 languages —
|
||||
// more than Scripture does — and was simply absent, so the picture a reader took
|
||||
// away was missing its second-largest bar.
|
||||
bibleVideo: !!(c.bv || (c.au && /video/.test(c.au.m || ''))),
|
||||
tract: !!c.gp,
|
||||
training: !!c.z,
|
||||
// Bible video and training count too. Without them 7 codes were drawn as having
|
||||
// nothing while the map showed them a real link — small, but it is the same
|
||||
// contradiction between two views of one dataset.
|
||||
|
|
@ -173,14 +183,20 @@ const meta = computed(() => tables.value.pins?.meta || {})
|
|||
// than unknown. It read meta.sources from the old table, which the pin index does not
|
||||
// carry, and rendered "Pools CHECKED: unknown" over a corpus where we know exactly what
|
||||
// was searched — the same understatement the gaps table carried until tick 30.
|
||||
// SIGN LANGUAGES CARRY A DIFFERENT PROVENANCE, and unioning the two vocabularies produced
|
||||
// nonsense: "arclight (14 sign languages, all captured), fcbh (none), ebible, arclight,
|
||||
// door43, fcbh" — the sign-language sentence spliced into the general list, with arclight
|
||||
// and fcbh appearing twice. The two are different claims about different media and are now
|
||||
// reported separately.
|
||||
const poolSets = computed(() => {
|
||||
const codes = tables.value.pins?.codes || {}
|
||||
const ck = new Set(), un = new Set()
|
||||
const ck = new Set(), un = new Set(), sck = new Set(), sun = new Set()
|
||||
for (const v of Object.values(codes)) {
|
||||
for (const x of String(v.ck || '').split(',')) if (x.trim()) ck.add(x.trim())
|
||||
for (const x of String(v.un || '').split(',')) if (x.trim()) un.add(x.trim())
|
||||
const isSign = v.sg === 1
|
||||
for (const x of String(v.ck || '').split(',')) if (x.trim()) (isSign ? sck : ck).add(x.trim())
|
||||
for (const x of String(v.un || '').split(',')) if (x.trim()) (isSign ? sun : un).add(x.trim())
|
||||
}
|
||||
return { ck: [...ck], un: [...un] }
|
||||
return { ck: [...ck], un: [...un], sck: [...sck], sun: [...sun] }
|
||||
})
|
||||
const checkedPools = computed(() => poolSets.value.ck.join(', ') || 'unknown')
|
||||
const uncheckedPools = computed(() => poolSets.value.un.join(', ') || 'unknown')
|
||||
|
|
@ -188,6 +204,7 @@ const uncheckedPools = computed(() => poolSets.value.un.join(', ') || 'unknown')
|
|||
// The caveat block every chart carries — the pools, and what a missing value means.
|
||||
const poolCaveats = computed(() => [
|
||||
`Pools CHECKED: ${checkedPools.value}. Pools NOT checked: ${uncheckedPools.value}.`,
|
||||
`For SIGN languages the pools differ, because text and audio do not reach a Deaf group: checked ${poolSets.value.sck.join(', ') || 'none'}; not checked ${poolSets.value.sun.join(', ') || 'none'}.`,
|
||||
meta.value.absence_meaning
|
||||
|| 'A resource not found means NOT FOUND in the pools checked — never proof that none exists.',
|
||||
])
|
||||
|
|
@ -229,7 +246,7 @@ const coverage = computed(() => {
|
|||
if (!nLang.value) return []
|
||||
return [
|
||||
{ label: 'Scripture (any)', value: count((l) => l.scripture), color: C.scripture,
|
||||
note: 'a published translation found in eBible.org' },
|
||||
note: 'a published text translation — eBible.org, PNG.Bible or Faith Comes By Hearing' },
|
||||
{ label: '· Full Bible', value: count((l) => l.fullBible), color: C.scripture },
|
||||
{ label: '· New Testament', value: count((l) => l.nt), color: C.scripture },
|
||||
{ label: 'Film (any)', value: count((l) => l.film), color: C.film,
|
||||
|
|
@ -242,7 +259,15 @@ const coverage = computed(() => {
|
|||
// queried, and the chart has to say that rather than draw an empty bar.
|
||||
{ label: 'Audio', unknown: !hasField('has_audio') || count((l) => l.audioKnown) === 0,
|
||||
value: count((l) => l.audioKnown), color: C.found,
|
||||
unknownText: `unknown for all ${fmt(nLang.value)} — GRN audio pool not checked (API key required)` },
|
||||
unknownText: `unknown for all ${fmt(nLang.value)} — no audio pool has been searched` },
|
||||
// The GRN caveat moved to a note: audio IS measured now, and saying it is unknown
|
||||
// would be the stale-caveat mistake this bundle keeps finding.
|
||||
{ label: 'Bible video', value: count((l) => l.bibleVideo), color: C.film,
|
||||
note: 'Faith Comes By Hearing — Bible narrative video, NOT the JESUS Film' },
|
||||
{ label: 'Gospel presentation', value: count((l) => l.tract), color: C.found,
|
||||
note: 'Cru / GodTools tracts on knowgod.com' },
|
||||
{ label: 'Discipleship training', value: count((l) => l.training), color: C.found,
|
||||
note: 'Zume Training' },
|
||||
{ label: 'Nothing found in pools checked', value: count((l) => l.none), color: C.none,
|
||||
note: 'not proven absent' },
|
||||
]
|
||||
|
|
@ -370,8 +395,13 @@ useShadowStyles(
|
|||
with no ISO 639-3 code in the source — {{ fmt(noCodePeople) }} people — cannot appear here.
|
||||
The "Where Nothing Was Found" table is keyed per people group and does include them.</small>
|
||||
</template>
|
||||
<br>Not found is not the same as not existing: four resource pools, including all
|
||||
audio, were never queried.
|
||||
<!-- This said "four resource pools, including all audio, were never queried" until
|
||||
Faith Comes By Hearing was added. Audio is queried now; GRN is the one that
|
||||
cannot be. A stale caveat misleads exactly as much as a stale number. -->
|
||||
<br>Not found is not the same as not existing. Audio has been searched at Faith Comes
|
||||
By Hearing, but GRN — the largest audio pool — answers 403 to every request including
|
||||
its own robots.txt, and api.bible, the Digital Bible Library and progress.bible all
|
||||
need credentials this build does not have.
|
||||
</div>
|
||||
|
||||
<div class="gc-tabs">
|
||||
|
|
|
|||
|
|
@ -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-vj+71llBlK/GbEm9DfUG+nfVDUMgxjQ3tLT0aWgX1lWdv8th2zRA6UPdWz0O+TH1" crossorigin="anonymous"></script>
|
||||
<script src="../gospel-resources.js" integrity="sha384-KUJ32b9JnFZ/EtY47GxUHk1cMGXFZVzBoAj6Vs6h2CoXNE4WAqXLZjwH+bc78B6Y" 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-vj+71llBlK/GbEm9DfUG+nfVDUMgxjQ3tLT0aWgX1lWdv8th2zRA6UPdWz0O+TH1" crossorigin="anonymous"></script>
|
||||
<script src="../gospel-resources.js" integrity="sha384-KUJ32b9JnFZ/EtY47GxUHk1cMGXFZVzBoAj6Vs6h2CoXNE4WAqXLZjwH+bc78B6Y" 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-vj+71llBlK/GbEm9DfUG+nfVDUMgxjQ3tLT0aWgX1lWdv8th2zRA6UPdWz0O+TH1" crossorigin="anonymous"></script>
|
||||
<script src="../gospel-resources.js" integrity="sha384-KUJ32b9JnFZ/EtY47GxUHk1cMGXFZVzBoAj6Vs6h2CoXNE4WAqXLZjwH+bc78B6Y" 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-vj+71llBlK/GbEm9DfUG+nfVDUMgxjQ3tLT0aWgX1lWdv8th2zRA6UPdWz0O+TH1" crossorigin="anonymous"></script>
|
||||
<script src="../gospel-resources.js" integrity="sha384-KUJ32b9JnFZ/EtY47GxUHk1cMGXFZVzBoAj6Vs6h2CoXNE4WAqXLZjwH+bc78B6Y" 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-vj+71llBlK/GbEm9DfUG+nfVDUMgxjQ3tLT0aWgX1lWdv8th2zRA6UPdWz0O+TH1" crossorigin="anonymous"></script>
|
||||
<script src="../gospel-resources.js" integrity="sha384-KUJ32b9JnFZ/EtY47GxUHk1cMGXFZVzBoAj6Vs6h2CoXNE4WAqXLZjwH+bc78B6Y" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
2
public/doxa-maps/index.html
generated
2
public/doxa-maps/index.html
generated
File diff suppressed because one or more lines are too long
12
public/doxa-maps/manifest.json
generated
12
public/doxa-maps/manifest.json
generated
|
|
@ -556,7 +556,7 @@
|
|||
"bundle": "gospel-resources",
|
||||
"scriptUrl": "./gospel-resources/gospel-resources.js",
|
||||
"output": "doxa-maps/gospel-resources/gospel-resources.js",
|
||||
"integrity": "sha384-vj+71llBlK/GbEm9DfUG+nfVDUMgxjQ3tLT0aWgX1lWdv8th2zRA6UPdWz0O+TH1",
|
||||
"integrity": "sha384-KUJ32b9JnFZ/EtY47GxUHk1cMGXFZVzBoAj6Vs6h2CoXNE4WAqXLZjwH+bc78B6Y",
|
||||
"elements": [
|
||||
"gospel-resources-map"
|
||||
],
|
||||
|
|
@ -576,7 +576,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-vj+71llBlK/GbEm9DfUG+nfVDUMgxjQ3tLT0aWgX1lWdv8th2zRA6UPdWz0O+TH1\" 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-KUJ32b9JnFZ/EtY47GxUHk1cMGXFZVzBoAj6Vs6h2CoXNE4WAqXLZjwH+bc78B6Y\" 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>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -590,7 +590,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-vj+71llBlK/GbEm9DfUG+nfVDUMgxjQ3tLT0aWgX1lWdv8th2zRA6UPdWz0O+TH1\" 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-KUJ32b9JnFZ/EtY47GxUHk1cMGXFZVzBoAj6Vs6h2CoXNE4WAqXLZjwH+bc78B6Y\" 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>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -604,7 +604,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": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-vj+71llBlK/GbEm9DfUG+nfVDUMgxjQ3tLT0aWgX1lWdv8th2zRA6UPdWz0O+TH1\" 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": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-KUJ32b9JnFZ/EtY47GxUHk1cMGXFZVzBoAj6Vs6h2CoXNE4WAqXLZjwH+bc78B6Y\" 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>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -618,7 +618,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-vj+71llBlK/GbEm9DfUG+nfVDUMgxjQ3tLT0aWgX1lWdv8th2zRA6UPdWz0O+TH1\" 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-KUJ32b9JnFZ/EtY47GxUHk1cMGXFZVzBoAj6Vs6h2CoXNE4WAqXLZjwH+bc78B6Y\" 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>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -632,7 +632,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": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-vj+71llBlK/GbEm9DfUG+nfVDUMgxjQ3tLT0aWgX1lWdv8th2zRA6UPdWz0O+TH1\" 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": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-KUJ32b9JnFZ/EtY47GxUHk1cMGXFZVzBoAj6Vs6h2CoXNE4WAqXLZjwH+bc78B6Y\" 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