Show the film link the list already had, for 218 languages that showed nothing
Some checks are pending
build-gate / build (push) Waiting to run
Some checks are pending
build-gate / build (push) Waiting to run
resources-list rendered links only from `resources[]`, which holds SCRIPTURE
editions (eBible entries with ot_books/nt_books/redistributable). The JESUS Film
lives in its own fields -- has_film/jesus_film plus film_url -- and was never
read. Measured over all 862 languages in resources.json:
resources[] non-empty ............ 120
film_url present ................. 306
film_url but resources[] EMPTY ... 218 <- a real link the UI never offered
So 218 languages displayed no link at all while carrying a working one. Arabic,
Sudanese (apd, 66 people groups, 18.7M speakers) has
https://www.jesusfilm.org/watch/?languageId=13562 and rendered nothing.
The pill is deliberately left alone. It reads full_bible/has_scripture, so
"none found" is TRUE -- of scripture, which those 218 genuinely lack. Widening
it to mean "no resources at all" would make it say something false about a
language that has a film. The row now says both things: the pill reports the
scripture gap, the links report what exists.
Film links are marked (muted, with a leading marker) rather than styled as
another Bible, because a film is a real resource but not a text and this list is
about text availability first. Guarded on film_url itself, not on the boolean
flags: a truthy flag with no URL would render an anchor to nowhere.
Verified in a browser on the built tree: default "No scripture found" tab now
renders 218 film anchors where it previously rendered zero, all 218 on rows
whose pill reads "none found"; the sample href matches the apd row in the data.
"Has scripture" shows 120 rows with 155 scripture anchors plus 88 film; "All
languages" 862 rows, 306 film -- matching the pre-change data counts exactly.
0 failed requests.
This commit is contained in:
parent
0f7ef172c4
commit
c27d16cd4b
9 changed files with 58 additions and 25 deletions
|
|
@ -60,6 +60,32 @@ const shown = computed(() => {
|
|||
|
||||
const fmt = (n) => (Number(n) || 0).toLocaleString()
|
||||
|
||||
// ── EVERY LINK THE ROW ACTUALLY HAS, not just the scripture ones ─────────────────────────────
|
||||
// THE DEFECT THIS FIXES (measured 2026-09-23 over all 862 languages in resources.json):
|
||||
// resources[] non-empty ............ 120
|
||||
// film_url present ................. 306
|
||||
// film_url but resources[] EMPTY ... 218 <- a real, verified link the UI never offered
|
||||
//
|
||||
// The template rendered `v-if="l.resources.length"` only, and `resources[]` holds SCRIPTURE
|
||||
// editions (eBible entries with ot_books/nt_books/redistributable). The JESUS Film lives in its own
|
||||
// pair of fields — has_film/jesus_film plus film_url — and was never read. So 218 languages showed
|
||||
// no link at all while carrying a working one: e.g. Arabic, Sudanese (apd, 66 people groups,
|
||||
// 18.7M speakers) has film_url https://www.jesusfilm.org/watch/?languageId=13562 and rendered
|
||||
// nothing.
|
||||
//
|
||||
// ★ THE PILL IS NOT THE BUG AND IS DELIBERATELY LEFT ALONE. It reads full_bible / has_scripture,
|
||||
// so "none found" is TRUE — of scripture. Those 218 rows genuinely have no scripture. Widening the
|
||||
// pill to mean "no resources at all" would make it say something false about a language that has a
|
||||
// film, and this list exists to show the gap honestly. The row now says both things at once: the
|
||||
// pill reports the scripture gap, the links report what does exist.
|
||||
const linksFor = (l) => {
|
||||
const out = (l.resources || []).slice(0, 2).map((r) => ({ url: r.url, title: r.title, kind: 'scripture' }))
|
||||
// Guard on the URL itself, not on has_film/jesus_film: a truthy flag with no URL would render an
|
||||
// anchor to nowhere, which is worse than showing nothing.
|
||||
if (l.film_url) out.push({ url: l.film_url, title: 'JESUS Film', kind: 'film' })
|
||||
return out
|
||||
}
|
||||
|
||||
useShadowStyles(
|
||||
'.gr{position:absolute;inset:0;overflow-y:auto;padding:20px 18px 44px;background:#f6f7f9;color:#0f1419;' +
|
||||
"font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif}" +
|
||||
|
|
@ -92,6 +118,13 @@ useShadowStyles(
|
|||
'.res{margin-top:4px;font-size:11px}' +
|
||||
'.res a{color:#0b7a5b;text-decoration:none;font-weight:600}' +
|
||||
'.res a:hover{text-decoration:underline}' +
|
||||
// Two links on one row need separating, or "Holy Bible" and "JESUS Film" read as one string.
|
||||
'.res a + a{margin-left:10px}' +
|
||||
// The film link is a DIFFERENT KIND of resource from a scripture edition, so it is marked rather
|
||||
// than left to look like another Bible. Muted against the scripture green: a film is a real
|
||||
// resource but not a text, and this list is about text availability first.
|
||||
'.res a.is-film{color:#6d766e;font-weight:500}' +
|
||||
'.res a.is-film::before{content:"▸ "}' +
|
||||
'.caveat{max-width:1080px;margin:18px auto 0;padding:12px 14px;border-radius:8px;' +
|
||||
'background:rgba(0,0,0,.04);font-size:11.5px;line-height:1.65;opacity:.85}' +
|
||||
'.is-dark .caveat{background:rgba(255,255,255,.06)}' +
|
||||
|
|
@ -135,8 +168,8 @@ useShadowStyles(
|
|||
· {{ l.countries.slice(0, 3).join(', ') }}<template v-if="l.countries.length > 3">
|
||||
+{{ l.countries.length - 3 }}</template>
|
||||
</div>
|
||||
<div v-if="l.resources && l.resources.length" class="res">
|
||||
<a v-for="(r, i) in l.resources.slice(0, 2)" :key="i"
|
||||
<div v-if="linksFor(l).length" class="res">
|
||||
<a v-for="(r, i) in linksFor(l)" :key="i" class="res-a" :class="'is-' + r.kind"
|
||||
:href="r.url" target="_blank" rel="noopener">{{ r.title }}</a>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
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-vgQHgoTwP3h7cB8wARXuP6KjbZZYySH9K5XyA7Ty8N7Ij1YyRZn2ZGVbkA3CPqUG" crossorigin="anonymous"></script>
|
||||
<script src="../gospel-resources.js" integrity="sha384-nFY1cewUGJeRgiA3CHjnnYCKMesb1Vh9dfexz7CbAljdHezciVIaND11t66EN5Se" 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-vgQHgoTwP3h7cB8wARXuP6KjbZZYySH9K5XyA7Ty8N7Ij1YyRZn2ZGVbkA3CPqUG" crossorigin="anonymous"></script>
|
||||
<script src="../gospel-resources.js" integrity="sha384-nFY1cewUGJeRgiA3CHjnnYCKMesb1Vh9dfexz7CbAljdHezciVIaND11t66EN5Se" 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-vgQHgoTwP3h7cB8wARXuP6KjbZZYySH9K5XyA7Ty8N7Ij1YyRZn2ZGVbkA3CPqUG" crossorigin="anonymous"></script>
|
||||
<script src="../gospel-resources.js" integrity="sha384-nFY1cewUGJeRgiA3CHjnnYCKMesb1Vh9dfexz7CbAljdHezciVIaND11t66EN5Se" 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-vgQHgoTwP3h7cB8wARXuP6KjbZZYySH9K5XyA7Ty8N7Ij1YyRZn2ZGVbkA3CPqUG" crossorigin="anonymous"></script>
|
||||
<script src="../gospel-resources.js" integrity="sha384-nFY1cewUGJeRgiA3CHjnnYCKMesb1Vh9dfexz7CbAljdHezciVIaND11t66EN5Se" 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
10
public/doxa-maps/manifest.json
generated
10
public/doxa-maps/manifest.json
generated
|
|
@ -540,7 +540,7 @@
|
|||
"bundle": "gospel-resources",
|
||||
"scriptUrl": "./gospel-resources/gospel-resources.js",
|
||||
"output": "doxa-maps/gospel-resources/gospel-resources.js",
|
||||
"integrity": "sha384-vgQHgoTwP3h7cB8wARXuP6KjbZZYySH9K5XyA7Ty8N7Ij1YyRZn2ZGVbkA3CPqUG",
|
||||
"integrity": "sha384-nFY1cewUGJeRgiA3CHjnnYCKMesb1Vh9dfexz7CbAljdHezciVIaND11t66EN5Se",
|
||||
"elements": [
|
||||
"gospel-resources-map"
|
||||
],
|
||||
|
|
@ -556,7 +556,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-vgQHgoTwP3h7cB8wARXuP6KjbZZYySH9K5XyA7Ty8N7Ij1YyRZn2ZGVbkA3CPqUG\" 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-nFY1cewUGJeRgiA3CHjnnYCKMesb1Vh9dfexz7CbAljdHezciVIaND11t66EN5Se\" 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>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -570,7 +570,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-vgQHgoTwP3h7cB8wARXuP6KjbZZYySH9K5XyA7Ty8N7Ij1YyRZn2ZGVbkA3CPqUG\" 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-nFY1cewUGJeRgiA3CHjnnYCKMesb1Vh9dfexz7CbAljdHezciVIaND11t66EN5Se\" 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>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -584,7 +584,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-vgQHgoTwP3h7cB8wARXuP6KjbZZYySH9K5XyA7Ty8N7Ij1YyRZn2ZGVbkA3CPqUG\" 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-nFY1cewUGJeRgiA3CHjnnYCKMesb1Vh9dfexz7CbAljdHezciVIaND11t66EN5Se\" 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>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -598,7 +598,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-vgQHgoTwP3h7cB8wARXuP6KjbZZYySH9K5XyA7Ty8N7Ij1YyRZn2ZGVbkA3CPqUG\" 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-nFY1cewUGJeRgiA3CHjnnYCKMesb1Vh9dfexz7CbAljdHezciVIaND11t66EN5Se\" 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