Merge branch 'main' of https://git.nuxtbase.app/doxa-life/doxa-maps into bundler-3/work
Some checks are pending
build-gate / build (push) Waiting to run
Some checks are pending
build-gate / build (push) Waiting to run
# Conflicts: # public/doxa-maps/index.html
This commit is contained in:
commit
1c7384ee39
17 changed files with 1439 additions and 100 deletions
82
internal/build-packet-fixtures.mjs
Normal file
82
internal/build-packet-fixtures.mjs
Normal file
|
|
@ -0,0 +1,82 @@
|
|||
#!/usr/bin/env node
|
||||
/**
|
||||
* build-packet-fixtures — build every committed packet fixture, so check:packets-all has more
|
||||
* than one SHAPE to evaluate.
|
||||
*
|
||||
* THE GAP THIS CLOSES. check:packets-all reported "every generated packet renders, in every locale
|
||||
* present" and passed on 11 packets — all of them the SAME ZONE (laos) in 11 locales, against 28
|
||||
* poster zones. The suite proved one zone's layout eleven times. Generating all 28 x 11 is a
|
||||
* network fetch per zone and ~100MB of artefacts, so the answer is not more zones: it is more
|
||||
* SHAPES, chosen where the layout can actually break, built from committed records with no network.
|
||||
*
|
||||
* ★ THE SHAPES ARE THE PAGE BOUNDARY. packet-render.js:76 sets PER_PAGE = 20, and pagination is
|
||||
* `for (start = 0; start < groups.length; start += PER_PAGE)`. laos has 95 groups and tibet 43 —
|
||||
* both mid-range, both remainder cases, so the boundary itself had NEVER been rendered:
|
||||
* - exactly 20 : one full page. An off-by-one here yields 2 list pages, the second empty.
|
||||
* - 21 : two pages, the second holding a SINGLE card.
|
||||
* - 1 : the minimum a zone can have.
|
||||
* Each is derived by slicing the committed tibet fixture, so they are byte-deterministic and need
|
||||
* no API.
|
||||
*
|
||||
* ⚠ EACH BUILD OVERWRITES THE PREVIOUS ONE, which is the reason this script exists rather than a
|
||||
* line of shell. packet.mjs names its output for the ZONE, not the fixture, so four fixture builds
|
||||
* against one zone leave one file — and check:packets-all would go on seeing a single shape while
|
||||
* reporting success. Each output is renamed to its fixture's own name so all of them coexist and
|
||||
* every one gets evaluated.
|
||||
*
|
||||
* Usage: node internal/build-packet-fixtures.mjs
|
||||
*/
|
||||
import { existsSync, renameSync, readdirSync } from 'node:fs'
|
||||
import { resolve, dirname, join } from 'node:path'
|
||||
import { fileURLToPath } from 'node:url'
|
||||
import { spawnSync } from 'node:child_process'
|
||||
|
||||
const HERE = dirname(fileURLToPath(import.meta.url))
|
||||
const REPO = process.env.DOXA_REPO || resolve(HERE, '..')
|
||||
const FIXTURES = resolve(REPO, 'library/scripts/posters/fixtures')
|
||||
const OUT = resolve(REPO, 'library/scripts/posters/out/packets')
|
||||
// Every fixture is built against this zone: the records come from the fixture, and the zone only
|
||||
// supplies page 1's map. Keeping it constant means a shape difference is the ONLY variable.
|
||||
const ZONE = 'asia-china-tibet-autonomous-region'
|
||||
|
||||
if (!existsSync(FIXTURES)) {
|
||||
console.log(`PACKET-FIXTURES: SKIP — no fixtures directory at ${FIXTURES}`)
|
||||
process.exit(0)
|
||||
}
|
||||
|
||||
const fixtures = readdirSync(FIXTURES).filter((f) => /^records-.*\.json$/.test(f)).sort()
|
||||
if (!fixtures.length) {
|
||||
console.log('PACKET-FIXTURES: SKIP — no records-*.json fixtures committed')
|
||||
process.exit(0)
|
||||
}
|
||||
|
||||
console.log(`PACKET-FIXTURES: building ${fixtures.length} fixture(s)`)
|
||||
const built = []
|
||||
const failed = []
|
||||
|
||||
for (const fx of fixtures) {
|
||||
const name = fx.replace(/^records-/, '').replace(/\.json$/, '')
|
||||
const res = spawnSync(process.execPath, [join(REPO, 'library/scripts/posters/packet.mjs')], {
|
||||
cwd: REPO,
|
||||
encoding: 'utf8',
|
||||
env: { ...process.env, PACKET_RECORDS: join(FIXTURES, fx), ONLY: ZONE },
|
||||
})
|
||||
const produced = join(OUT, `${ZONE}.html`)
|
||||
if (res.status !== 0 || !existsSync(produced)) {
|
||||
failed.push(`${fx}: ${(res.stderr || res.stdout || '').trim().split('\n').slice(-1)[0] || 'no output'}`)
|
||||
console.log(` ✗ ${fx}`)
|
||||
continue
|
||||
}
|
||||
// Rename BEFORE the next build, or the next one overwrites it — see the warning above.
|
||||
const dest = join(OUT, `fixture-${name}.html`)
|
||||
renameSync(produced, dest)
|
||||
built.push(`fixture-${name}.html`)
|
||||
console.log(` ✓ ${fx} -> fixture-${name}.html`)
|
||||
}
|
||||
|
||||
if (failed.length) {
|
||||
console.error(`\nPACKET-FIXTURES: FAIL — ${failed.length} fixture(s) did not build`)
|
||||
for (const f of failed) console.error(' - ' + f)
|
||||
process.exit(1)
|
||||
}
|
||||
console.log(`\nPACKET-FIXTURES: ${built.length} packet(s) built. Run check:packets-all to evaluate them.`)
|
||||
|
|
@ -32,6 +32,21 @@ const LEAF = process.argv[2] || DEFAULT_LEAF
|
|||
const WIDTHS = (process.env.CARD_FIT_WIDTH || '390,768,1024,1440,1920')
|
||||
.split(',').map((n) => Number(n.trim())).filter(Boolean)
|
||||
|
||||
// ★ AND SWEEP LOCALES, for exactly the same reason the widths are swept. The Driver's requirement
|
||||
// was "full words visible AND support localization"; this gate only ever ran in English, which is
|
||||
// the shortest of the eleven. MEASURED 2026-09-24 at 1440px, the three print labels:
|
||||
// en Prayer List 76px · Card Deck 72px · Poster Map 79px
|
||||
// ro Listă de rugăciune 122px · Pachet de cartonașe 133px · Harta afișului 92px (+75%)
|
||||
// zh 禱告名單 56px · 禱告卡組 56px · 海报地图 56px
|
||||
// Romanian is the widest RENDERED, which is the property that matters — not the longest string.
|
||||
// Chinese is only 4 characters yet each glyph is near double-width, so a character-count heuristic
|
||||
// would have picked the wrong worst case. The gate asserts scrollWidth > clientWidth, which is
|
||||
// pixels, so the sweep has to be pixels too.
|
||||
// en is always included as the control; ro and zh are the measured extremes. Override with
|
||||
// CARD_FIT_LANG to check a specific locale.
|
||||
const LANGS = (process.env.CARD_FIT_LANG || 'en,ro,zh')
|
||||
.split(',').map((s) => s.trim()).filter(Boolean)
|
||||
|
||||
let reachable = false
|
||||
try { const r = await fetch(LEAF, { signal: AbortSignal.timeout(4000) }); reachable = r.ok } catch { /* precondition */ }
|
||||
if (!reachable) {
|
||||
|
|
@ -44,10 +59,15 @@ const WALK = `(root, out) => { out = out || []; const rec = (r) => { for (const
|
|||
|
||||
const browser = await chromium.launch({ args: ['--use-gl=swiftshader', '--enable-unsafe-swiftshader'] })
|
||||
|
||||
async function measure(width) {
|
||||
async function measure(width, lang) {
|
||||
const mobile = width < 500
|
||||
const page = await browser.newPage({ viewport: { width, height: 1000 }, isMobile: mobile, hasTouch: mobile })
|
||||
await page.goto(LEAF, { waitUntil: 'load', timeout: 45000 })
|
||||
// ?lang= is how the app selects a locale (library/i18n/index.js:83). Appended rather than
|
||||
// replaced so a caller can still pass a leaf URL that already carries query params.
|
||||
const url = lang && lang !== 'en'
|
||||
? LEAF + (LEAF.includes('?') ? '&' : '?') + 'lang=' + encodeURIComponent(lang)
|
||||
: LEAF
|
||||
await page.goto(url, { waitUntil: 'load', timeout: 45000 })
|
||||
await page.waitForTimeout(10000)
|
||||
|
||||
// ★ HOVER IS INVISIBLE TO A STATIC PROBE, which is exactly how the blue outline stayed
|
||||
|
|
@ -164,12 +184,12 @@ async function measure(width) {
|
|||
controls: ctrls.length, tiny: tiny.length }
|
||||
})()`)
|
||||
await page.close()
|
||||
return { width, hover, ...out }
|
||||
return { width, lang, hover, ...out }
|
||||
}
|
||||
|
||||
const results = []
|
||||
try {
|
||||
for (const w of WIDTHS) results.push(await measure(w))
|
||||
for (const lang of LANGS) for (const w of WIDTHS) results.push(await measure(w, lang))
|
||||
} finally {
|
||||
await browser.close()
|
||||
}
|
||||
|
|
@ -177,7 +197,7 @@ try {
|
|||
console.log('POSTER-CARD-FITS')
|
||||
console.log(` leaf : ${LEAF}`)
|
||||
for (const r of results) {
|
||||
console.log(` ${String(r.width).padStart(4)}px cards ${String(r.cards).padStart(2)}`
|
||||
console.log(` ${(r.lang || 'en').padEnd(2)} ${String(r.width).padStart(4)}px cards ${String(r.cards).padStart(2)}`
|
||||
+ ` · overflow ${r.overflowing}${r.worst ? ` (${r.worst}px)` : ''}`
|
||||
+ ` · neighbour ${r.intrusions}`
|
||||
+ ` · over-preview ${r.coveringPreview}${r.worstY ? ` (${r.worstY}px)` : ''}`
|
||||
|
|
@ -193,7 +213,7 @@ for (const r of results) {
|
|||
|
||||
const fails = []
|
||||
for (const r of results) {
|
||||
const at = `${r.width}px`
|
||||
const at = `${r.lang || 'en'} ${r.width}px`
|
||||
// PRECONDITION: no cards means nothing was tested at this width — not a pass.
|
||||
if (!r.cards) { fails.push(`${at}: no poster cards rendered — wrong url, or the wall did not mount`); continue }
|
||||
if (!r.rows) { fails.push(`${at}: ${r.cards} card(s) but none carry a .pfs print-options row`); continue }
|
||||
|
|
@ -274,6 +294,9 @@ if (fails.length) {
|
|||
for (const f of fails) console.error(' - ' + f)
|
||||
process.exit(1)
|
||||
}
|
||||
console.log(`\nPOSTER-CARD-FITS: PASS — at ${results.length} width(s) (${WIDTHS.join(', ')}px) every `
|
||||
// Report widths x LOCALES, not the product. "15 width(s)" misdescribes 5 widths in 3 languages,
|
||||
// and a summary that overstates its own coverage is how a green line stops meaning anything.
|
||||
console.log(`\nPOSTER-CARD-FITS: PASS — ${WIDTHS.length} width(s) (${WIDTHS.join(', ')}px) `
|
||||
+ `x ${LANGS.length} locale(s) (${LANGS.join(', ')}) = ${results.length} combination(s). Every `
|
||||
+ 'print-options row sits inside its own card and below its preview, with every control still '
|
||||
+ 'big enough to press.')
|
||||
+ 'big enough to press and its label fully readable in every locale checked.')
|
||||
|
|
|
|||
578
library/scripts/posters/fixtures/records-edge-21-groups.json
Normal file
578
library/scripts/posters/fixtures/records-edge-21-groups.json
Normal file
|
|
@ -0,0 +1,578 @@
|
|||
[
|
||||
{
|
||||
"slug": "adi",
|
||||
"name": "Adi",
|
||||
"country_code": "CHN",
|
||||
"population": "1400",
|
||||
"religion": "E",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of "
|
||||
},
|
||||
{
|
||||
"link": "https://www.joshuaproject.net",
|
||||
"text": "Joshua Project"
|
||||
},
|
||||
{
|
||||
"link": null,
|
||||
"text": ". By "
|
||||
},
|
||||
{
|
||||
"link": "https://flickr.com/photos/ramesh_lalwani/8169468855/",
|
||||
"text": "Ramesh Lalwani - Flickr"
|
||||
}
|
||||
],
|
||||
"latitude": "29.24961200",
|
||||
"longitude": "95.17182400",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Ethnoreligion"
|
||||
},
|
||||
{
|
||||
"slug": "ainu-china",
|
||||
"name": "Ainu",
|
||||
"country_code": "CHN",
|
||||
"population": "11000",
|
||||
"religion": "MSN",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of "
|
||||
},
|
||||
{
|
||||
"link": "https://www.joshuaproject.net",
|
||||
"text": "Joshua Project"
|
||||
},
|
||||
{
|
||||
"link": null,
|
||||
"text": ". By "
|
||||
},
|
||||
{
|
||||
"link": "https://www.asiaharvest.org",
|
||||
"text": "Operation China, Asia Harvest"
|
||||
}
|
||||
],
|
||||
"latitude": "38.93020500",
|
||||
"longitude": "76.16959600",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Islam - Sunni"
|
||||
},
|
||||
{
|
||||
"slug": "alxa-mongols",
|
||||
"name": "Alxa Mongols",
|
||||
"country_code": "CHN",
|
||||
"population": "35500",
|
||||
"religion": "MSN",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of "
|
||||
},
|
||||
{
|
||||
"link": "https://www.joshuaproject.net",
|
||||
"text": "Joshua Project"
|
||||
},
|
||||
{
|
||||
"link": null,
|
||||
"text": ". By "
|
||||
},
|
||||
{
|
||||
"link": "https://www.asiaharvest.org",
|
||||
"text": "Operation China, Asia Harvest"
|
||||
}
|
||||
],
|
||||
"latitude": "39.20798700",
|
||||
"longitude": "101.67522000",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Islam - Sunni"
|
||||
},
|
||||
{
|
||||
"slug": "bogar-lhoba",
|
||||
"name": "Bogar Lhoba",
|
||||
"country_code": "CHN",
|
||||
"population": "5300",
|
||||
"religion": "ECF",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of "
|
||||
},
|
||||
{
|
||||
"link": "https://www.joshuaproject.net",
|
||||
"text": "Joshua Project"
|
||||
},
|
||||
{
|
||||
"link": null,
|
||||
"text": ". By bojum"
|
||||
}
|
||||
],
|
||||
"latitude": "28.74470000",
|
||||
"longitude": "93.64580000",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Ethnoreligion - Chinese Folk Religion"
|
||||
},
|
||||
{
|
||||
"slug": "bogol",
|
||||
"name": "Bogol",
|
||||
"country_code": "CHN",
|
||||
"population": "1400",
|
||||
"religion": "ECF",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of "
|
||||
},
|
||||
{
|
||||
"link": "https://www.joshuaproject.net",
|
||||
"text": "Joshua Project"
|
||||
},
|
||||
{
|
||||
"link": null,
|
||||
"text": ". By "
|
||||
},
|
||||
{
|
||||
"link": "https://www.asiaharvest.org",
|
||||
"text": "Operation China, Asia Harvest"
|
||||
}
|
||||
],
|
||||
"latitude": "48.46892600",
|
||||
"longitude": "124.48821300",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Ethnoreligion - Chinese Folk Religion"
|
||||
},
|
||||
{
|
||||
"slug": "boyu-tibetans",
|
||||
"name": "Boyu Tibetans",
|
||||
"country_code": "CHN",
|
||||
"population": "5400",
|
||||
"religion": "ECF",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of "
|
||||
},
|
||||
{
|
||||
"link": "https://www.joshuaproject.net",
|
||||
"text": "Joshua Project"
|
||||
},
|
||||
{
|
||||
"link": null,
|
||||
"text": ". By "
|
||||
},
|
||||
{
|
||||
"link": "https://www.asiaharvest.org",
|
||||
"text": "Operation China, Asia Harvest"
|
||||
}
|
||||
],
|
||||
"latitude": "33.36236100",
|
||||
"longitude": "104.58044400",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Ethnoreligion - Chinese Folk Religion"
|
||||
},
|
||||
{
|
||||
"slug": "bunan",
|
||||
"name": "Bunan",
|
||||
"country_code": "CHN",
|
||||
"population": "2500",
|
||||
"religion": "BLA",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of "
|
||||
},
|
||||
{
|
||||
"link": "https://www.joshuaproject.net",
|
||||
"text": "Joshua Project"
|
||||
},
|
||||
{
|
||||
"link": null,
|
||||
"text": ". By "
|
||||
},
|
||||
{
|
||||
"link": "https://www.asiaharvest.org",
|
||||
"text": "Operation China, Asia Harvest"
|
||||
}
|
||||
],
|
||||
"latitude": "31.79607000",
|
||||
"longitude": "78.90344000",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Buddhism - Tibetan"
|
||||
},
|
||||
{
|
||||
"slug": "buryat",
|
||||
"name": "Buryat",
|
||||
"country_code": "CHN",
|
||||
"population": "170000",
|
||||
"religion": "ECF",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of "
|
||||
},
|
||||
{
|
||||
"link": "https://www.joshuaproject.net",
|
||||
"text": "Joshua Project"
|
||||
},
|
||||
{
|
||||
"link": null,
|
||||
"text": ". By "
|
||||
},
|
||||
{
|
||||
"link": "https://commons.wikimedia.org/wiki/File:Me_and_a_Buryat.jpg",
|
||||
"text": "Telaneo - Wikimedia"
|
||||
}
|
||||
],
|
||||
"latitude": "48.75926000",
|
||||
"longitude": "117.78630000",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Ethnoreligion - Chinese Folk Religion"
|
||||
},
|
||||
{
|
||||
"slug": "butuo-nosu",
|
||||
"name": "Butuo Nosu",
|
||||
"country_code": "CHN",
|
||||
"population": "337000",
|
||||
"religion": "ECF",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of "
|
||||
},
|
||||
{
|
||||
"link": "https://www.joshuaproject.net",
|
||||
"text": "Joshua Project"
|
||||
},
|
||||
{
|
||||
"link": null,
|
||||
"text": ". By Anonymous"
|
||||
}
|
||||
],
|
||||
"latitude": "27.60452900",
|
||||
"longitude": "102.87518600",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Ethnoreligion - Chinese Folk Religion"
|
||||
},
|
||||
{
|
||||
"slug": "cona-monba",
|
||||
"name": "Cona Monba",
|
||||
"country_code": "CHN",
|
||||
"population": "58500",
|
||||
"religion": "BLA",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of Joshua Project by Anonymous"
|
||||
}
|
||||
],
|
||||
"latitude": "27.89404900",
|
||||
"longitude": "92.20691400",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Buddhism - Tibetan"
|
||||
},
|
||||
{
|
||||
"slug": "darang-deng",
|
||||
"name": "Darang Deng",
|
||||
"country_code": "CHN",
|
||||
"population": "12500",
|
||||
"religion": "ECF",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of "
|
||||
},
|
||||
{
|
||||
"link": "https://www.joshuaproject.net",
|
||||
"text": "Joshua Project"
|
||||
},
|
||||
{
|
||||
"link": null,
|
||||
"text": ". By "
|
||||
},
|
||||
{
|
||||
"link": "https://www.asiaharvest.org",
|
||||
"text": "Operation China, Asia Harvest"
|
||||
}
|
||||
],
|
||||
"latitude": "28.37980000",
|
||||
"longitude": "97.02930000",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Ethnoreligion - Chinese Folk Religion"
|
||||
},
|
||||
{
|
||||
"slug": "enger-yugur",
|
||||
"name": "Enger Yugur",
|
||||
"country_code": "CHN",
|
||||
"population": "5500",
|
||||
"religion": "BLA",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of "
|
||||
},
|
||||
{
|
||||
"link": "https://www.joshuaproject.net",
|
||||
"text": "Joshua Project"
|
||||
},
|
||||
{
|
||||
"link": null,
|
||||
"text": ". By "
|
||||
},
|
||||
{
|
||||
"link": "https://flickr.com/photos/mke1963/154213183/",
|
||||
"text": "Mark mke1963 - Flickr"
|
||||
}
|
||||
],
|
||||
"latitude": "37.98815000",
|
||||
"longitude": "101.76214000",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Buddhism - Tibetan"
|
||||
},
|
||||
{
|
||||
"slug": "ersu",
|
||||
"name": "Ersu",
|
||||
"country_code": "CHN",
|
||||
"population": "48000",
|
||||
"religion": "BLA",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of "
|
||||
},
|
||||
{
|
||||
"link": "https://www.joshuaproject.net",
|
||||
"text": "Joshua Project"
|
||||
},
|
||||
{
|
||||
"link": null,
|
||||
"text": ". By "
|
||||
},
|
||||
{
|
||||
"link": "https://www.asiaharvest.org",
|
||||
"text": "Operation China, Asia Harvest"
|
||||
}
|
||||
],
|
||||
"latitude": "29.23558500",
|
||||
"longitude": "102.35591600",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Buddhism - Tibetan"
|
||||
},
|
||||
{
|
||||
"slug": "geman-deng",
|
||||
"name": "Geman Deng",
|
||||
"country_code": "CHN",
|
||||
"population": "16500",
|
||||
"religion": "ECF",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of "
|
||||
},
|
||||
{
|
||||
"link": "https://www.joshuaproject.net",
|
||||
"text": "Joshua Project"
|
||||
},
|
||||
{
|
||||
"link": null,
|
||||
"text": ". By "
|
||||
},
|
||||
{
|
||||
"link": "https://www.asiaharvest.org",
|
||||
"text": "Operation China, Asia Harvest"
|
||||
}
|
||||
],
|
||||
"latitude": "28.47324000",
|
||||
"longitude": "97.04437000",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Ethnoreligion - Chinese Folk Religion"
|
||||
},
|
||||
{
|
||||
"slug": "heishui",
|
||||
"name": "Heishui",
|
||||
"country_code": "CHN",
|
||||
"population": "48500",
|
||||
"religion": "BLA",
|
||||
"has_photo": false,
|
||||
"picture_credit": null,
|
||||
"latitude": "32.19164300",
|
||||
"longitude": "103.03860100",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Buddhism - Tibetan"
|
||||
},
|
||||
{
|
||||
"slug": "henan-mongols",
|
||||
"name": "Henan Mongols",
|
||||
"country_code": "CHN",
|
||||
"population": "43000",
|
||||
"religion": "BLA",
|
||||
"has_photo": false,
|
||||
"picture_credit": null,
|
||||
"latitude": "34.73230000",
|
||||
"longitude": "101.60860000",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Buddhism - Tibetan"
|
||||
},
|
||||
{
|
||||
"slug": "keji",
|
||||
"name": "Keji",
|
||||
"country_code": "CHN",
|
||||
"population": "2600",
|
||||
"religion": "MSN",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of "
|
||||
},
|
||||
{
|
||||
"link": "https://www.joshuaproject.net",
|
||||
"text": "Joshua Project"
|
||||
},
|
||||
{
|
||||
"link": null,
|
||||
"text": ". By "
|
||||
},
|
||||
{
|
||||
"link": "https://www.paulnoll.com/China/Minorities/China-Nationalities.html",
|
||||
"text": "Paul Noll"
|
||||
}
|
||||
],
|
||||
"latitude": "29.65355100",
|
||||
"longitude": "91.12095900",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Islam - Sunni"
|
||||
},
|
||||
{
|
||||
"slug": "kyrgyz",
|
||||
"name": "Kyrgyz",
|
||||
"country_code": "CHN",
|
||||
"population": "195000",
|
||||
"religion": "MOF",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of "
|
||||
},
|
||||
{
|
||||
"link": "https://www.joshuaproject.net",
|
||||
"text": "Joshua Project"
|
||||
},
|
||||
{
|
||||
"link": null,
|
||||
"text": ". By "
|
||||
},
|
||||
{
|
||||
"link": "https://commons.wikimedia.org/wiki/File:Kyrgyz_women_offering_butter_and_salt.jpg",
|
||||
"text": "Theklan - Wikimedia"
|
||||
}
|
||||
],
|
||||
"latitude": "38.01774000",
|
||||
"longitude": "76.09630000",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Islam - Folk"
|
||||
},
|
||||
{
|
||||
"slug": "luzu",
|
||||
"name": "Luzu",
|
||||
"country_code": "CHN",
|
||||
"population": "1600",
|
||||
"religion": "BLA",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of "
|
||||
},
|
||||
{
|
||||
"link": "https://www.joshuaproject.net",
|
||||
"text": "Joshua Project"
|
||||
},
|
||||
{
|
||||
"link": null,
|
||||
"text": ". By "
|
||||
},
|
||||
{
|
||||
"link": "https://www.asiaharvest.org",
|
||||
"text": "Operation China, Asia Harvest"
|
||||
}
|
||||
],
|
||||
"latitude": "28.33754000",
|
||||
"longitude": "101.35823900",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Buddhism - Tibetan"
|
||||
},
|
||||
{
|
||||
"slug": "manyak",
|
||||
"name": "Manyak",
|
||||
"country_code": "CHN",
|
||||
"population": "3000",
|
||||
"religion": "BLA",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of "
|
||||
},
|
||||
{
|
||||
"link": "https://www.joshuaproject.net",
|
||||
"text": "Joshua Project"
|
||||
},
|
||||
{
|
||||
"link": null,
|
||||
"text": ". By "
|
||||
},
|
||||
{
|
||||
"link": "https://www.asiaharvest.org",
|
||||
"text": "Operation China, Asia Harvest"
|
||||
}
|
||||
],
|
||||
"latitude": "29.67090000",
|
||||
"longitude": "101.59510000",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Buddhism - Tibetan"
|
||||
},
|
||||
{
|
||||
"slug": "medog-monba",
|
||||
"name": "Medog Monba",
|
||||
"country_code": "CHN",
|
||||
"population": "11000",
|
||||
"religion": "BLA",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of "
|
||||
},
|
||||
{
|
||||
"link": "https://www.joshuaproject.net",
|
||||
"text": "Joshua Project"
|
||||
},
|
||||
{
|
||||
"link": null,
|
||||
"text": ". By "
|
||||
},
|
||||
{
|
||||
"link": "https://www.asiaharvest.org",
|
||||
"text": "Operation China, Asia Harvest"
|
||||
}
|
||||
],
|
||||
"latitude": "29.46300000",
|
||||
"longitude": "95.74060000",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Buddhism - Tibetan"
|
||||
}
|
||||
]
|
||||
548
library/scripts/posters/fixtures/records-edge-exactly-20.json
Normal file
548
library/scripts/posters/fixtures/records-edge-exactly-20.json
Normal file
|
|
@ -0,0 +1,548 @@
|
|||
[
|
||||
{
|
||||
"slug": "adi",
|
||||
"name": "Adi",
|
||||
"country_code": "CHN",
|
||||
"population": "1400",
|
||||
"religion": "E",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of "
|
||||
},
|
||||
{
|
||||
"link": "https://www.joshuaproject.net",
|
||||
"text": "Joshua Project"
|
||||
},
|
||||
{
|
||||
"link": null,
|
||||
"text": ". By "
|
||||
},
|
||||
{
|
||||
"link": "https://flickr.com/photos/ramesh_lalwani/8169468855/",
|
||||
"text": "Ramesh Lalwani - Flickr"
|
||||
}
|
||||
],
|
||||
"latitude": "29.24961200",
|
||||
"longitude": "95.17182400",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Ethnoreligion"
|
||||
},
|
||||
{
|
||||
"slug": "ainu-china",
|
||||
"name": "Ainu",
|
||||
"country_code": "CHN",
|
||||
"population": "11000",
|
||||
"religion": "MSN",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of "
|
||||
},
|
||||
{
|
||||
"link": "https://www.joshuaproject.net",
|
||||
"text": "Joshua Project"
|
||||
},
|
||||
{
|
||||
"link": null,
|
||||
"text": ". By "
|
||||
},
|
||||
{
|
||||
"link": "https://www.asiaharvest.org",
|
||||
"text": "Operation China, Asia Harvest"
|
||||
}
|
||||
],
|
||||
"latitude": "38.93020500",
|
||||
"longitude": "76.16959600",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Islam - Sunni"
|
||||
},
|
||||
{
|
||||
"slug": "alxa-mongols",
|
||||
"name": "Alxa Mongols",
|
||||
"country_code": "CHN",
|
||||
"population": "35500",
|
||||
"religion": "MSN",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of "
|
||||
},
|
||||
{
|
||||
"link": "https://www.joshuaproject.net",
|
||||
"text": "Joshua Project"
|
||||
},
|
||||
{
|
||||
"link": null,
|
||||
"text": ". By "
|
||||
},
|
||||
{
|
||||
"link": "https://www.asiaharvest.org",
|
||||
"text": "Operation China, Asia Harvest"
|
||||
}
|
||||
],
|
||||
"latitude": "39.20798700",
|
||||
"longitude": "101.67522000",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Islam - Sunni"
|
||||
},
|
||||
{
|
||||
"slug": "bogar-lhoba",
|
||||
"name": "Bogar Lhoba",
|
||||
"country_code": "CHN",
|
||||
"population": "5300",
|
||||
"religion": "ECF",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of "
|
||||
},
|
||||
{
|
||||
"link": "https://www.joshuaproject.net",
|
||||
"text": "Joshua Project"
|
||||
},
|
||||
{
|
||||
"link": null,
|
||||
"text": ". By bojum"
|
||||
}
|
||||
],
|
||||
"latitude": "28.74470000",
|
||||
"longitude": "93.64580000",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Ethnoreligion - Chinese Folk Religion"
|
||||
},
|
||||
{
|
||||
"slug": "bogol",
|
||||
"name": "Bogol",
|
||||
"country_code": "CHN",
|
||||
"population": "1400",
|
||||
"religion": "ECF",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of "
|
||||
},
|
||||
{
|
||||
"link": "https://www.joshuaproject.net",
|
||||
"text": "Joshua Project"
|
||||
},
|
||||
{
|
||||
"link": null,
|
||||
"text": ". By "
|
||||
},
|
||||
{
|
||||
"link": "https://www.asiaharvest.org",
|
||||
"text": "Operation China, Asia Harvest"
|
||||
}
|
||||
],
|
||||
"latitude": "48.46892600",
|
||||
"longitude": "124.48821300",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Ethnoreligion - Chinese Folk Religion"
|
||||
},
|
||||
{
|
||||
"slug": "boyu-tibetans",
|
||||
"name": "Boyu Tibetans",
|
||||
"country_code": "CHN",
|
||||
"population": "5400",
|
||||
"religion": "ECF",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of "
|
||||
},
|
||||
{
|
||||
"link": "https://www.joshuaproject.net",
|
||||
"text": "Joshua Project"
|
||||
},
|
||||
{
|
||||
"link": null,
|
||||
"text": ". By "
|
||||
},
|
||||
{
|
||||
"link": "https://www.asiaharvest.org",
|
||||
"text": "Operation China, Asia Harvest"
|
||||
}
|
||||
],
|
||||
"latitude": "33.36236100",
|
||||
"longitude": "104.58044400",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Ethnoreligion - Chinese Folk Religion"
|
||||
},
|
||||
{
|
||||
"slug": "bunan",
|
||||
"name": "Bunan",
|
||||
"country_code": "CHN",
|
||||
"population": "2500",
|
||||
"religion": "BLA",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of "
|
||||
},
|
||||
{
|
||||
"link": "https://www.joshuaproject.net",
|
||||
"text": "Joshua Project"
|
||||
},
|
||||
{
|
||||
"link": null,
|
||||
"text": ". By "
|
||||
},
|
||||
{
|
||||
"link": "https://www.asiaharvest.org",
|
||||
"text": "Operation China, Asia Harvest"
|
||||
}
|
||||
],
|
||||
"latitude": "31.79607000",
|
||||
"longitude": "78.90344000",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Buddhism - Tibetan"
|
||||
},
|
||||
{
|
||||
"slug": "buryat",
|
||||
"name": "Buryat",
|
||||
"country_code": "CHN",
|
||||
"population": "170000",
|
||||
"religion": "ECF",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of "
|
||||
},
|
||||
{
|
||||
"link": "https://www.joshuaproject.net",
|
||||
"text": "Joshua Project"
|
||||
},
|
||||
{
|
||||
"link": null,
|
||||
"text": ". By "
|
||||
},
|
||||
{
|
||||
"link": "https://commons.wikimedia.org/wiki/File:Me_and_a_Buryat.jpg",
|
||||
"text": "Telaneo - Wikimedia"
|
||||
}
|
||||
],
|
||||
"latitude": "48.75926000",
|
||||
"longitude": "117.78630000",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Ethnoreligion - Chinese Folk Religion"
|
||||
},
|
||||
{
|
||||
"slug": "butuo-nosu",
|
||||
"name": "Butuo Nosu",
|
||||
"country_code": "CHN",
|
||||
"population": "337000",
|
||||
"religion": "ECF",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of "
|
||||
},
|
||||
{
|
||||
"link": "https://www.joshuaproject.net",
|
||||
"text": "Joshua Project"
|
||||
},
|
||||
{
|
||||
"link": null,
|
||||
"text": ". By Anonymous"
|
||||
}
|
||||
],
|
||||
"latitude": "27.60452900",
|
||||
"longitude": "102.87518600",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Ethnoreligion - Chinese Folk Religion"
|
||||
},
|
||||
{
|
||||
"slug": "cona-monba",
|
||||
"name": "Cona Monba",
|
||||
"country_code": "CHN",
|
||||
"population": "58500",
|
||||
"religion": "BLA",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of Joshua Project by Anonymous"
|
||||
}
|
||||
],
|
||||
"latitude": "27.89404900",
|
||||
"longitude": "92.20691400",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Buddhism - Tibetan"
|
||||
},
|
||||
{
|
||||
"slug": "darang-deng",
|
||||
"name": "Darang Deng",
|
||||
"country_code": "CHN",
|
||||
"population": "12500",
|
||||
"religion": "ECF",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of "
|
||||
},
|
||||
{
|
||||
"link": "https://www.joshuaproject.net",
|
||||
"text": "Joshua Project"
|
||||
},
|
||||
{
|
||||
"link": null,
|
||||
"text": ". By "
|
||||
},
|
||||
{
|
||||
"link": "https://www.asiaharvest.org",
|
||||
"text": "Operation China, Asia Harvest"
|
||||
}
|
||||
],
|
||||
"latitude": "28.37980000",
|
||||
"longitude": "97.02930000",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Ethnoreligion - Chinese Folk Religion"
|
||||
},
|
||||
{
|
||||
"slug": "enger-yugur",
|
||||
"name": "Enger Yugur",
|
||||
"country_code": "CHN",
|
||||
"population": "5500",
|
||||
"religion": "BLA",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of "
|
||||
},
|
||||
{
|
||||
"link": "https://www.joshuaproject.net",
|
||||
"text": "Joshua Project"
|
||||
},
|
||||
{
|
||||
"link": null,
|
||||
"text": ". By "
|
||||
},
|
||||
{
|
||||
"link": "https://flickr.com/photos/mke1963/154213183/",
|
||||
"text": "Mark mke1963 - Flickr"
|
||||
}
|
||||
],
|
||||
"latitude": "37.98815000",
|
||||
"longitude": "101.76214000",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Buddhism - Tibetan"
|
||||
},
|
||||
{
|
||||
"slug": "ersu",
|
||||
"name": "Ersu",
|
||||
"country_code": "CHN",
|
||||
"population": "48000",
|
||||
"religion": "BLA",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of "
|
||||
},
|
||||
{
|
||||
"link": "https://www.joshuaproject.net",
|
||||
"text": "Joshua Project"
|
||||
},
|
||||
{
|
||||
"link": null,
|
||||
"text": ". By "
|
||||
},
|
||||
{
|
||||
"link": "https://www.asiaharvest.org",
|
||||
"text": "Operation China, Asia Harvest"
|
||||
}
|
||||
],
|
||||
"latitude": "29.23558500",
|
||||
"longitude": "102.35591600",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Buddhism - Tibetan"
|
||||
},
|
||||
{
|
||||
"slug": "geman-deng",
|
||||
"name": "Geman Deng",
|
||||
"country_code": "CHN",
|
||||
"population": "16500",
|
||||
"religion": "ECF",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of "
|
||||
},
|
||||
{
|
||||
"link": "https://www.joshuaproject.net",
|
||||
"text": "Joshua Project"
|
||||
},
|
||||
{
|
||||
"link": null,
|
||||
"text": ". By "
|
||||
},
|
||||
{
|
||||
"link": "https://www.asiaharvest.org",
|
||||
"text": "Operation China, Asia Harvest"
|
||||
}
|
||||
],
|
||||
"latitude": "28.47324000",
|
||||
"longitude": "97.04437000",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Ethnoreligion - Chinese Folk Religion"
|
||||
},
|
||||
{
|
||||
"slug": "heishui",
|
||||
"name": "Heishui",
|
||||
"country_code": "CHN",
|
||||
"population": "48500",
|
||||
"religion": "BLA",
|
||||
"has_photo": false,
|
||||
"picture_credit": null,
|
||||
"latitude": "32.19164300",
|
||||
"longitude": "103.03860100",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Buddhism - Tibetan"
|
||||
},
|
||||
{
|
||||
"slug": "henan-mongols",
|
||||
"name": "Henan Mongols",
|
||||
"country_code": "CHN",
|
||||
"population": "43000",
|
||||
"religion": "BLA",
|
||||
"has_photo": false,
|
||||
"picture_credit": null,
|
||||
"latitude": "34.73230000",
|
||||
"longitude": "101.60860000",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Buddhism - Tibetan"
|
||||
},
|
||||
{
|
||||
"slug": "keji",
|
||||
"name": "Keji",
|
||||
"country_code": "CHN",
|
||||
"population": "2600",
|
||||
"religion": "MSN",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of "
|
||||
},
|
||||
{
|
||||
"link": "https://www.joshuaproject.net",
|
||||
"text": "Joshua Project"
|
||||
},
|
||||
{
|
||||
"link": null,
|
||||
"text": ". By "
|
||||
},
|
||||
{
|
||||
"link": "https://www.paulnoll.com/China/Minorities/China-Nationalities.html",
|
||||
"text": "Paul Noll"
|
||||
}
|
||||
],
|
||||
"latitude": "29.65355100",
|
||||
"longitude": "91.12095900",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Islam - Sunni"
|
||||
},
|
||||
{
|
||||
"slug": "kyrgyz",
|
||||
"name": "Kyrgyz",
|
||||
"country_code": "CHN",
|
||||
"population": "195000",
|
||||
"religion": "MOF",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of "
|
||||
},
|
||||
{
|
||||
"link": "https://www.joshuaproject.net",
|
||||
"text": "Joshua Project"
|
||||
},
|
||||
{
|
||||
"link": null,
|
||||
"text": ". By "
|
||||
},
|
||||
{
|
||||
"link": "https://commons.wikimedia.org/wiki/File:Kyrgyz_women_offering_butter_and_salt.jpg",
|
||||
"text": "Theklan - Wikimedia"
|
||||
}
|
||||
],
|
||||
"latitude": "38.01774000",
|
||||
"longitude": "76.09630000",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Islam - Folk"
|
||||
},
|
||||
{
|
||||
"slug": "luzu",
|
||||
"name": "Luzu",
|
||||
"country_code": "CHN",
|
||||
"population": "1600",
|
||||
"religion": "BLA",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of "
|
||||
},
|
||||
{
|
||||
"link": "https://www.joshuaproject.net",
|
||||
"text": "Joshua Project"
|
||||
},
|
||||
{
|
||||
"link": null,
|
||||
"text": ". By "
|
||||
},
|
||||
{
|
||||
"link": "https://www.asiaharvest.org",
|
||||
"text": "Operation China, Asia Harvest"
|
||||
}
|
||||
],
|
||||
"latitude": "28.33754000",
|
||||
"longitude": "101.35823900",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Buddhism - Tibetan"
|
||||
},
|
||||
{
|
||||
"slug": "manyak",
|
||||
"name": "Manyak",
|
||||
"country_code": "CHN",
|
||||
"population": "3000",
|
||||
"religion": "BLA",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of "
|
||||
},
|
||||
{
|
||||
"link": "https://www.joshuaproject.net",
|
||||
"text": "Joshua Project"
|
||||
},
|
||||
{
|
||||
"link": null,
|
||||
"text": ". By "
|
||||
},
|
||||
{
|
||||
"link": "https://www.asiaharvest.org",
|
||||
"text": "Operation China, Asia Harvest"
|
||||
}
|
||||
],
|
||||
"latitude": "29.67090000",
|
||||
"longitude": "101.59510000",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Buddhism - Tibetan"
|
||||
}
|
||||
]
|
||||
32
library/scripts/posters/fixtures/records-edge-one-group.json
Normal file
32
library/scripts/posters/fixtures/records-edge-one-group.json
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
[
|
||||
{
|
||||
"slug": "adi",
|
||||
"name": "Adi",
|
||||
"country_code": "CHN",
|
||||
"population": "1400",
|
||||
"religion": "E",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of "
|
||||
},
|
||||
{
|
||||
"link": "https://www.joshuaproject.net",
|
||||
"text": "Joshua Project"
|
||||
},
|
||||
{
|
||||
"link": null,
|
||||
"text": ". By "
|
||||
},
|
||||
{
|
||||
"link": "https://flickr.com/photos/ramesh_lalwani/8169468855/",
|
||||
"text": "Ramesh Lalwani - Flickr"
|
||||
}
|
||||
],
|
||||
"latitude": "29.24961200",
|
||||
"longitude": "95.17182400",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Ethnoreligion"
|
||||
}
|
||||
]
|
||||
|
|
@ -37,7 +37,7 @@
|
|||
"packets": "cd library/scripts/posters && VITE_API_BASE_URL=https://pray.doxa.life node packet.mjs # the prayer packets. READS out/posters/<zone>.html for page 1's map, which `bun run posters` writes — without it the packet still builds and page 1 is simply BLANK, so the script now warns per-zone AND in its summary. PACKET_LANG=<loc> for one language, ONLY=<zoneKey> for one zone, NOPHOTOS=1 to skip the photo fetch.",
|
||||
"packet-fixture": "node internal/generate-packet-fixture.mjs # regenerate the committed records subset (smallest zone, image_url stripped) that lets CI build a packet at all — out/ is gitignored, so a clean checkout has neither the records cache nor any packet.",
|
||||
"check:packet-fixture": "node internal/generate-packet-fixture.mjs --check # the committed fixture must still match clusters.json and must never carry image_url (CI would fetch 43 photos from someone else's CDN).",
|
||||
"packet:ci": "sh -c 'F=\"$PWD/library/scripts/posters/fixtures/records-tibet.json\"; PACKET_RECORDS=\"$F\" ONLY=asia-china-tibet-autonomous-region node library/scripts/posters/packet.mjs' # build ONE packet from the committed fixture, no network. This is what makes check:packets-all evaluate something in CI instead of SKIPping, as it had on every build.",
|
||||
"packet:ci": "node internal/build-packet-fixtures.mjs # build EVERY committed fixture, no network, each renamed to its own output so they coexist. Was one fixture (tibet); packet.mjs names its output for the ZONE not the fixture, so sequential builds overwrote each other and check:packets-all saw a single SHAPE while reporting success. The fixtures are chosen at the PER_PAGE=20 page boundary — exactly 20, 21, and 1 group — because laos (95) and tibet (43) are both mid-range remainder cases and the boundary itself had never rendered.",
|
||||
"token": "node internal/write-token.mjs",
|
||||
"smoke": "node internal/smoke.mjs",
|
||||
"smoke:embeds": "node internal/embed-smoke.mjs",
|
||||
|
|
|
|||
|
|
@ -373,21 +373,97 @@ function popupHtml(p) {
|
|||
// Re-frame and re-source on a new selection instead of tearing the map down: a rebuilt map
|
||||
// re-downloads tiles and flashes, and the subject changes on every tab-1 click.
|
||||
/**
|
||||
* The chooser's zoom has to follow the CONTAINER WIDTH, not be a constant.
|
||||
* The chooser's zoom has to follow the CONTAINER, and it has to be asked of the GLOBE.
|
||||
*
|
||||
* ★ THIS USED TO BE `log2(width / 512)` — mercator's world is 512*2^z wide, so that is the zoom
|
||||
* which fits one mercator world. But the chooser renders under the GLOBE projection, and the same
|
||||
* mistake that made the region pages frame too wide (a mercator answer applied to a sphere) made
|
||||
* this frame too SMALL. Found by LOOKING at _shot-chooser-map-desktop.png — a sphere adrift in
|
||||
* white space — not by any assertion, and then measured by
|
||||
* _qa-cycle/02-builder-cycle/_probe-chooser-globe-fill.mjs at 1200x780:
|
||||
*
|
||||
* zoom 1.229 (what the mercator formula returned) -> sphere diameter 390.61px = 50.1% of the
|
||||
* frame's short side. HALF THE FRAME WAS DEAD SPACE.
|
||||
*
|
||||
* Worse, the number was inert. That probe measured zoom 0.5, 1.0 and 1.229 all rendering an
|
||||
* IDENTICAL 390.61px sphere, because Mapbox clamps the globe's apparent size at low zoom: the
|
||||
* formula's output sat inside the clamp, so it could have returned 0.5 and changed nothing.
|
||||
*
|
||||
* There is no closed form to replace it with. The same probe measured the diameter against a clean
|
||||
* doubling and found 3.6-10.5% error above the clamp, because the globe-to-mercator transition is
|
||||
* nonlinear there — so `log2` of anything is the wrong shape. What the measurement DID establish
|
||||
* is that the diameter never decreases as zoom rises, and monotonicity is the only property a
|
||||
* solver needs. So SOLVE it against the engine instead of modelling it:
|
||||
* bisect the zoom whose pole-to-pole projection fills FILL of the frame's short side.
|
||||
*
|
||||
* project() is pure transform math — no tiles, no paint, no network — and every setZoom here
|
||||
* lands in ONE synchronous block before any frame renders, so the bisection is invisible; the
|
||||
* original zoom is restored in a `finally` regardless. If any of it throws, the old mercator
|
||||
* formula is the fallback, because a slightly small globe beats a broken chooser.
|
||||
*
|
||||
* MEASURED: a fixed zoom of 1.25 fills a 1200px desktop frame and shows barely a third of the
|
||||
* world at 390px — Asia fell off the right edge, on the one screen whose job is "pick a region".
|
||||
* Mercator's world is 512*2^z wide, so the zoom that fits it is log2(width/512): ~1.23 at 1200px,
|
||||
* ~-0.39 at 390px. Mapbox will not go below 0, so a phone still crops, but ~24% instead of ~67%,
|
||||
* and the map pans. Clamped to [0, 2] so a very wide embed does not zoom past the useful range.
|
||||
* Only the chooser uses this; a selected page is framed by their own bounds/centre/zoom.
|
||||
*/
|
||||
const CHOOSER_FILL = 0.92 // leave a margin so the limb is never clipped by the frame
|
||||
function chooserZoom(m) {
|
||||
if (props.colorMode !== 'region') return props.zoom
|
||||
let w = 0
|
||||
try { w = m.getContainer()?.clientWidth || 0 } catch (_) { w = 0 }
|
||||
if (!w) return props.zoom
|
||||
return Math.max(0, Math.min(2, Math.log2(w / 512)))
|
||||
let W = 0, H = 0
|
||||
try { const el = m.getContainer(); W = el?.clientWidth || 0; H = el?.clientHeight || 0 } catch (_) { W = 0 }
|
||||
if (!W) return props.zoom
|
||||
const mercatorFallback = Math.max(0, Math.min(2, Math.log2(W / 512)))
|
||||
if (!H) return mercatorFallback
|
||||
|
||||
const z0 = m.getZoom()
|
||||
try {
|
||||
const c = m.getCenter()
|
||||
// ★ THE LIMB, NOT THE POLES. The first version of this measured pole-to-pole and called it the
|
||||
// diameter, which is only true when the centre sits on the equator. The chooser centres on the
|
||||
// mean of every people group -- latitude 28 -- so pole-to-pole is a CHORD: measured 717.6px
|
||||
// where the sphere was really 792-835px across, understating it by 1.104x. The solver therefore
|
||||
// over-zoomed and the globe was clipped top and bottom, which the screenshot showed plainly
|
||||
// while every number still looked right.
|
||||
// Under the globe the silhouette is centred on the map centre, so any point at 90 deg ANGULAR
|
||||
// distance lies on the limb. Sample several bearings and take the MAX, because Mapbox's globe
|
||||
// is a perspective camera rather than a true orthographic one, so the silhouette is not a
|
||||
// perfect screen-space circle -- measured radius 396px along the meridian against 417.3px east
|
||||
// and west at the same zoom. Taking the max is what keeps the widest axis inside the frame.
|
||||
const RAD = Math.PI / 180, DEG = 180 / Math.PI
|
||||
const phi0 = c.lat * RAD
|
||||
// Great-circle destination at angular distance 90 deg on bearing t, which reduces to this
|
||||
// because cos(90 deg) is 0 and sin(90 deg) is 1.
|
||||
const limbPoints = []
|
||||
for (let i = 0; i < 12; i++) {
|
||||
const t = (i / 12) * 2 * Math.PI
|
||||
const lat = Math.asin(Math.cos(phi0) * Math.cos(t))
|
||||
const lng = c.lng + Math.atan2(Math.sin(t) * Math.cos(phi0), -Math.sin(phi0) * Math.sin(lat)) * DEG
|
||||
limbPoints.push([lng, lat * DEG])
|
||||
}
|
||||
const diameter = (z) => {
|
||||
m.setZoom(z)
|
||||
const ctr = m.project([c.lng, c.lat])
|
||||
let max = 0
|
||||
for (const pt of limbPoints) {
|
||||
const q = m.project(pt)
|
||||
const d = Math.hypot(q.x - ctr.x, q.y - ctr.y)
|
||||
if (Number.isFinite(d) && d > max) max = d
|
||||
}
|
||||
return max * 2
|
||||
}
|
||||
const want = Math.min(W, H) * CHOOSER_FILL
|
||||
let lo = 0, hi = 5
|
||||
if (diameter(hi) < want) return hi // frame bigger than the globe can fill
|
||||
for (let i = 0; i < 24; i++) { // 24 halvings of [0,5] resolves to ~3e-7 zoom
|
||||
const mid = (lo + hi) / 2
|
||||
if (diameter(mid) < want) lo = mid; else hi = mid
|
||||
}
|
||||
const solved = (lo + hi) / 2
|
||||
return Number.isFinite(solved) ? solved : mercatorFallback
|
||||
} catch (e) {
|
||||
console.warn('[RegionCountryMap] globe fill solve failed, using the mercator fit:', e && e.message)
|
||||
return mercatorFallback
|
||||
} finally {
|
||||
// Never leave the camera parked on a probe value.
|
||||
try { m.setZoom(z0) } catch (_) {}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <country-posters-map> custom element. -->
|
||||
<script src="../country-posters.js" integrity="sha384-+miFg4jJ9ffz3j/bWOVAozmvoj7APOdJxIl0WmOWrSMDbutivwv8gRBy43qL6Q5b" crossorigin="anonymous"></script>
|
||||
<script src="../country-posters.js" integrity="sha384-Z875R7k5jbxkAhY0RmB9TIcg3kpW00VoFj+G5hMKNVN+OK+gdTYHXjnjjhVb1jDV" 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 <country-posters-map> custom element. -->
|
||||
<script src="../country-posters.js" integrity="sha384-+miFg4jJ9ffz3j/bWOVAozmvoj7APOdJxIl0WmOWrSMDbutivwv8gRBy43qL6Q5b" crossorigin="anonymous"></script>
|
||||
<script src="../country-posters.js" integrity="sha384-Z875R7k5jbxkAhY0RmB9TIcg3kpW00VoFj+G5hMKNVN+OK+gdTYHXjnjjhVb1jDV" 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 <country-posters-map> custom element. -->
|
||||
<script src="../country-posters.js" integrity="sha384-+miFg4jJ9ffz3j/bWOVAozmvoj7APOdJxIl0WmOWrSMDbutivwv8gRBy43qL6Q5b" crossorigin="anonymous"></script>
|
||||
<script src="../country-posters.js" integrity="sha384-Z875R7k5jbxkAhY0RmB9TIcg3kpW00VoFj+G5hMKNVN+OK+gdTYHXjnjjhVb1jDV" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
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
16
public/doxa-maps/manifest.json
generated
16
public/doxa-maps/manifest.json
generated
|
|
@ -158,7 +158,7 @@
|
|||
"bundle": "country-posters",
|
||||
"scriptUrl": "./country-posters/country-posters.js",
|
||||
"output": "doxa-maps/country-posters/country-posters.js",
|
||||
"integrity": "sha384-+miFg4jJ9ffz3j/bWOVAozmvoj7APOdJxIl0WmOWrSMDbutivwv8gRBy43qL6Q5b",
|
||||
"integrity": "sha384-Z875R7k5jbxkAhY0RmB9TIcg3kpW00VoFj+G5hMKNVN+OK+gdTYHXjnjjhVb1jDV",
|
||||
"elements": [
|
||||
"country-posters-map"
|
||||
],
|
||||
|
|
@ -178,7 +178,7 @@
|
|||
"scriptUrl": "./country-posters/country-posters.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./country-posters/countries-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=\"./country-posters/country-posters.js\" integrity=\"sha384-+miFg4jJ9ffz3j/bWOVAozmvoj7APOdJxIl0WmOWrSMDbutivwv8gRBy43qL6Q5b\" crossorigin=\"anonymous\"></script>\n<country-posters-map profile-config='{\"profile\":\"countries-map\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></country-posters-map>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./country-posters/country-posters.js\" integrity=\"sha384-Z875R7k5jbxkAhY0RmB9TIcg3kpW00VoFj+G5hMKNVN+OK+gdTYHXjnjjhVb1jDV\" crossorigin=\"anonymous\"></script>\n<country-posters-map profile-config='{\"profile\":\"countries-map\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></country-posters-map>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -192,7 +192,7 @@
|
|||
"scriptUrl": "./country-posters/country-posters.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./country-posters/country-poster-wall/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=\"./country-posters/country-posters.js\" integrity=\"sha384-+miFg4jJ9ffz3j/bWOVAozmvoj7APOdJxIl0WmOWrSMDbutivwv8gRBy43qL6Q5b\" crossorigin=\"anonymous\"></script>\n<country-posters-map profile-config='{\"profile\":\"country-poster-wall\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></country-posters-map>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./country-posters/country-posters.js\" integrity=\"sha384-Z875R7k5jbxkAhY0RmB9TIcg3kpW00VoFj+G5hMKNVN+OK+gdTYHXjnjjhVb1jDV\" crossorigin=\"anonymous\"></script>\n<country-posters-map profile-config='{\"profile\":\"country-poster-wall\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></country-posters-map>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -206,7 +206,7 @@
|
|||
"scriptUrl": "./country-posters/country-posters.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./country-posters/country-posters-mfe/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=\"./country-posters/country-posters.js\" integrity=\"sha384-+miFg4jJ9ffz3j/bWOVAozmvoj7APOdJxIl0WmOWrSMDbutivwv8gRBy43qL6Q5b\" crossorigin=\"anonymous\"></script>\n<country-posters-map profile-config='{\"profile\":\"country-posters-mfe\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></country-posters-map>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./country-posters/country-posters.js\" integrity=\"sha384-Z875R7k5jbxkAhY0RmB9TIcg3kpW00VoFj+G5hMKNVN+OK+gdTYHXjnjjhVb1jDV\" crossorigin=\"anonymous\"></script>\n<country-posters-map profile-config='{\"profile\":\"country-posters-mfe\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></country-posters-map>"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
@ -879,7 +879,7 @@
|
|||
"bundle": "regions-dashboard",
|
||||
"scriptUrl": "./regions-dashboard/regions-dashboard.js",
|
||||
"output": "doxa-maps/regions-dashboard/regions-dashboard.js",
|
||||
"integrity": "sha384-yxWIwZyBb6+xve6pVbhxlLEJn4diVUhzV0fZReHWRYgdIb8U0OZUrAi7SEu9DnpI",
|
||||
"integrity": "sha384-7ouNc0JA9dufo2S3LgvdwQ/znMBgiow5pEeOs2xWejN7xOuqGRm9wPepdm3uS40z",
|
||||
"elements": [
|
||||
"regions-dashboard"
|
||||
],
|
||||
|
|
@ -899,7 +899,7 @@
|
|||
"scriptUrl": "./regions-dashboard/regions-dashboard.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./regions-dashboard/region-dashboards/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=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-yxWIwZyBb6+xve6pVbhxlLEJn4diVUhzV0fZReHWRYgdIb8U0OZUrAi7SEu9DnpI\" crossorigin=\"anonymous\"></script>\n<regions-dashboard profile-config='{\"profile\":\"region-dashboards\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-7ouNc0JA9dufo2S3LgvdwQ/znMBgiow5pEeOs2xWejN7xOuqGRm9wPepdm3uS40z\" crossorigin=\"anonymous\"></script>\n<regions-dashboard profile-config='{\"profile\":\"region-dashboards\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -913,7 +913,7 @@
|
|||
"scriptUrl": "./regions-dashboard/regions-dashboard.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./regions-dashboard/regions-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=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-yxWIwZyBb6+xve6pVbhxlLEJn4diVUhzV0fZReHWRYgdIb8U0OZUrAi7SEu9DnpI\" crossorigin=\"anonymous\"></script>\n<regions-dashboard profile-config='{\"profile\":\"regions-list\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-7ouNc0JA9dufo2S3LgvdwQ/znMBgiow5pEeOs2xWejN7xOuqGRm9wPepdm3uS40z\" crossorigin=\"anonymous\"></script>\n<regions-dashboard profile-config='{\"profile\":\"regions-list\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -927,7 +927,7 @@
|
|||
"scriptUrl": "./regions-dashboard/regions-dashboard.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./regions-dashboard/regions-mfe/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=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-yxWIwZyBb6+xve6pVbhxlLEJn4diVUhzV0fZReHWRYgdIb8U0OZUrAi7SEu9DnpI\" crossorigin=\"anonymous\"></script>\n<regions-dashboard profile-config='{\"profile\":\"regions-mfe\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-7ouNc0JA9dufo2S3LgvdwQ/znMBgiow5pEeOs2xWejN7xOuqGRm9wPepdm3uS40z\" crossorigin=\"anonymous\"></script>\n<regions-dashboard profile-config='{\"profile\":\"regions-mfe\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <regions-dashboard> custom element. -->
|
||||
<script src="../regions-dashboard.js" integrity="sha384-yxWIwZyBb6+xve6pVbhxlLEJn4diVUhzV0fZReHWRYgdIb8U0OZUrAi7SEu9DnpI" crossorigin="anonymous"></script>
|
||||
<script src="../regions-dashboard.js" integrity="sha384-7ouNc0JA9dufo2S3LgvdwQ/znMBgiow5pEeOs2xWejN7xOuqGRm9wPepdm3uS40z" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
130
public/doxa-maps/regions-dashboard/regions-dashboard.js
generated
130
public/doxa-maps/regions-dashboard/regions-dashboard.js
generated
File diff suppressed because one or more lines are too long
|
|
@ -29,7 +29,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <regions-dashboard> custom element. -->
|
||||
<script src="../regions-dashboard.js" integrity="sha384-yxWIwZyBb6+xve6pVbhxlLEJn4diVUhzV0fZReHWRYgdIb8U0OZUrAi7SEu9DnpI" crossorigin="anonymous"></script>
|
||||
<script src="../regions-dashboard.js" integrity="sha384-7ouNc0JA9dufo2S3LgvdwQ/znMBgiow5pEeOs2xWejN7xOuqGRm9wPepdm3uS40z" 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 <regions-dashboard> custom element. -->
|
||||
<script src="../regions-dashboard.js" integrity="sha384-yxWIwZyBb6+xve6pVbhxlLEJn4diVUhzV0fZReHWRYgdIb8U0OZUrAi7SEu9DnpI" crossorigin="anonymous"></script>
|
||||
<script src="../regions-dashboard.js" integrity="sha384-7ouNc0JA9dufo2S3LgvdwQ/znMBgiow5pEeOs2xWejN7xOuqGRm9wPepdm3uS40z" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
Loading…
Reference in a new issue