Compare commits
5 commits
main
...
country-po
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4b7c52d024 | ||
|
|
eb5cf55d06 | ||
|
|
5b33914614 | ||
|
|
0415324cbc | ||
|
|
78b2f108f2 |
BIN
data/posters/india-an.webp
Normal file
|
After Width: | Height: | Size: 89 KiB |
BIN
data/posters/india-ap.webp
Normal file
|
After Width: | Height: | Size: 221 KiB |
BIN
data/posters/india-ar.webp
Normal file
|
After Width: | Height: | Size: 86 KiB |
BIN
data/posters/india-as.webp
Normal file
|
After Width: | Height: | Size: 111 KiB |
BIN
data/posters/india-br.webp
Normal file
|
After Width: | Height: | Size: 112 KiB |
BIN
data/posters/india-ch.webp
Normal file
|
After Width: | Height: | Size: 66 KiB |
BIN
data/posters/india-ct.webp
Normal file
|
After Width: | Height: | Size: 139 KiB |
BIN
data/posters/india-dh.webp
Normal file
|
After Width: | Height: | Size: 72 KiB |
BIN
data/posters/india-dl.webp
Normal file
|
After Width: | Height: | Size: 63 KiB |
BIN
data/posters/india-ga.webp
Normal file
|
After Width: | Height: | Size: 74 KiB |
BIN
data/posters/india-gj.webp
Normal file
|
After Width: | Height: | Size: 220 KiB |
BIN
data/posters/india-hp.webp
Normal file
|
After Width: | Height: | Size: 112 KiB |
BIN
data/posters/india-hr.webp
Normal file
|
After Width: | Height: | Size: 81 KiB |
BIN
data/posters/india-jh.webp
Normal file
|
After Width: | Height: | Size: 96 KiB |
BIN
data/posters/india-jk.webp
Normal file
|
After Width: | Height: | Size: 137 KiB |
BIN
data/posters/india-ka.webp
Normal file
|
After Width: | Height: | Size: 222 KiB |
BIN
data/posters/india-kl.webp
Normal file
|
After Width: | Height: | Size: 216 KiB |
BIN
data/posters/india-la.webp
Normal file
|
After Width: | Height: | Size: 87 KiB |
BIN
data/posters/india-ld.webp
Normal file
|
After Width: | Height: | Size: 59 KiB |
BIN
data/posters/india-mh.webp
Normal file
|
After Width: | Height: | Size: 179 KiB |
BIN
data/posters/india-ml.webp
Normal file
|
After Width: | Height: | Size: 81 KiB |
BIN
data/posters/india-mn.webp
Normal file
|
After Width: | Height: | Size: 80 KiB |
BIN
data/posters/india-mp.webp
Normal file
|
After Width: | Height: | Size: 148 KiB |
BIN
data/posters/india-or.webp
Normal file
|
After Width: | Height: | Size: 192 KiB |
BIN
data/posters/india-pb.webp
Normal file
|
After Width: | Height: | Size: 79 KiB |
BIN
data/posters/india-py.webp
Normal file
|
After Width: | Height: | Size: 73 KiB |
BIN
data/posters/india-rj.webp
Normal file
|
After Width: | Height: | Size: 169 KiB |
BIN
data/posters/india-sk.webp
Normal file
|
After Width: | Height: | Size: 70 KiB |
BIN
data/posters/india-tg.webp
Normal file
|
After Width: | Height: | Size: 125 KiB |
BIN
data/posters/india-tn.webp
Normal file
|
After Width: | Height: | Size: 201 KiB |
BIN
data/posters/india-tr.webp
Normal file
|
After Width: | Height: | Size: 96 KiB |
BIN
data/posters/india-up.webp
Normal file
|
After Width: | Height: | Size: 124 KiB |
BIN
data/posters/india-ut.webp
Normal file
|
After Width: | Height: | Size: 85 KiB |
BIN
data/posters/india-wb.webp
Normal file
|
After Width: | Height: | Size: 146 KiB |
|
|
@ -80,6 +80,10 @@ const props = defineProps({
|
|||
itemCountKey: { type: String, default: '' },
|
||||
collapsible: { type: Boolean, default: false },
|
||||
collapsedBy: { type: Function, default: () => false },
|
||||
// A section's people-group total, shown in its header and used to order the sections (largest first).
|
||||
// Default: the sum of its cards' counts. A caller whose cards overlap overrides it, so a group is counted
|
||||
// once: the Country Posters India section holds India's own card AND one card per state, the same 855 groups.
|
||||
sectionTotal: { type: Function, default: null },
|
||||
// A card may declare itself unsupported (India: 855 groups do not fit a sheet).
|
||||
// The caller supplies the reason; the wall renders it instead of a poster.
|
||||
unsupported: { type: Function, default: () => null },
|
||||
|
|
@ -351,7 +355,7 @@ const sections = computed(() => {
|
|||
.map(([name, items]) => ({
|
||||
name,
|
||||
items: items.slice().sort((a, b) => (b.count || 0) - (a.count || 0)),
|
||||
total: items.reduce((n, x) => n + (x.count || 0), 0),
|
||||
total: props.sectionTotal ? props.sectionTotal(name, items) : items.reduce((n, x) => n + (x.count || 0), 0),
|
||||
}))
|
||||
.sort((a, b) => b.total - a.total)
|
||||
})
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
{
|
||||
"indiaStatesHeading": "الهند — الولايات والأقاليم الاتحادية",
|
||||
"indiaNote": "للهند قسمها الخاص في المقدّمة: عدد الشعوب غير المُبشَّرة فيها {count}، وهو أكثر بكثير من أي بلد آخر، لذا لكل ولاية وإقليم اتحادي فيها ملصقه الخاص.",
|
||||
"indiaStateNoGroups": "لا توجد هنا شعوب غير مُبشَّرة مُدرَجة."
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
{
|
||||
"indiaStatesHeading": "Indien – Bundesstaaten und Unionsterritorien",
|
||||
"indiaNote": "Indien hat einen eigenen Abschnitt, ganz oben: Mit {count} unerreichten Volksgruppen, weit mehr als jedes andere Land, hat jeder seiner Bundesstaaten und Unionsterritorien ein eigenes Plakat.",
|
||||
"indiaStateNoGroups": "Hier sind keine unerreichten Volksgruppen verzeichnet."
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
{
|
||||
"indiaStatesHeading": "India — states and union territories",
|
||||
"indiaNote": "India has its own section, first: it has {count} unreached people groups, far more than any other country, so each of its states and union territories has its own poster.",
|
||||
"indiaStateNoGroups": "No unreached people groups are listed here."
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
{
|
||||
"indiaStatesHeading": "India: estados y territorios de la unión",
|
||||
"indiaNote": "India tiene su propia sección, la primera: tiene {count} pueblos no alcanzados, muchos más que cualquier otro país, así que cada uno de sus estados y territorios de la unión tiene su propio cartel.",
|
||||
"indiaStateNoGroups": "Aquí no figura ningún pueblo no alcanzado."
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
{
|
||||
"indiaStatesHeading": "Inde — États et territoires de l’Union",
|
||||
"indiaNote": "L’Inde a sa propre section, en premier : elle compte {count} peuples non atteints, bien plus que tout autre pays ; chacun de ses États et territoires de l’Union a donc sa propre affiche.",
|
||||
"indiaStateNoGroups": "Aucun peuple non atteint n’est répertorié ici."
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
{
|
||||
"indiaStatesHeading": "भारत — राज्य और केंद्र शासित प्रदेश",
|
||||
"indiaNote": "भारत का अपना अलग खंड है, सबसे पहले: इसमें {count} अपहुँचे जनसमूह हैं, किसी भी अन्य देश से कहीं अधिक, इसलिए इसके हर राज्य और केंद्र शासित प्रदेश का अपना पोस्टर है।",
|
||||
"indiaStateNoGroups": "यहाँ कोई अपहुँचा जनसमूह सूचीबद्ध नहीं है।"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
{
|
||||
"indiaStatesHeading": "India — stati e territori dell’Unione",
|
||||
"indiaNote": "L’India ha una sezione tutta sua, la prima: conta {count} popoli non raggiunti, molti più di qualsiasi altro paese, quindi ognuno dei suoi stati e territori dell’Unione ha il proprio manifesto.",
|
||||
"indiaStateNoGroups": "Qui non è elencato alcun popolo non raggiunto."
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
{
|
||||
"indiaStatesHeading": "Índia — estados e territórios da união",
|
||||
"indiaNote": "A Índia tem a sua própria seção, a primeira: tem {count} povos não alcançados, muito mais do que qualquer outro país, por isso cada um dos seus estados e territórios da união tem o seu próprio cartaz.",
|
||||
"indiaStateNoGroups": "Nenhum povo não alcançado está listado aqui."
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
{
|
||||
"indiaStatesHeading": "India — state și teritorii ale Uniunii",
|
||||
"indiaNote": "India are propria secțiune, prima: are {count} popoare neatinse, mult mai multe decât orice altă țară, așa că fiecare dintre statele și teritoriile sale ale Uniunii are propriul afiș.",
|
||||
"indiaStateNoGroups": "Aici nu este listat niciun popor neatins."
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
{
|
||||
"indiaStatesHeading": "Индия — штаты и союзные территории",
|
||||
"indiaNote": "У Индии свой раздел, первый: число недостигнутых народов в ней — {count}, намного больше, чем в любой другой стране, поэтому у каждого её штата и союзной территории есть свой плакат.",
|
||||
"indiaStateNoGroups": "Здесь не указано ни одного недостигнутого народа."
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
{
|
||||
"indiaStatesHeading": "印度——邦与中央直辖区",
|
||||
"indiaNote": "印度有单独的一栏,排在最前:这里有 {count} 个未得之民族群,远多于任何其他国家,因此它的每个邦和中央直辖区都有自己的海报。",
|
||||
"indiaStateNoGroups": "此处未列出任何未得之民族群。"
|
||||
}
|
||||
|
|
|
|||
BIN
plugin-designs/country-posters/assets/previews/india-an.webp
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
plugin-designs/country-posters/assets/previews/india-ap.webp
Normal file
|
After Width: | Height: | Size: 52 KiB |
BIN
plugin-designs/country-posters/assets/previews/india-ar.webp
Normal file
|
After Width: | Height: | Size: 22 KiB |
BIN
plugin-designs/country-posters/assets/previews/india-as.webp
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
plugin-designs/country-posters/assets/previews/india-br.webp
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
plugin-designs/country-posters/assets/previews/india-ch.webp
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
plugin-designs/country-posters/assets/previews/india-ct.webp
Normal file
|
After Width: | Height: | Size: 35 KiB |
BIN
plugin-designs/country-posters/assets/previews/india-dh.webp
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
plugin-designs/country-posters/assets/previews/india-dl.webp
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
plugin-designs/country-posters/assets/previews/india-ga.webp
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
plugin-designs/country-posters/assets/previews/india-gj.webp
Normal file
|
After Width: | Height: | Size: 50 KiB |
BIN
plugin-designs/country-posters/assets/previews/india-hp.webp
Normal file
|
After Width: | Height: | Size: 29 KiB |
BIN
plugin-designs/country-posters/assets/previews/india-hr.webp
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
plugin-designs/country-posters/assets/previews/india-jh.webp
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
plugin-designs/country-posters/assets/previews/india-jk.webp
Normal file
|
After Width: | Height: | Size: 35 KiB |
BIN
plugin-designs/country-posters/assets/previews/india-ka.webp
Normal file
|
After Width: | Height: | Size: 52 KiB |
BIN
plugin-designs/country-posters/assets/previews/india-kl.webp
Normal file
|
After Width: | Height: | Size: 53 KiB |
BIN
plugin-designs/country-posters/assets/previews/india-la.webp
Normal file
|
After Width: | Height: | Size: 21 KiB |
BIN
plugin-designs/country-posters/assets/previews/india-ld.webp
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
plugin-designs/country-posters/assets/previews/india-mh.webp
Normal file
|
After Width: | Height: | Size: 46 KiB |
BIN
plugin-designs/country-posters/assets/previews/india-ml.webp
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
plugin-designs/country-posters/assets/previews/india-mn.webp
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
plugin-designs/country-posters/assets/previews/india-mp.webp
Normal file
|
After Width: | Height: | Size: 38 KiB |
BIN
plugin-designs/country-posters/assets/previews/india-or.webp
Normal file
|
After Width: | Height: | Size: 48 KiB |
BIN
plugin-designs/country-posters/assets/previews/india-pb.webp
Normal file
|
After Width: | Height: | Size: 19 KiB |
BIN
plugin-designs/country-posters/assets/previews/india-py.webp
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
plugin-designs/country-posters/assets/previews/india-rj.webp
Normal file
|
After Width: | Height: | Size: 43 KiB |
BIN
plugin-designs/country-posters/assets/previews/india-sk.webp
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
plugin-designs/country-posters/assets/previews/india-tg.webp
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
plugin-designs/country-posters/assets/previews/india-tn.webp
Normal file
|
After Width: | Height: | Size: 52 KiB |
BIN
plugin-designs/country-posters/assets/previews/india-tr.webp
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
plugin-designs/country-posters/assets/previews/india-up.webp
Normal file
|
After Width: | Height: | Size: 31 KiB |
BIN
plugin-designs/country-posters/assets/previews/india-ut.webp
Normal file
|
After Width: | Height: | Size: 21 KiB |
BIN
plugin-designs/country-posters/assets/previews/india-wb.webp
Normal file
|
After Width: | Height: | Size: 37 KiB |
|
|
@ -191,8 +191,16 @@ async function countryMap(c) {
|
|||
// wall and the Regions dashboard cannot name one region two ways. A label with no key stays as drawn.
|
||||
const t = useOptionalT('')
|
||||
const regionSlug = (label) => String(label).toLowerCase().replace(/\s+/g, '_')
|
||||
// ★ INDIA IS ITS OWN SECTION, FIRST: India's country card, one card per state and union territory, and the two
|
||||
// with none listed. Its 855 groups are counted ONCE (sectionTotal below; the state cards are India's groups again),
|
||||
// and that true total is also what puts it above every other section. Headed by the country's own name.
|
||||
const wallLang = () => { const l = wallLocale && (wallLocale.value ?? wallLocale); return (typeof l === 'string' && l) || getRuntimeLocale() || detectLocale() || 'en' }
|
||||
const indiaHeading = () => (/^en\b/i.test(wallLang()) ? 'India' : countryName('IND', wallLang()) || 'India')
|
||||
const isIndia = (c) => c.indiaState || String(c.iso3 || '').toUpperCase() === 'IND'
|
||||
const INDIA_COUNT = (byIso3.get('IND') || {}).count || 0
|
||||
const sectionTotal = (name, items) => (items.some(isIndia) && INDIA_COUNT ? INDIA_COUNT : items.reduce((n, x) => n + (x.count || 0), 0))
|
||||
const groupBy = (c) => {
|
||||
if (c.indiaState) return t('countryPosters.indiaStatesHeading')
|
||||
if (isIndia(c)) return indiaHeading()
|
||||
if (!c.region || c.region === 'Other') return t('dashboard.other')
|
||||
const key = `dashboard.wagfRegion.${regionSlug(c.region)}`
|
||||
const v = t(key)
|
||||
|
|
@ -218,7 +226,9 @@ const unsupported = (c) => (c.noGroups ? t('countryPosters.indiaStateNoGroups')
|
|||
const escHtml = (s) => String(s).replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>')
|
||||
const heading = computed(() => t('messages.countryWallHeading'))
|
||||
const wallTag = computed(() => t('messages.upg100WallTag'))
|
||||
const intro = computed(() => `${escHtml(t('messages.countryWallIntroA'))}<strong>${escHtml(t('messages.upg100WallIntroEmph'))}</strong>${escHtml(t('messages.countryWallIntroB'))}`)
|
||||
const intro = computed(() => `${escHtml(t('messages.countryWallIntroA'))}<strong>${escHtml(t('messages.upg100WallIntroEmph'))}</strong>${escHtml(t('messages.countryWallIntroB'))}`
|
||||
// Why India is first and different, in one line (only on the unfiltered wall, the only one that shows its section).
|
||||
+ (INDIA_COUNT ? `<br>${escHtml(t('countryPosters.indiaNote', { count: INDIA_COUNT }))}` : ''))
|
||||
const soonMessage = computed(() => t('messages.countryWallSoon'))
|
||||
</script>
|
||||
|
||||
|
|
@ -242,6 +252,7 @@ const soonMessage = computed(() => t('messages.countryWallSoon'))
|
|||
:map-image="countryMap"
|
||||
:collapsible="!filtered"
|
||||
:collapsed-by="filtered ? neverCollapsed : collapsedBy"
|
||||
:section-total="filtered ? null : sectionTotal"
|
||||
:section-heads="!filtered"
|
||||
:embedded="filtered"
|
||||
:columns="filtered ? hostColumns : 0"
|
||||
|
|
|
|||
|
|
@ -134,6 +134,28 @@ export function armC(H, states, adm1Ind) {
|
|||
return fails
|
||||
}
|
||||
|
||||
// ARM E: India is its OWN section, FIRST, counted ONCE. The India country card, the state cards and the none-listed
|
||||
// cards group together; the section's total is India's own count (not the card sum, which counts 855 twice); on that
|
||||
// true total it outranks every regional section. PosterWall's default (no sectionTotal) must still be the card sum.
|
||||
export function armE(countries, states, wallSrc, posterWallSrc, H) {
|
||||
const fails = []
|
||||
if (!/:section-total=/.test(wallSrc)) fails.push('country-poster-wall.vue does not pass :section-total, so India is counted twice')
|
||||
if (!/String\(c\.iso3[^)]*\)\.toUpperCase\(\) === 'IND'/.test(wallSrc)) fails.push("the wall's isIndia() no longer puts India's country card in the India section")
|
||||
if (!/props\.sectionTotal \? props\.sectionTotal\(name, items\) : items\.reduce\(\(n, x\) => n \+ \(x\.count \|\| 0\), 0\)/.test(posterWallSrc)) fails.push("PosterWall's default section total is no longer the card sum (every other wall would change)")
|
||||
const ind = countries.find((c) => c.iso3 === 'IND')
|
||||
const stateCards = [...H.statesWithPosters(states).map((st) => ({ count: st.count, indiaState: true })), ...states.filter((st) => !st.count).map(() => ({ count: 0, indiaState: true }))]
|
||||
const groups = new Map()
|
||||
for (const c of [...countries, ...stateCards]) {
|
||||
const g = c.indiaState || c.iso3 === 'IND' ? 'India' : (c.region || 'Other')
|
||||
if (!groups.has(g)) groups.set(g, []); groups.get(g).push(c)
|
||||
}
|
||||
const total = (g, items) => (g === 'India' ? ind.count : items.reduce((n, x) => n + (x.count || 0), 0))
|
||||
const order = [...groups].map(([g, items]) => [g, total(g, items)]).sort((a, b) => b[1] - a[1])
|
||||
if (order[0][0] !== 'India') fails.push(`India is not the first section: ${order.slice(0, 3).map(([g, t]) => `${g} ${t}`).join(', ')}`)
|
||||
if (order.find(([g]) => g === 'India')[1] !== ind.count) fails.push(`the India section counts ${order.find(([g]) => g === 'India')[1]}, not India's ${ind.count}`)
|
||||
return { fails, order }
|
||||
}
|
||||
|
||||
async function main() {
|
||||
const selfTest = process.argv.includes('--self-test')
|
||||
const { seriesFor } = await import(join(ROOT, 'library/packet/countrySheet.js'))
|
||||
|
|
@ -160,6 +182,8 @@ async function main() {
|
|||
['the wall calls generateSheet directly', () => armA({ ...files, [wall]: files[wall].replace('<script setup>', "<script setup>\nimport { generateSheet } from '@map/packet/posterSheets.js'\ngenerateSheet({})") })],
|
||||
['a state with groups loses its outline', () => armC(H, states.map((st) => (st.id === 'india-gj' ? { ...st, shapeName: 'Nowhere' } : st)), adm1Ind)],
|
||||
['a division silently dropped', () => armC(H, states.filter((st) => st.id !== 'india-mz'), adm1Ind)],
|
||||
['the wall stops passing sectionTotal (India counted twice)', () => armE(countries, states, files[wall].replace(':section-total=', ':x-section-total='), readFileSync(join(ROOT, 'library/components/poster/PosterWall.vue'), 'utf8'), H).fails],
|
||||
['India country card left in Asia', () => armE(countries, states, files[wall].replace("=== 'IND'", "=== 'XXX'"), readFileSync(join(ROOT, 'library/components/poster/PosterWall.vue'), 'utf8'), H).fails],
|
||||
['a helper that mutates the shared ADM1', () => armC({ ...H, stateGeometry: (z, a, n) => { (a.features || []).forEach((f) => { if (f.properties.shapeName === n) f.properties.listId = z.id }); return H.stateGeometry(z, a, n) } }, states, JSON.parse(JSON.stringify(adm1Ind)))],
|
||||
]
|
||||
let bad = 0
|
||||
|
|
@ -177,12 +201,13 @@ async function main() {
|
|||
}
|
||||
|
||||
const callers = []
|
||||
const fails = [...armA(files, callers), ...armB(seriesFor, countries), ...armC(H, states, adm1Ind)]
|
||||
const E = armE(countries, states, files['plugin-designs/country-posters/country-poster-wall.vue'], readFileSync(join(ROOT, 'library/components/poster/PosterWall.vue'), 'utf8'), H)
|
||||
const fails = [...armA(files, callers), ...armB(seriesFor, countries), ...armC(H, states, adm1Ind), ...E.fails]
|
||||
const missing = [...KNOWN_CALLERS, `${STATE_CALLER}#state`].filter((k) => !callers.includes(k))
|
||||
if (missing.length) fails.push(`known callers not found calling makeCountrySheet: ${missing.join(', ')}`)
|
||||
if (fails.length) { fails.forEach((f) => console.log(`FAIL ${f}`)); process.exitCode = 1; return }
|
||||
const ind = seriesFor(countries, countries.find((c) => c.iso3 === 'IND'))
|
||||
console.log(`PASS check:country-sheet-one-path — ${Object.keys(files).length} plugin sources parsed-or-skipped, makeCountrySheet callers: ${callers.join(', ')}; seriesFor over ${countries.length} countries (India ${ind.index} of ${ind.totalLists}); ${H.statesWithPosters(states).length} state posters, series 1..${H.statesWithPosters(states).length}, every outline found`)
|
||||
console.log(`PASS check:country-sheet-one-path — ${Object.keys(files).length} plugin sources parsed-or-skipped, makeCountrySheet callers: ${callers.join(', ')}; seriesFor over ${countries.length} countries (India ${ind.index} of ${ind.totalLists}); ${H.statesWithPosters(states).length} state posters, series 1..${H.statesWithPosters(states).length}, every outline found; sections ${E.order.slice(0, 3).map(([g, t]) => `${g} ${t}`).join(' > ')}`)
|
||||
}
|
||||
|
||||
main().catch((e) => { console.error(`FAIL ${e.stack || e}`); process.exitCode = 1 })
|
||||
|
|
|
|||
BIN
public/dx-maps/assets/posters/india-an.webp
Normal file
|
After Width: | Height: | Size: 89 KiB |
BIN
public/dx-maps/assets/posters/india-ap.webp
Normal file
|
After Width: | Height: | Size: 221 KiB |
BIN
public/dx-maps/assets/posters/india-ar.webp
Normal file
|
After Width: | Height: | Size: 86 KiB |
BIN
public/dx-maps/assets/posters/india-as.webp
Normal file
|
After Width: | Height: | Size: 111 KiB |
BIN
public/dx-maps/assets/posters/india-br.webp
Normal file
|
After Width: | Height: | Size: 112 KiB |
BIN
public/dx-maps/assets/posters/india-ch.webp
Normal file
|
After Width: | Height: | Size: 66 KiB |
BIN
public/dx-maps/assets/posters/india-ct.webp
Normal file
|
After Width: | Height: | Size: 139 KiB |
BIN
public/dx-maps/assets/posters/india-dh.webp
Normal file
|
After Width: | Height: | Size: 72 KiB |
BIN
public/dx-maps/assets/posters/india-dl.webp
Normal file
|
After Width: | Height: | Size: 63 KiB |
BIN
public/dx-maps/assets/posters/india-ga.webp
Normal file
|
After Width: | Height: | Size: 74 KiB |
BIN
public/dx-maps/assets/posters/india-gj.webp
Normal file
|
After Width: | Height: | Size: 220 KiB |
BIN
public/dx-maps/assets/posters/india-hp.webp
Normal file
|
After Width: | Height: | Size: 112 KiB |
BIN
public/dx-maps/assets/posters/india-hr.webp
Normal file
|
After Width: | Height: | Size: 81 KiB |
BIN
public/dx-maps/assets/posters/india-jh.webp
Normal file
|
After Width: | Height: | Size: 96 KiB |
BIN
public/dx-maps/assets/posters/india-jk.webp
Normal file
|
After Width: | Height: | Size: 137 KiB |
BIN
public/dx-maps/assets/posters/india-ka.webp
Normal file
|
After Width: | Height: | Size: 222 KiB |
BIN
public/dx-maps/assets/posters/india-kl.webp
Normal file
|
After Width: | Height: | Size: 216 KiB |
BIN
public/dx-maps/assets/posters/india-la.webp
Normal file
|
After Width: | Height: | Size: 87 KiB |