UPG-100's and Simple Research's popups show the packet and the card deck

UPG-100's info popup lists its Middle East Core poster, then the full packet's 12 pages and the 70-card
deck (upg100's pre-generated files). Simple Research shows the same 12 pages, captioned "Example
packet: Middle East Core": same renderer, method and 'full' variant, but a UPG-100 zone's data, so it
is labelled as an example rather than passed off as a Simple Research selection.
This commit is contained in:
Doxa Maps 2026-09-29 22:18:35 +00:00
parent 04cf5ea9e6
commit 8e081cea44

View file

@ -24,21 +24,30 @@
* button goes to the start (placement 'top-left', which MapInfo resolves to the logical start, so
* Arabic mirrors); Gospel's panel spans to 345px of 390, so its button takes the corner above the
* zoom column. Measured with the same probe at 390 in en and ar.
* ★ ADD AN EXAMPLE ONLY WHEN ITS FILE IS IN THE TREE. A missing file renders the popup's "not
* available" box in front of the audience; an example that is not there yet is simply left out.
* ★ AN EXAMPLE'S FILES SHIP WITH IT. MapInfo drops an example whose lead image fails to load (quietly,
* title and all), so a link can land before its files; but a popup is only worth opening once they are
* in the tree, so land the two together.
* ★ KEYS MUST NOT CONTAIN A DOT beyond the area separator: the gallery has no vue-i18n, so MapInfo
* resolves through tStatic, which splits the path on "." and would never find a sentence-shaped key.
*/
// The UPG-100 zone's pre-generated packet ('full' variant) and card deck, shot once and shared: Simple
// Research's packet is the same renderer, method and variant (usePosterPrints.printPacket, 'full'), so it
// shows these pages too, CAPTIONED as an example zone, because their data is a UPG-100 zone and not a
// Simple Research selection.
const MEC = 'previews/examples/middle-east-core'
const MEC_PAGES = Array.from({ length: 12 }, (_, i) => `${MEC}/packet-p${String(i + 1).padStart(2, '0')}.webp`)
const MEC_CARDS = Array.from({ length: 70 }, (_, i) => `${MEC}/card-${String(i + 1).padStart(2, '0')}.webp`)
export const TAB_INFO = {
'upg-100': {
storageKey: 'upg-100',
pos: { side: '56px', narrow: { placement: 'top-left', side: '12px' } },
leadKey: 'mapInfo.tab.upg-100.lead',
takeawayKey: 'mapInfo.tab.upg-100.takeaway',
// The packet pages (12) and the card deck (70) join this list when their pre-generated shots land
// in assets/previews/examples/middle-east-core/.
examples: [
{ kind: 'image', src: 'previews/middle-east-core.webp', full: 'posters/middle-east-core.html' },
{ kind: 'pages', pages: MEC_PAGES },
{ kind: 'deck', cards: MEC_CARDS },
],
},
'regions-dashboard': {
@ -87,7 +96,10 @@ export const TAB_INFO = {
pos: { top: '56px', side: '56px' },
leadKey: 'mapInfo.tab.research-map-plus-grid.lead',
takeawayKey: 'mapInfo.tab.research-map-plus-grid.takeaway',
examples: [],
// Its own poster joins when rega's shot is in the tree.
examples: [
{ kind: 'pages', pages: MEC_PAGES, titleKey: 'mapInfo.tab.research-map-plus-grid.examplePacket' },
],
},
'prayer-map': {
storageKey: 'prayer-map',