# Conflicts: # public/doxa-maps/index.html # public/doxa-maps/manifest.json # public/doxa-maps/regions-dashboard/region-dashboards/index.html # public/doxa-maps/regions-dashboard/regions-dashboard.js # public/doxa-maps/regions-dashboard/regions-list/index.html # public/doxa-maps/regions-dashboard/regions-mfe/index.html
This commit is contained in:
commit
460ccb564b
20 changed files with 278 additions and 129 deletions
|
|
@ -61,5 +61,9 @@
|
|||
"WAGF Block": "كتلة WAGF",
|
||||
"WAGF Region": "منطقة WAGF",
|
||||
"people groups adopted": "الشعوب المنتمية",
|
||||
"people groups engaged": "مجموعات بشرية مُنخرِطة"
|
||||
"people groups engaged": "مجموعات بشرية مُنخرِطة",
|
||||
"Outside this region": "خارج هذه المنطقة",
|
||||
"Pray": "صلّي",
|
||||
"Loading region dashboards…": "جارٍ تحميل لوحات المناطق…",
|
||||
"No regions found.": "لم يتم العثور على مناطق."
|
||||
}
|
||||
|
|
|
|||
|
|
@ -61,5 +61,9 @@
|
|||
"WAGF Block": "WAGF-Block",
|
||||
"WAGF Region": "WAGF-Region",
|
||||
"people groups adopted": "adoptierte Volksgruppen",
|
||||
"people groups engaged": "engagierte Volksgruppen"
|
||||
"people groups engaged": "engagierte Volksgruppen",
|
||||
"Outside this region": "Außerhalb dieser Region",
|
||||
"Pray": "Ich bete",
|
||||
"Loading region dashboards…": "Regions-Dashboards werden geladen…",
|
||||
"No regions found.": "Keine Regionen gefunden."
|
||||
}
|
||||
|
|
|
|||
|
|
@ -61,5 +61,9 @@
|
|||
"WAGF Block": "WAGF Block",
|
||||
"WAGF Region": "WAGF Region",
|
||||
"people groups adopted": "people groups adopted",
|
||||
"people groups engaged": "people groups engaged"
|
||||
"people groups engaged": "people groups engaged",
|
||||
"Outside this region": "Outside this region",
|
||||
"Pray": "Pray",
|
||||
"Loading region dashboards…": "Loading region dashboards…",
|
||||
"No regions found.": "No regions found."
|
||||
}
|
||||
|
|
|
|||
|
|
@ -61,5 +61,9 @@
|
|||
"WAGF Block": "Bloque WAGF",
|
||||
"WAGF Region": "Región de la WAGF",
|
||||
"people groups adopted": "grupos de personas adoptados",
|
||||
"people groups engaged": "grupos étnicos comprometidos"
|
||||
"people groups engaged": "grupos étnicos comprometidos",
|
||||
"Outside this region": "Fuera de esta región",
|
||||
"Pray": "Oración",
|
||||
"Loading region dashboards…": "Cargando los paneles de regiones…",
|
||||
"No regions found.": "No se encontraron regiones."
|
||||
}
|
||||
|
|
|
|||
|
|
@ -61,5 +61,9 @@
|
|||
"WAGF Block": "Bloc WAGF",
|
||||
"WAGF Region": "Région WAGF",
|
||||
"people groups adopted": "peuples adoptés",
|
||||
"people groups engaged": "peuples engagés"
|
||||
"people groups engaged": "peuples engagés",
|
||||
"Outside this region": "Hors de cette région",
|
||||
"Pray": "Prier",
|
||||
"Loading region dashboards…": "Chargement des tableaux de bord des régions…",
|
||||
"No regions found.": "Aucune région trouvée."
|
||||
}
|
||||
|
|
|
|||
|
|
@ -61,5 +61,9 @@
|
|||
"WAGF Block": "WAGF ब्लॉक",
|
||||
"WAGF Region": "डब्ल्यूएजीएफ क्षेत्र",
|
||||
"people groups adopted": "लोगों के समूहों ने अपनाया",
|
||||
"people groups engaged": "प्रवेशित लोगों के समूह"
|
||||
"people groups engaged": "प्रवेशित लोगों के समूह",
|
||||
"Outside this region": "इस क्षेत्र के बाहर",
|
||||
"Pray": "प्रार्थना करें",
|
||||
"Loading region dashboards…": "क्षेत्र डैशबोर्ड लोड हो रहे हैं…",
|
||||
"No regions found.": "कोई क्षेत्र नहीं मिला।"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -61,5 +61,9 @@
|
|||
"WAGF Block": "Blocco WAGF",
|
||||
"WAGF Region": "Regione WAGF",
|
||||
"people groups adopted": "popoli adottati",
|
||||
"people groups engaged": "popoli coinvolti"
|
||||
"people groups engaged": "popoli coinvolti",
|
||||
"Outside this region": "Fuori da questa regione",
|
||||
"Pray": "Prega",
|
||||
"Loading region dashboards…": "Caricamento delle dashboard delle regioni…",
|
||||
"No regions found.": "Nessuna regione trovata."
|
||||
}
|
||||
|
|
|
|||
|
|
@ -61,5 +61,9 @@
|
|||
"WAGF Block": "Bloco WAGF",
|
||||
"WAGF Region": "Região da WAGF",
|
||||
"people groups adopted": "grupos étnicos adotados",
|
||||
"people groups engaged": "grupos étnicos engajados"
|
||||
"people groups engaged": "grupos étnicos engajados",
|
||||
"Outside this region": "Fora desta região",
|
||||
"Pray": "Ore",
|
||||
"Loading region dashboards…": "Carregando os painéis das regiões…",
|
||||
"No regions found.": "Nenhuma região encontrada."
|
||||
}
|
||||
|
|
|
|||
|
|
@ -61,5 +61,9 @@
|
|||
"WAGF Block": "Bloc WAGF",
|
||||
"WAGF Region": "Regiune WAGF",
|
||||
"people groups adopted": "popoare adoptate",
|
||||
"people groups engaged": "popoare implicate"
|
||||
"people groups engaged": "popoare implicate",
|
||||
"Outside this region": "În afara acestei regiuni",
|
||||
"Pray": "Roagă-te",
|
||||
"Loading region dashboards…": "Se încarcă panourile regiunilor…",
|
||||
"No regions found.": "Nu au fost găsite regiuni."
|
||||
}
|
||||
|
|
|
|||
|
|
@ -61,5 +61,9 @@
|
|||
"WAGF Block": "Блок WAGF",
|
||||
"WAGF Region": "Регион WAGF",
|
||||
"people groups adopted": "принятые группы людей",
|
||||
"people groups engaged": "вовлечённые группы людей"
|
||||
"people groups engaged": "вовлечённые группы людей",
|
||||
"Outside this region": "За пределами этого региона",
|
||||
"Pray": "Молиться",
|
||||
"Loading region dashboards…": "Загрузка панелей по регионам…",
|
||||
"No regions found.": "Регионы не найдены."
|
||||
}
|
||||
|
|
|
|||
|
|
@ -61,5 +61,9 @@
|
|||
"WAGF Block": "WAGF 板块",
|
||||
"WAGF Region": "WAGF 区域",
|
||||
"people groups adopted": "已认领的民族",
|
||||
"people groups engaged": "已参与的民族"
|
||||
"people groups engaged": "已参与的民族",
|
||||
"Outside this region": "在此区域之外",
|
||||
"Pray": "祷告",
|
||||
"Loading region dashboards…": "正在加载区域面板…",
|
||||
"No regions found.": "未找到区域。"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -69,6 +69,10 @@ const cfg = computed(() => {
|
|||
try { return JSON.parse(props.profileConfig) || {} } catch { return {} }
|
||||
})
|
||||
const prayBaseUrl = computed(() => props.prayBaseUrl || cfg.value.prayBaseUrl || 'https://pray.doxa.life')
|
||||
// Their popup's second button. RegionDetail passes CountryMap `:research-url="localePath('/research') + '/'"`;
|
||||
// we have no router, so it comes from profile-config with their public site as the default —
|
||||
// the same ladder and the same default UupgsList.vue:74 already uses.
|
||||
const researchUrl = computed(() => cfg.value.researchUrl || 'https://doxa.life/research/')
|
||||
// The prayer API localises its LABELS from ?lang= — country names, region names, religion
|
||||
// names. MEASURED: with locale=ar the UI translated but every country in the table stayed
|
||||
// English, because this read only cfg.languageCode while the locale arrives as
|
||||
|
|
@ -131,7 +135,13 @@ const sel = ref({
|
|||
// identically -- the extra fields are read by the map, never by addToStats().
|
||||
// Their PEOPLE_GROUP_LIST_FIELDS plus the two this tab's map needs (name, slug) — derived
|
||||
// from the shared list so the two can never drift apart.
|
||||
const FIELDS = 'name,slug,' + PEOPLE_GROUP_LIST_FIELDS
|
||||
// ★ PLUS THEIR FIVE POPUP FIELDS. CountryMap.vue:89 fetches
|
||||
// name,slug,country_code,rop1,religion,population,location_description,image_url,has_photo,
|
||||
// latitude,longitude,people_committed
|
||||
// and their pin popup renders every one of them. Ours fetched neither rop1, religion,
|
||||
// location_description nor the photo, so the popup COULD NOT have been a clone however it was
|
||||
// written — the data was not on the page. Same one request, five more columns.
|
||||
const FIELDS = 'name,slug,rop1,religion,location_description,image_url,has_photo,' + PEOPLE_GROUP_LIST_FIELDS
|
||||
|
||||
function formatNumber(n) {
|
||||
// THEIRS, RegionDetail.vue:16: `n.toLocaleString(`${locale.value}-u-nu-latn`)` — locale
|
||||
|
|
@ -594,6 +604,12 @@ async function loadRegions() {
|
|||
region: p.wagf_region?.value || '',
|
||||
lng: parseFloat(p.longitude), lat: parseFloat(p.latitude),
|
||||
committed: toNumber(p.people_committed), population: toNumber(p.population),
|
||||
// Their popup's fields, mapped exactly as CountryMap.vue:107-115 maps them — including the
|
||||
// has_photo GATE on the image, which is theirs: a row can carry an image_url that is a
|
||||
// placeholder, and they only show it when the flag says there is a real photo.
|
||||
rop1: p.rop1?.label || '', religion: p.religion?.label || '',
|
||||
description: p.location_description || '',
|
||||
imageUrl: (p.has_photo && p.image_url) ? p.image_url : '',
|
||||
})).filter((p) => Number.isFinite(p.lng) && Number.isFinite(p.lat))
|
||||
} catch (error) {
|
||||
console.error('[region-dashboards] fetch error:', error)
|
||||
|
|
@ -900,7 +916,7 @@ useShadowStyles(
|
|||
<!-- a landmark, so a screen reader can jump to the dashboard body; the app probe
|
||||
measured none on the page and it costs nothing to name the region. -->
|
||||
<main class="rd-scroll" :aria-label="t('Region dashboard')">
|
||||
<div v-if="loading" class="rd-status">Loading region dashboards…</div>
|
||||
<div v-if="loading" class="rd-status">{{ t('Loading region dashboards…') }}</div>
|
||||
<div v-else-if="loadFailed" class="rd-status rd-failed" role="status">
|
||||
Region data could not be loaded. This is a connection problem, not a filter.
|
||||
</div>
|
||||
|
|
@ -991,6 +1007,8 @@ useShadowStyles(
|
|||
:color-mode="mapColorMode"
|
||||
:highlight-region="hoveredRegion"
|
||||
:select-on-pin-click="isAll"
|
||||
:pray-base-url="prayBaseUrl"
|
||||
:research-url="researchUrl"
|
||||
@pick-country="onPickFromMap"
|
||||
/>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -530,7 +530,7 @@ useShadowStyles(
|
|||
<div v-else-if="loadFailed" class="rl-status rl-failed" role="status">
|
||||
Region data could not be loaded. This is a connection problem, not a filter.
|
||||
</div>
|
||||
<div v-else-if="!regions.length" class="rl-status">No regions found.</div>
|
||||
<div v-else-if="!regions.length" class="rl-status">{{ t('No regions found.') }}</div>
|
||||
|
||||
<template v-else>
|
||||
<div
|
||||
|
|
|
|||
|
|
@ -34,8 +34,14 @@ import { useShadowStyles } from '@map/composables/useShadowStyles.js'
|
|||
// check:one-palette exists because a private palette in a consumer is what once made two
|
||||
// surfaces disagree about what a colour meant.
|
||||
import { applyColor as regionColorExpression, PALETTE as REGION_PALETTE, getColor as regionColorFor } from '@map/colors/wagf-region.js'
|
||||
// ★ THIS FILE HAD NO t() AT ALL. Its legend rendered four hardcoded English strings on a page
|
||||
// whose every other word is translated into eleven languages, and three of those four were
|
||||
// ALREADY in the catalogue — translated for the Prayer Coverage card and hardcoded here.
|
||||
// Their CountryMap.vue calls t() for the same strings (:268-272).
|
||||
import { useRegionsI18n } from './useRegionsI18n.js'
|
||||
|
||||
|
||||
const { t, locale } = useRegionsI18n()
|
||||
const emit = defineEmits(['pick-country'])
|
||||
const props = defineProps({
|
||||
// ISO-3 codes to highlight, e.g. ['IND'] for a country or every code in a region.
|
||||
|
|
@ -56,6 +62,10 @@ const props = defineProps({
|
|||
zoom: { type: Number, default: 2 },
|
||||
// [[west, south], [east, north]] — takes precedence over center/zoom, as theirs does.
|
||||
bounds: { type: Array, default: null },
|
||||
// Their popup's two buttons (CountryMap.vue:156-158): Pray -> prayBaseUrl/<slug>?source=doxalife,
|
||||
// Full Profile -> researchUrl<slug>.
|
||||
prayBaseUrl: { type: String, default: 'https://pray.doxa.life' },
|
||||
researchUrl: { type: String, default: 'https://doxa.life/research/' },
|
||||
})
|
||||
|
||||
// The token ladder: ProfileLoader provides it (the same seam every map bundle uses). A nested
|
||||
|
|
@ -100,6 +110,9 @@ const geojson = computed(() => {
|
|||
inCountry: focus.has(p.code), committed: Number(p.committed) || 0,
|
||||
region: p.region || '', code: p.code || '',
|
||||
population: Number(p.population) || 0,
|
||||
// Their popup's four (CountryMap.vue:107-115). Primitives only, as their own comment says.
|
||||
rop1: p.rop1 || '', religion: p.religion || '',
|
||||
description: p.description || '', imageUrl: p.imageUrl || '',
|
||||
},
|
||||
})),
|
||||
}
|
||||
|
|
@ -298,19 +311,54 @@ function onPinClick(e) {
|
|||
const g = window.mapboxgl
|
||||
if (!g) return
|
||||
const p = f.properties || {}
|
||||
const pop = Number(p.population) || 0
|
||||
const html = '<div style="font:14px/1.45 Poppins,sans-serif;color:#2a332a">' +
|
||||
'<div style="font-weight:600;margin-bottom:2px">' + esc(p.name) + '</div>' +
|
||||
(p.country ? '<div style="color:#6d766e">' + esc(p.country) + '</div>' : '') +
|
||||
(pop ? '<div style="color:#6d766e">Population ' + pop.toLocaleString('en-US') + '</div>' : '') +
|
||||
'<div style="color:#6d766e">' + (Number(p.committed) || 0).toLocaleString('en-US') + ' praying</div>' +
|
||||
'</div>'
|
||||
const html = popupHtml(p)
|
||||
if (popup) popup.remove()
|
||||
popup = new g.Popup({ closeButton: true, maxWidth: '264px', offset: 12 })
|
||||
.setLngLat(f.geometry.coordinates).setHTML(html).addTo(map.value)
|
||||
}
|
||||
// THEIR escape, not a shorter one: CountryMap.vue:122-125 also escapes the two quote characters,
|
||||
// and this string is interpolated into href="" and alt="" attributes below, where omitting them is
|
||||
// the difference between an escape and a hole.
|
||||
function esc(s) {
|
||||
return String(s == null ? '' : s).replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>')
|
||||
.replace(/"/g, '"').replace(/'/g, ''')
|
||||
}
|
||||
|
||||
// ★ THEIR PIN POPUP, PORTED — CountryMap.vue:130-161. Ours was a four-line stub: a bold name, the
|
||||
// country, "Population 12,345" and "678 praying", in English, with no photo, no religion, no
|
||||
// description and no way to act on it. Theirs is a card: the people group's photo, the name, the
|
||||
// country and its primary ethnolinguistic group, a definition list of Population / Religion /
|
||||
// Intercessors-out-of-100, up to three lines of the location description, and two buttons — Pray,
|
||||
// which is the entire point of the site, and Full Profile.
|
||||
// It could not have been ported before this pass because the DATA was not being fetched: rop1,
|
||||
// religion, location_description and the photo were missing from our field list.
|
||||
function popupHtml(p) {
|
||||
const name = esc(p.name || '')
|
||||
const subtitle = [p.country, p.rop1].filter(Boolean).map(esc).join(' · ')
|
||||
// Their formatPopulation: toLocaleString(languageCode), NOT a hardcoded 'en'. Ours printed
|
||||
// 'en-US' grouping in every one of the eleven locales.
|
||||
const pop = Number(p.population) > 0 ? Number(p.population).toLocaleString(locale.value || 'en') : ''
|
||||
const profileUrl = `${props.researchUrl}${p.slug || ''}`
|
||||
const prayUrl = `${String(props.prayBaseUrl).replace(/\/+$/, '')}/${p.slug || ''}?source=doxalife`
|
||||
|
||||
const rows = []
|
||||
if (pop) rows.push(`<div><dt>${esc(t('Population'))}</dt><dd>${pop}</dd></div>`)
|
||||
if (p.religion) rows.push(`<div><dt>${esc(t('Religion'))}</dt><dd>${esc(p.religion)}</dd></div>`)
|
||||
rows.push(`<div><dt>${esc(t('Intercessors'))}</dt><dd>${Number(p.committed) || 0}/${FULL_PRAYER_COVERAGE_COUNT}</dd></div>`)
|
||||
|
||||
return `<div class="cm-popup">
|
||||
${p.imageUrl ? `<img class="cm-popup__img" src="${esc(p.imageUrl)}" alt="${name}" loading="lazy">` : ''}
|
||||
<div class="cm-popup__body">
|
||||
<div class="cm-popup__name">${name}</div>
|
||||
${subtitle ? `<div class="cm-popup__sub">${subtitle}</div>` : ''}
|
||||
${rows.length ? `<dl class="cm-popup__stats">${rows.join('')}</dl>` : ''}
|
||||
${p.description ? `<p class="cm-popup__desc">${esc(p.description)}</p>` : ''}
|
||||
<div class="cm-popup__actions">
|
||||
<a class="cm-popup__btn cm-popup__btn--primary" href="${prayUrl}">${esc(t('Pray'))}</a>
|
||||
<a class="cm-popup__btn" href="${profileUrl}">${esc(t('Full Profile'))}</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>`
|
||||
}
|
||||
|
||||
// Re-frame and re-source on a new selection instead of tearing the map down: a rebuilt map
|
||||
|
|
@ -474,7 +522,34 @@ useShadowStyles(
|
|||
' flex-direction:column; gap:4px; padding:8px 10px; border-radius:8px;' +
|
||||
' background:rgba(255,255,255,0.92); font-size:12.5px; font-weight:600; color:#2a332a; }' +
|
||||
'.rcm__legend span{ display:inline-flex; align-items:center; gap:6px; }' +
|
||||
'.rcm__legend i{ width:10px; height:10px; border-radius:100px; flex:0 0 auto; }',
|
||||
'.rcm__legend i{ width:10px; height:10px; border-radius:100px; flex:0 0 auto; }' +
|
||||
|
||||
// ── THEIR PIN POPUP'S CSS, ported verbatim from CountryMap.vue's scoped block ──────────────
|
||||
// Mapbox builds the popup inside the map container, which is inside this shadow root, so these
|
||||
// reach it. The var() fallbacks are theirs and resolve to the same bytes here as there:
|
||||
// --color-brand is #3b463d and --color-brand-lighter #6d766e on live, identical to the
|
||||
// fallbacks, and --color-black is not defined on either side so #1f1f1f applies to both.
|
||||
'.mapboxgl-popup-content:has(.cm-popup){ padding:12px; border-radius:10px;' +
|
||||
' box-shadow:0 4px 16px rgba(0,0,0,0.18); }' +
|
||||
'.cm-popup{ width:240px; }' +
|
||||
'.cm-popup__img{ display:block; width:150px; aspect-ratio:4/5; object-fit:cover;' +
|
||||
' border-radius:8px; margin:0 auto 8px; }' +
|
||||
'.cm-popup__body{ padding:0; }' +
|
||||
'.cm-popup__name{ font-weight:700; font-size:15px; line-height:1.25;' +
|
||||
' color:var(--color-black, #1f1f1f); }' +
|
||||
'.cm-popup__sub{ margin-top:2px; font-size:12px; color:var(--color-brand-lighter, #6d766e); }' +
|
||||
'.cm-popup__stats{ margin:8px 0 0; display:flex; flex-direction:column; gap:3px; }' +
|
||||
'.cm-popup__stats > div{ display:flex; justify-content:space-between; gap:10px; font-size:12px; }' +
|
||||
'.cm-popup__stats dt{ margin:0; color:var(--color-brand-lighter, #6d766e); }' +
|
||||
'.cm-popup__stats dd{ margin:0; text-align:right; font-weight:600;' +
|
||||
' color:var(--color-black, #1f1f1f); }' +
|
||||
'.cm-popup__desc{ margin:8px 0 0; font-size:12px; line-height:1.45; color:#555;' +
|
||||
' display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; overflow:hidden; }' +
|
||||
'.cm-popup__actions{ display:flex; gap:6px; margin-top:10px; }' +
|
||||
'.cm-popup__btn{ flex:1; padding:6px 8px; border-radius:6px; font-size:12px; font-weight:600;' +
|
||||
' text-align:center; text-decoration:none; background:#ecf0f1;' +
|
||||
' color:var(--color-black, #1f1f1f); }' +
|
||||
'.cm-popup__btn--primary{ background:var(--color-brand, #3b463d); color:#fff; }',
|
||||
'region-country-map'
|
||||
)
|
||||
</script>
|
||||
|
|
@ -495,10 +570,10 @@ useShadowStyles(
|
|||
figures above are unaffected.
|
||||
</p>
|
||||
<div v-if="colorMode === 'prayer' && !mapFailed" class="rcm__legend">
|
||||
<span><i :style="{ background: C.prayerFull }" />100+ People Praying</span>
|
||||
<span><i :style="{ background: C.prayerPartial }" />1+ People Praying</span>
|
||||
<span><i :style="{ background: C.prayerNone }" />No One Praying</span>
|
||||
<span><i :style="{ background: C.outside }" />Outside this region</span>
|
||||
<span><i :style="{ background: C.prayerFull }" />{{ t('100+ People Praying') }}</span>
|
||||
<span><i :style="{ background: C.prayerPartial }" />{{ t('1+ People Praying') }}</span>
|
||||
<span><i :style="{ background: C.prayerNone }" />{{ t('No One Praying') }}</span>
|
||||
<span><i :style="{ background: C.outside }" />{{ t('Outside this region') }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
|
|
|||
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
8
public/doxa-maps/manifest.json
generated
8
public/doxa-maps/manifest.json
generated
|
|
@ -879,7 +879,7 @@
|
|||
"bundle": "regions-dashboard",
|
||||
"scriptUrl": "./regions-dashboard/regions-dashboard.js",
|
||||
"output": "doxa-maps/regions-dashboard/regions-dashboard.js",
|
||||
"integrity": "sha384-QDVP+aABJKCOcB8Yww7Q5dISU0TNhWAXYeE1PiuN2eGOSF8Oxb180bnyA2+Wsxyr",
|
||||
"integrity": "sha384-SMzVAlqv9vLi6EPAx+hA0Vt+xEpZoGfc7UI48Ny/ama/FCA+Tji5PWHH2YSCuYTP",
|
||||
"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-QDVP+aABJKCOcB8Yww7Q5dISU0TNhWAXYeE1PiuN2eGOSF8Oxb180bnyA2+Wsxyr\" 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-SMzVAlqv9vLi6EPAx+hA0Vt+xEpZoGfc7UI48Ny/ama/FCA+Tji5PWHH2YSCuYTP\" 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-QDVP+aABJKCOcB8Yww7Q5dISU0TNhWAXYeE1PiuN2eGOSF8Oxb180bnyA2+Wsxyr\" 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-SMzVAlqv9vLi6EPAx+hA0Vt+xEpZoGfc7UI48Ny/ama/FCA+Tji5PWHH2YSCuYTP\" 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-QDVP+aABJKCOcB8Yww7Q5dISU0TNhWAXYeE1PiuN2eGOSF8Oxb180bnyA2+Wsxyr\" 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-SMzVAlqv9vLi6EPAx+hA0Vt+xEpZoGfc7UI48Ny/ama/FCA+Tji5PWHH2YSCuYTP\" 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-QDVP+aABJKCOcB8Yww7Q5dISU0TNhWAXYeE1PiuN2eGOSF8Oxb180bnyA2+Wsxyr" crossorigin="anonymous"></script>
|
||||
<script src="../regions-dashboard.js" integrity="sha384-SMzVAlqv9vLi6EPAx+hA0Vt+xEpZoGfc7UI48Ny/ama/FCA+Tji5PWHH2YSCuYTP" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
202
public/doxa-maps/regions-dashboard/regions-dashboard.js
generated
202
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-QDVP+aABJKCOcB8Yww7Q5dISU0TNhWAXYeE1PiuN2eGOSF8Oxb180bnyA2+Wsxyr" crossorigin="anonymous"></script>
|
||||
<script src="../regions-dashboard.js" integrity="sha384-SMzVAlqv9vLi6EPAx+hA0Vt+xEpZoGfc7UI48Ny/ama/FCA+Tji5PWHH2YSCuYTP" 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-QDVP+aABJKCOcB8Yww7Q5dISU0TNhWAXYeE1PiuN2eGOSF8Oxb180bnyA2+Wsxyr" crossorigin="anonymous"></script>
|
||||
<script src="../regions-dashboard.js" integrity="sha384-SMzVAlqv9vLi6EPAx+hA0Vt+xEpZoGfc7UI48Ny/ama/FCA+Tji5PWHH2YSCuYTP" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
Loading…
Reference in a new issue