From ed0a1a57b122bb24bbd40e33ff7b32983297d9b1 Mon Sep 17 00:00:00 2001 From: Doxa Maps Date: Fri, 2 Oct 2026 10:56:43 +0000 Subject: [PATCH] Poster Sections: country presets only until another poster type can load on the page A preset page loads only poster-sections.js, so a preset of a poster type registered by another plugin's script (upg100-list) could only say No posters. The generator now gives no presets to a type whose file is not on the tree, and check:poster-sections fails on any such preset: 9 presets remain (7 regions, all regions, configure). The tree generator writes a page per preset but never deletes one, so the dropped presets' pages (the 10 upg100 ones and countries-other) are removed, and a new arm holds the built preset pages to exactly the presets. --- package.json | 4 +- .../poster-sections.instances.json | 82 +----- .../poster-sections/poster-sections.meta.json | 2 +- .../scripts/check-poster-sections.mjs | 35 ++- .../poster-sections/scripts/gen-presets.mjs | 6 +- public/dx-maps/doxa-maps-spa/manifest.json | 150 ----------- public/dx-maps/manifest.json | 150 ----------- .../countries-other/index.html | 250 ------------------ .../poster-sections/upg100-africa/index.html | 250 ------------------ .../poster-sections/upg100-all/index.html | 250 ------------------ .../upg100-americas/index.html | 250 ------------------ .../upg100-central-asia/index.html | 250 ------------------ .../upg100-china-mongolia/index.html | 250 ------------------ .../poster-sections/upg100-europe/index.html | 250 ------------------ .../poster-sections/upg100-india/index.html | 250 ------------------ .../upg100-middle-east/index.html | 250 ------------------ .../poster-sections/upg100-other/index.html | 250 ------------------ .../upg100-southeast-asia-oceania/index.html | 250 ------------------ 18 files changed, 37 insertions(+), 3142 deletions(-) delete mode 100644 public/dx-maps/poster-sections/poster-sections/countries-other/index.html delete mode 100644 public/dx-maps/poster-sections/poster-sections/upg100-africa/index.html delete mode 100644 public/dx-maps/poster-sections/poster-sections/upg100-all/index.html delete mode 100644 public/dx-maps/poster-sections/poster-sections/upg100-americas/index.html delete mode 100644 public/dx-maps/poster-sections/poster-sections/upg100-central-asia/index.html delete mode 100644 public/dx-maps/poster-sections/poster-sections/upg100-china-mongolia/index.html delete mode 100644 public/dx-maps/poster-sections/poster-sections/upg100-europe/index.html delete mode 100644 public/dx-maps/poster-sections/poster-sections/upg100-india/index.html delete mode 100644 public/dx-maps/poster-sections/poster-sections/upg100-middle-east/index.html delete mode 100644 public/dx-maps/poster-sections/poster-sections/upg100-other/index.html delete mode 100644 public/dx-maps/poster-sections/poster-sections/upg100-southeast-asia-oceania/index.html diff --git a/package.json b/package.json index 6b96fc21c..0f414a863 100644 --- a/package.json +++ b/package.json @@ -701,8 +701,8 @@ "check:side-lanes:self-test": "a poster-render.js copy WITHOUT the lane clamp must make check:side-lanes' crossing arm FAIL on the same seeded data (it does: 36 crossings), so the arm is shown able to fail.", "check:poster-section": "the reusable poster section (): the type registry has 'country'; DX Life's /regions slugs (and every other spelling of a region) each show their countries, every country once; a withheld whole-country poster stays withheld through the type; the element's attributes map to its config; PosterSection.vue injects every name its template uses.", "check:poster-section:self-test": "a registry without 'country', a region key without \"&\" → \"and\", and a section that uses a name it does not inject must each make check:poster-section fail.", - "check:poster-sections": "the Poster Sections page (plugin-designs/poster-sections): every panel choice (each region or All regions, each language, open or collapsed, 1-5 per row) builds tags that the element's own attribute reader turns back into exactly those choices; All regions is one section per region; Copy embed is the bundle script plus those same tags. The presets file holds, per poster type, exactly an all-regions preset plus one per region its adapter's scopes() returns, so a region the data drops (or gains) cannot drift from the presets.", - "check:poster-sections:self-test": "a tag builder that drops columns, one that drops collapsed, one that repeats a region under All regions, and a preset for a region the type does not have must each make check:poster-sections fail.", + "check:poster-sections": "the Poster Sections page (plugin-designs/poster-sections): every panel choice (each region or All regions, each language, open or collapsed, 1-5 per row) builds tags that the element's own attribute reader turns back into exactly those choices; All regions is one section per region; Copy embed is the bundle script plus those same tags. The presets file holds, per poster type, exactly an all-regions preset plus one per region its adapter's scopes() returns, so a region the data drops (or gains) cannot drift from the presets; a poster type not on the tree has no presets (its pages could show no posters); and the built preset pages are exactly the presets (no stale page).", + "check:poster-sections:self-test": "a tag builder that drops columns, one that drops collapsed, one that repeats a region under All regions, a preset for a region the type does not have, and a built page for a preset that no longer exists must each make check:poster-sections fail.", "gen:poster-sections-presets": "writes plugin-designs/poster-sections/poster-sections.instances.json from each poster type's own scopes() (all regions + one preset per region, titled by the type's own section title, then configure); the list check:poster-sections holds the file to.", "check:side-lane-photo-pixels": "BROWSER gate (browser seat; elsewhere 75 NOT MEASURED): the 60x96 side-lane sheet rasterised by poster-raster.js, measured in pixels at every photo slot. A data: photo draws; every photo on its own host stays flat, never the broken-image glyph an external rasterises as.", "check:side-lane-photo-pixels:self-test": "the same raster WITHOUT stripExternalImages must leave the external photo slots NOT flat (the glyph), else the gate proves nothing.", diff --git a/plugin-designs/poster-sections/poster-sections.instances.json b/plugin-designs/poster-sections/poster-sections.instances.json index c439d2377..c84add8cc 100644 --- a/plugin-designs/poster-sections/poster-sections.instances.json +++ b/plugin-designs/poster-sections/poster-sections.instances.json @@ -1,5 +1,5 @@ { - "//": "Presets of the poster-sections parameterized profile (capability 2, the same shape as doxa-simple-map's simple-map.instances.json). ONE profile, one preset per row: a poster type × a region (scope; 'all' = one section per region). The build emits a standalone page and embed snippet per preset at poster-sections/poster-sections//index.html and lists them in manifest.json. Country regions = DX Life's /regions slugs; UPG 100 regions = the upg100-list type's scopes (they show once that type is registered on the page). 'configure' adds the panel of choices and Copy embed, a tool for making new presets.", + "//": "Presets of the poster-sections parameterized profile (capability 2, the same shape as doxa-simple-map's simple-map.instances.json). ONE profile, one preset per row: a poster type × a region (scope; 'all' = one section per region). The build emits a standalone page and embed snippet per preset at poster-sections/poster-sections//index.html and lists them in manifest.json. GENERATED by `bun run gen:poster-sections-presets` from each poster type's own scopes(), and check:poster-sections holds it to them: country posters = DX Life's /regions regions; a type joins once its type file is on the tree and its page can load it. 'configure' adds the panel of choices and Copy embed, a tool for making new presets.", "profile": "poster-sections", "instances": [ { @@ -66,86 +66,6 @@ "scope": "oceania" } }, - { - "id": "upg100-all", - "title": "UPG 100 posters — all regions", - "props": { - "type": "upg100-list", - "scope": "all" - } - }, - { - "id": "upg100-india", - "title": "UPG 100 posters — India", - "props": { - "type": "upg100-list", - "scope": "india" - } - }, - { - "id": "upg100-china-mongolia", - "title": "UPG 100 posters — China + Mongolia", - "props": { - "type": "upg100-list", - "scope": "china-mongolia" - } - }, - { - "id": "upg100-africa", - "title": "UPG 100 posters — Africa", - "props": { - "type": "upg100-list", - "scope": "africa" - } - }, - { - "id": "upg100-middle-east", - "title": "UPG 100 posters — Middle East", - "props": { - "type": "upg100-list", - "scope": "middle-east" - } - }, - { - "id": "upg100-central-asia", - "title": "UPG 100 posters — Central Asia", - "props": { - "type": "upg100-list", - "scope": "central-asia" - } - }, - { - "id": "upg100-southeast-asia-oceania", - "title": "UPG 100 posters — Southeast Asia + Oceania", - "props": { - "type": "upg100-list", - "scope": "southeast-asia-oceania" - } - }, - { - "id": "upg100-americas", - "title": "UPG 100 posters — Americas", - "props": { - "type": "upg100-list", - "scope": "americas" - } - }, - { - "id": "upg100-europe", - "title": "UPG 100 posters — Europe", - "props": { - "type": "upg100-list", - "scope": "europe" - } - }, - { - "id": "upg100-other", - "title": "UPG 100 posters — Other", - "props": { - "type": "upg100-list", - "scope": "other" - } - }, { "id": "configure", "title": "Configure — make a new preset", diff --git a/plugin-designs/poster-sections/poster-sections.meta.json b/plugin-designs/poster-sections/poster-sections.meta.json index ff05bcbce..3fcf7cd72 100644 --- a/plugin-designs/poster-sections/poster-sections.meta.json +++ b/plugin-designs/poster-sections/poster-sections.meta.json @@ -1,4 +1,4 @@ { "label": "Poster Sections — presets", - "note": "One profile, many presets (capability 2): each region's poster section (country posters by DX Life's /regions, UPG 100 posters by its regions), plus all regions, each with its own page and embed snippet in manifest.json. The Configure preset adds a panel of choices and Copy embed for making new presets." + "note": "One profile, many presets (capability 2): each region's poster section (country posters by DX Life's /regions regions), plus all regions, each with its own page and embed snippet in manifest.json. Other poster types join when their type can load on the page. The Configure preset adds a panel of choices and Copy embed for making new presets." } diff --git a/plugin-designs/poster-sections/scripts/check-poster-sections.mjs b/plugin-designs/poster-sections/scripts/check-poster-sections.mjs index daad644c1..dd5a4df40 100644 --- a/plugin-designs/poster-sections/scripts/check-poster-sections.mjs +++ b/plugin-designs/poster-sections/scripts/check-poster-sections.mjs @@ -6,17 +6,19 @@ // are the same tags the page renders. // PRESETS: poster-sections.instances.json has, per poster type, exactly "-all" + one preset per region its // adapter's scopes() returns, no more, no fewer. So a region the data no longer has (a stale "other") or a new one -// cannot drift from the presets. 'country' is always measured; 'upg100-list' once its type file is on the tree. +// cannot drift from the presets. A type whose file is NOT on the tree must have no presets at all (its pages would +// only say "No posters"): 'upg100-list' is listed once its type file is on the tree. +// PAGES: the built preset pages (public//poster-sections/poster-sections//) are exactly the presets: the tree +// generator writes a page per preset but never deletes one, so a dropped preset would leave a stale page behind. // --self-test: a builder that drops `columns`, one that drops `collapsed`, one that repeats a region under All, and a // presets file with a region the type does not have must each FAIL. -import { readdirSync, statSync } from 'node:fs' +import { readFileSync, readdirSync, statSync, existsSync } from 'node:fs' import { join, dirname } from 'node:path' import { fileURLToPath } from 'node:url' // the site's languages = the catalogue's locale folders (library/i18n/index.js needs Vite's import.meta.glob) const LOC = join(dirname(fileURLToPath(import.meta.url)), '../../../library/i18n/locales') const SUPPORTED_LOCALES = readdirSync(LOC).filter((d) => statSync(join(LOC, d)).isDirectory()).sort() import { posterSectionConfig } from '../../../library/elements/posterSectionConfig.js' -import { readFileSync, existsSync } from 'node:fs' import * as real from '../src/embed.js' const ROOT = join(dirname(fileURLToPath(import.meta.url)), '../../..') const PRESETS = JSON.parse(readFileSync(join(ROOT, 'plugin-designs/poster-sections/poster-sections.instances.json'), 'utf8')) @@ -43,7 +45,10 @@ function presetArm(presets, scopesByType) { for (const [type, [prefix]] of Object.entries(TYPES)) { const scopes = scopesByType[type] const ids = presets.instances.filter((i) => i.props && i.props.type === type).map((i) => i.id) - if (scopes == null) continue // the type's file is not on this tree yet + if (scopes == null) { // the type's file is not on this tree: a preset of it could only say "No posters" + if (ids.length) fails.push(`presets for "${type}" exist (${ids.join(', ')}) but its type is not on this tree, so their pages would show no posters`) + continue + } const want = [`${prefix}-all`, ...scopes.map((s) => `${prefix}-${s}`)].sort() const have = [...ids].sort() const extra = have.filter((x) => !want.includes(x)), missing = want.filter((x) => !have.includes(x)) @@ -56,6 +61,23 @@ function presetArm(presets, scopesByType) { return fails } +// The built preset pages, when a tree is built: every folder under poster-sections/poster-sections/ that holds a page. +function builtPages() { + const pub = join(ROOT, 'public') + if (!existsSync(pub)) return null + for (const tree of readdirSync(pub)) { + const dir = join(pub, tree, 'poster-sections', 'poster-sections') + if (existsSync(dir)) return readdirSync(dir).filter((d) => existsSync(join(dir, d, 'index.html'))) + } + return null +} +function pagesArm(presets, pages) { + if (pages == null) return [] + const ids = presets.instances.map((i) => i.id) + const stale = pages.filter((p) => !ids.includes(p)), missing = ids.filter((i) => !pages.includes(i)) + return stale.length || missing.length ? [`built preset pages differ from the presets: stale ${stale.join(', ') || '-'}; missing ${missing.join(', ') || '-'} (delete a dropped preset's page; rebuild the tree for a new one)`] : [] +} + const SCOPES = ['africa', 'asia', 'europe', 'latin-america-and-caribbean', 'middle-east', 'north-america-and-non-spanish-caribbean', 'oceania', 'other'] const fake = (attrs) => ({ getAttribute: (n) => (n in attrs ? attrs[n] : null), hasAttribute: (n) => n in attrs }) @@ -91,6 +113,9 @@ if (process.argv.includes('--self-test')) { } let ok = true const stale = { ...PRESETS, instances: [...PRESETS.instances, { id: 'countries-atlantis', props: { type: 'country', scope: 'atlantis' } }] } + const pg = pagesArm(PRESETS, [...PRESETS.instances.map((i) => i.id), 'countries-atlantis']) + console.log(` mutant "a built page for a preset that no longer exists": ${pg.length ? 'FAILS (good)' : 'PASSES (bad)'}`) + if (!pg.length) ok = false const pf = presetArm(stale, SCOPES_BY_TYPE) console.log(` mutant "a preset for a region the type does not have": ${pf.length ? 'FAILS (good)' : 'PASSES (bad)'}`) if (!pf.length) ok = false @@ -102,7 +127,7 @@ if (process.argv.includes('--self-test')) { console.log(ok ? 'POSTER-SECTIONS SELF-TEST: PASS — every mutant fails the check.' : 'POSTER-SECTIONS SELF-TEST: FAIL') process.exit(ok ? 0 : 1) } -const fails = [...arms(real), ...presetArm(PRESETS, SCOPES_BY_TYPE)] +const fails = [...arms(real), ...presetArm(PRESETS, SCOPES_BY_TYPE), ...pagesArm(PRESETS, builtPages())] const measured = Object.entries(SCOPES_BY_TYPE).filter(([, v]) => v).map(([k, v]) => `${k} ${v.length}`).join(', ') if (fails.length) { console.log(`POSTER-SECTIONS: FAIL (${fails.length})`); fails.forEach((f) => console.log(` - ${f}`)); process.exit(1) } console.log(`POSTER-SECTIONS: PASS — every panel choice (${SCOPES.length + 1} region choices × ${SUPPORTED_LOCALES.length} languages × open/collapsed × 5 per row) reads back through the element unchanged; All regions = one section per region; the snippet is the script + those tags; presets = each type's scopes() + all (${measured}).`) diff --git a/plugin-designs/poster-sections/scripts/gen-presets.mjs b/plugin-designs/poster-sections/scripts/gen-presets.mjs index 944b79906..42641d09d 100644 --- a/plugin-designs/poster-sections/scripts/gen-presets.mjs +++ b/plugin-designs/poster-sections/scripts/gen-presets.mjs @@ -2,8 +2,8 @@ // gen-presets.mjs (bun run gen:poster-sections-presets) — writes poster-sections.instances.json from each poster type's // OWN regions: "-all" plus one preset per scope its adapter's scopes() returns, titled by the type's own // (English) section title, then "configure". The same source check:poster-sections holds the file to, so when the -// data's regions change, running this is the whole fix. A type whose file is not on the tree yet keeps the presets it -// already has. +// data's regions change, running this is the whole fix. A type whose file is not on the tree gets NO presets: its +// pages could only say "No posters". import { readFileSync, writeFileSync, existsSync } from 'node:fs' import { join, dirname } from 'node:path' import { fileURLToPath } from 'node:url' @@ -30,7 +30,7 @@ const english = (key) => { const instances = [] try { for (const { type, prefix, noun, file } of TYPES) { - if (!existsSync(join(ROOT, file))) { instances.push(...old.instances.filter((i) => i.props && i.props.type === type)); continue } + if (!existsSync(join(ROOT, file))) continue const a = (await server.ssrLoadModule(join(ROOT, file))).default instances.push({ id: `${prefix}-all`, title: `${noun} — all regions`, props: { type, scope: 'all' } }) for (const scope of a.scopes()) instances.push({ id: `${prefix}-${scope}`, title: `${noun} — ${a.title(scope, english)}`, props: { type, scope } }) diff --git a/public/dx-maps/doxa-maps-spa/manifest.json b/public/dx-maps/doxa-maps-spa/manifest.json index 7964ced29..81149fa9c 100644 --- a/public/dx-maps/doxa-maps-spa/manifest.json +++ b/public/dx-maps/doxa-maps-spa/manifest.json @@ -1323,156 +1323,6 @@ "iframe": "" } }, - { - "id": "upg100-all", - "title": "UPG 100 posters — all regions", - "apiBaseUrl": "", - "props": { - "profile": "poster-sections", - "type": "upg100-list", - "scope": "all" - }, - "element": "poster-sections", - "iframeUrl": "./poster-sections/poster-sections/upg100-all/index.html", - "embed": { - "iframe": "" - } - }, - { - "id": "upg100-india", - "title": "UPG 100 posters — India", - "apiBaseUrl": "", - "props": { - "profile": "poster-sections", - "type": "upg100-list", - "scope": "india" - }, - "element": "poster-sections", - "iframeUrl": "./poster-sections/poster-sections/upg100-india/index.html", - "embed": { - "iframe": "" - } - }, - { - "id": "upg100-china-mongolia", - "title": "UPG 100 posters — China + Mongolia", - "apiBaseUrl": "", - "props": { - "profile": "poster-sections", - "type": "upg100-list", - "scope": "china-mongolia" - }, - "element": "poster-sections", - "iframeUrl": "./poster-sections/poster-sections/upg100-china-mongolia/index.html", - "embed": { - "iframe": "" - } - }, - { - "id": "upg100-africa", - "title": "UPG 100 posters — Africa", - "apiBaseUrl": "", - "props": { - "profile": "poster-sections", - "type": "upg100-list", - "scope": "africa" - }, - "element": "poster-sections", - "iframeUrl": "./poster-sections/poster-sections/upg100-africa/index.html", - "embed": { - "iframe": "" - } - }, - { - "id": "upg100-middle-east", - "title": "UPG 100 posters — Middle East", - "apiBaseUrl": "", - "props": { - "profile": "poster-sections", - "type": "upg100-list", - "scope": "middle-east" - }, - "element": "poster-sections", - "iframeUrl": "./poster-sections/poster-sections/upg100-middle-east/index.html", - "embed": { - "iframe": "" - } - }, - { - "id": "upg100-central-asia", - "title": "UPG 100 posters — Central Asia", - "apiBaseUrl": "", - "props": { - "profile": "poster-sections", - "type": "upg100-list", - "scope": "central-asia" - }, - "element": "poster-sections", - "iframeUrl": "./poster-sections/poster-sections/upg100-central-asia/index.html", - "embed": { - "iframe": "" - } - }, - { - "id": "upg100-southeast-asia-oceania", - "title": "UPG 100 posters — Southeast Asia + Oceania", - "apiBaseUrl": "", - "props": { - "profile": "poster-sections", - "type": "upg100-list", - "scope": "southeast-asia-oceania" - }, - "element": "poster-sections", - "iframeUrl": "./poster-sections/poster-sections/upg100-southeast-asia-oceania/index.html", - "embed": { - "iframe": "" - } - }, - { - "id": "upg100-americas", - "title": "UPG 100 posters — Americas", - "apiBaseUrl": "", - "props": { - "profile": "poster-sections", - "type": "upg100-list", - "scope": "americas" - }, - "element": "poster-sections", - "iframeUrl": "./poster-sections/poster-sections/upg100-americas/index.html", - "embed": { - "iframe": "" - } - }, - { - "id": "upg100-europe", - "title": "UPG 100 posters — Europe", - "apiBaseUrl": "", - "props": { - "profile": "poster-sections", - "type": "upg100-list", - "scope": "europe" - }, - "element": "poster-sections", - "iframeUrl": "./poster-sections/poster-sections/upg100-europe/index.html", - "embed": { - "iframe": "" - } - }, - { - "id": "upg100-other", - "title": "UPG 100 posters — Other", - "apiBaseUrl": "", - "props": { - "profile": "poster-sections", - "type": "upg100-list", - "scope": "other" - }, - "element": "poster-sections", - "iframeUrl": "./poster-sections/poster-sections/upg100-other/index.html", - "embed": { - "iframe": "" - } - }, { "id": "configure", "title": "Configure — make a new preset", diff --git a/public/dx-maps/manifest.json b/public/dx-maps/manifest.json index 7964ced29..81149fa9c 100644 --- a/public/dx-maps/manifest.json +++ b/public/dx-maps/manifest.json @@ -1323,156 +1323,6 @@ "iframe": "" } }, - { - "id": "upg100-all", - "title": "UPG 100 posters — all regions", - "apiBaseUrl": "", - "props": { - "profile": "poster-sections", - "type": "upg100-list", - "scope": "all" - }, - "element": "poster-sections", - "iframeUrl": "./poster-sections/poster-sections/upg100-all/index.html", - "embed": { - "iframe": "" - } - }, - { - "id": "upg100-india", - "title": "UPG 100 posters — India", - "apiBaseUrl": "", - "props": { - "profile": "poster-sections", - "type": "upg100-list", - "scope": "india" - }, - "element": "poster-sections", - "iframeUrl": "./poster-sections/poster-sections/upg100-india/index.html", - "embed": { - "iframe": "" - } - }, - { - "id": "upg100-china-mongolia", - "title": "UPG 100 posters — China + Mongolia", - "apiBaseUrl": "", - "props": { - "profile": "poster-sections", - "type": "upg100-list", - "scope": "china-mongolia" - }, - "element": "poster-sections", - "iframeUrl": "./poster-sections/poster-sections/upg100-china-mongolia/index.html", - "embed": { - "iframe": "" - } - }, - { - "id": "upg100-africa", - "title": "UPG 100 posters — Africa", - "apiBaseUrl": "", - "props": { - "profile": "poster-sections", - "type": "upg100-list", - "scope": "africa" - }, - "element": "poster-sections", - "iframeUrl": "./poster-sections/poster-sections/upg100-africa/index.html", - "embed": { - "iframe": "" - } - }, - { - "id": "upg100-middle-east", - "title": "UPG 100 posters — Middle East", - "apiBaseUrl": "", - "props": { - "profile": "poster-sections", - "type": "upg100-list", - "scope": "middle-east" - }, - "element": "poster-sections", - "iframeUrl": "./poster-sections/poster-sections/upg100-middle-east/index.html", - "embed": { - "iframe": "" - } - }, - { - "id": "upg100-central-asia", - "title": "UPG 100 posters — Central Asia", - "apiBaseUrl": "", - "props": { - "profile": "poster-sections", - "type": "upg100-list", - "scope": "central-asia" - }, - "element": "poster-sections", - "iframeUrl": "./poster-sections/poster-sections/upg100-central-asia/index.html", - "embed": { - "iframe": "" - } - }, - { - "id": "upg100-southeast-asia-oceania", - "title": "UPG 100 posters — Southeast Asia + Oceania", - "apiBaseUrl": "", - "props": { - "profile": "poster-sections", - "type": "upg100-list", - "scope": "southeast-asia-oceania" - }, - "element": "poster-sections", - "iframeUrl": "./poster-sections/poster-sections/upg100-southeast-asia-oceania/index.html", - "embed": { - "iframe": "" - } - }, - { - "id": "upg100-americas", - "title": "UPG 100 posters — Americas", - "apiBaseUrl": "", - "props": { - "profile": "poster-sections", - "type": "upg100-list", - "scope": "americas" - }, - "element": "poster-sections", - "iframeUrl": "./poster-sections/poster-sections/upg100-americas/index.html", - "embed": { - "iframe": "" - } - }, - { - "id": "upg100-europe", - "title": "UPG 100 posters — Europe", - "apiBaseUrl": "", - "props": { - "profile": "poster-sections", - "type": "upg100-list", - "scope": "europe" - }, - "element": "poster-sections", - "iframeUrl": "./poster-sections/poster-sections/upg100-europe/index.html", - "embed": { - "iframe": "" - } - }, - { - "id": "upg100-other", - "title": "UPG 100 posters — Other", - "apiBaseUrl": "", - "props": { - "profile": "poster-sections", - "type": "upg100-list", - "scope": "other" - }, - "element": "poster-sections", - "iframeUrl": "./poster-sections/poster-sections/upg100-other/index.html", - "embed": { - "iframe": "" - } - }, { "id": "configure", "title": "Configure — make a new preset", diff --git a/public/dx-maps/poster-sections/poster-sections/countries-other/index.html b/public/dx-maps/poster-sections/poster-sections/countries-other/index.html deleted file mode 100644 index d269e384d..000000000 --- a/public/dx-maps/poster-sections/poster-sections/countries-other/index.html +++ /dev/null @@ -1,250 +0,0 @@ - - - - - - - - Country posters — Other · poster-sections - - - - - -
-
loading…
- - - - - - - - diff --git a/public/dx-maps/poster-sections/poster-sections/upg100-africa/index.html b/public/dx-maps/poster-sections/poster-sections/upg100-africa/index.html deleted file mode 100644 index 657dd3d78..000000000 --- a/public/dx-maps/poster-sections/poster-sections/upg100-africa/index.html +++ /dev/null @@ -1,250 +0,0 @@ - - - - - - - - UPG 100 posters — Africa · poster-sections - - - - - -
-
loading…
- - - - - - - - diff --git a/public/dx-maps/poster-sections/poster-sections/upg100-all/index.html b/public/dx-maps/poster-sections/poster-sections/upg100-all/index.html deleted file mode 100644 index fe1a88407..000000000 --- a/public/dx-maps/poster-sections/poster-sections/upg100-all/index.html +++ /dev/null @@ -1,250 +0,0 @@ - - - - - - - - UPG 100 posters — all regions · poster-sections - - - - - -
-
loading…
- - - - - - - - diff --git a/public/dx-maps/poster-sections/poster-sections/upg100-americas/index.html b/public/dx-maps/poster-sections/poster-sections/upg100-americas/index.html deleted file mode 100644 index 2329fda5d..000000000 --- a/public/dx-maps/poster-sections/poster-sections/upg100-americas/index.html +++ /dev/null @@ -1,250 +0,0 @@ - - - - - - - - UPG 100 posters — Americas · poster-sections - - - - - -
-
loading…
- - - - - - - - diff --git a/public/dx-maps/poster-sections/poster-sections/upg100-central-asia/index.html b/public/dx-maps/poster-sections/poster-sections/upg100-central-asia/index.html deleted file mode 100644 index 34aaffbf0..000000000 --- a/public/dx-maps/poster-sections/poster-sections/upg100-central-asia/index.html +++ /dev/null @@ -1,250 +0,0 @@ - - - - - - - - UPG 100 posters — Central Asia · poster-sections - - - - - -
-
loading…
- - - - - - - - diff --git a/public/dx-maps/poster-sections/poster-sections/upg100-china-mongolia/index.html b/public/dx-maps/poster-sections/poster-sections/upg100-china-mongolia/index.html deleted file mode 100644 index c5a01933c..000000000 --- a/public/dx-maps/poster-sections/poster-sections/upg100-china-mongolia/index.html +++ /dev/null @@ -1,250 +0,0 @@ - - - - - - - - UPG 100 posters — China + Mongolia · poster-sections - - - - - -
-
loading…
- - - - - - - - diff --git a/public/dx-maps/poster-sections/poster-sections/upg100-europe/index.html b/public/dx-maps/poster-sections/poster-sections/upg100-europe/index.html deleted file mode 100644 index ec900e9b8..000000000 --- a/public/dx-maps/poster-sections/poster-sections/upg100-europe/index.html +++ /dev/null @@ -1,250 +0,0 @@ - - - - - - - - UPG 100 posters — Europe · poster-sections - - - - - -
-
loading…
- - - - - - - - diff --git a/public/dx-maps/poster-sections/poster-sections/upg100-india/index.html b/public/dx-maps/poster-sections/poster-sections/upg100-india/index.html deleted file mode 100644 index 8a9df82c7..000000000 --- a/public/dx-maps/poster-sections/poster-sections/upg100-india/index.html +++ /dev/null @@ -1,250 +0,0 @@ - - - - - - - - UPG 100 posters — India · poster-sections - - - - - -
-
loading…
- - - - - - - - diff --git a/public/dx-maps/poster-sections/poster-sections/upg100-middle-east/index.html b/public/dx-maps/poster-sections/poster-sections/upg100-middle-east/index.html deleted file mode 100644 index 4b7d4d8ef..000000000 --- a/public/dx-maps/poster-sections/poster-sections/upg100-middle-east/index.html +++ /dev/null @@ -1,250 +0,0 @@ - - - - - - - - UPG 100 posters — Middle East · poster-sections - - - - - -
-
loading…
- - - - - - - - diff --git a/public/dx-maps/poster-sections/poster-sections/upg100-other/index.html b/public/dx-maps/poster-sections/poster-sections/upg100-other/index.html deleted file mode 100644 index 49146994a..000000000 --- a/public/dx-maps/poster-sections/poster-sections/upg100-other/index.html +++ /dev/null @@ -1,250 +0,0 @@ - - - - - - - - UPG 100 posters — Other · poster-sections - - - - - -
-
loading…
- - - - - - - - diff --git a/public/dx-maps/poster-sections/poster-sections/upg100-southeast-asia-oceania/index.html b/public/dx-maps/poster-sections/poster-sections/upg100-southeast-asia-oceania/index.html deleted file mode 100644 index c2e9173d9..000000000 --- a/public/dx-maps/poster-sections/poster-sections/upg100-southeast-asia-oceania/index.html +++ /dev/null @@ -1,250 +0,0 @@ - - - - - - - - UPG 100 posters — Southeast Asia + Oceania · poster-sections - - - - - -
-
loading…
- - - - - - - -