Opening a card's Prayer List or Card Deck chooser warms what its print will need (the people groups, and for the packet the sheet's boundaries and engine), so the print after the choice skips those loads; browsing alone loads nothing extra
This commit is contained in:
parent
19bce9aa94
commit
48e3d92e32
2 changed files with 18 additions and 0 deletions
|
|
@ -112,6 +112,9 @@ const props = defineProps({
|
|||
// async (item, format) => a map SHEET generated now (packet/posterSheets.js); tried first for the poster
|
||||
// print and the packet's page 1. usePosterPrints' sheet.
|
||||
sheet: { type: Function, default: null },
|
||||
// (item, which) => void: start the loads a print of this item will need, called when the reader OPENS a print
|
||||
// chooser (the Prayer List packets, the Card Deck sizes): an intent moment before the tap, so the print skips them.
|
||||
prewarm: { type: Function, default: null },
|
||||
// Card stock for the deck print, when this wall offers one. See card-render.js
|
||||
// STOCK — both orientations are available. This is the DEFAULT selection.
|
||||
cardStock: { type: String, default: 'poker' },
|
||||
|
|
@ -782,6 +785,10 @@ const deckKey = (id, which) => `${id}:${which}`
|
|||
function toggleDeck(id, ev, which = 'deck') {
|
||||
const key = deckKey(id, which)
|
||||
deckOpenFor.value = deckOpenFor.value === key ? null : key
|
||||
if (deckOpenFor.value === key && props.prewarm) {
|
||||
const item = (props.items || []).find((x) => x && x.id === id)
|
||||
if (item) { try { props.prewarm(item, which) } catch (_) { /* a warm-up is only a head start */ } }
|
||||
}
|
||||
// Tell the size row how far down to start: the print row's REAL height, which is
|
||||
// one line in en and two in the long-label locales. Walking up from the clicked
|
||||
// button to its own .pfs keeps this correct per card rather than per wall.
|
||||
|
|
|
|||
|
|
@ -191,6 +191,16 @@ const countryOnlySheet = (card, format, opts) => sheetForRecord(byId.get(card.id
|
|||
const stateSheet = makeIndiaStateSheet({
|
||||
records: recordsFor, assetsBase: () => assetsBase.value, states: () => indiaStates.value, region: INDIA_REGION,
|
||||
})
|
||||
// ★ WARM ON INTENT: opening a card's Prayer List or Card Deck chooser starts that card's people groups (the cached
|
||||
// provider the print then reads) and, for the packet, whose page 1 is the country sheet, the sheet's boundaries and
|
||||
// engine (warmSheet), so the print after the choice skips those loads. Never on browsing alone, never for a withheld card.
|
||||
function prewarmPrint(card, which) {
|
||||
if (!card || card.noGroups || rowsWithheld(card) || posterWithheld(card)) return
|
||||
const rows = card.indiaState ? (card.slugs && card.slugs.length ? recordsFor({ type: 'pg_slugs', values: card.slugs }) : null)
|
||||
: (card.iso3 ? recordsFor({ type: 'country', values: [card.iso3] }) : null)
|
||||
if (rows && rows.catch) rows.catch(() => {})
|
||||
if (which === 'packet') import('@map/packet/posterSheets.js').then((m) => m.warmSheet && m.warmSheet(assetsBase.value)).catch(() => {})
|
||||
}
|
||||
const countrySheet = (card, format, opts) => (card.indiaState ? stateSheet(card, format, opts) : countryOnlySheet(card, format, opts))
|
||||
// The name table the generated sheet was labelled from, so a packet in another language relabels page 1's
|
||||
// country names (the same seam the UPG-100 wall passes).
|
||||
|
|
@ -274,6 +284,7 @@ const soonMessage = computed(() => t('messages.countryWallSoon'))
|
|||
:records="countryRecords"
|
||||
:card-stocks="true"
|
||||
:sheet="countrySheet"
|
||||
:prewarm="prewarmPrint"
|
||||
:iso3-names="iso3Names"
|
||||
:map-image="countryMap"
|
||||
:collapsible="!filtered"
|
||||
|
|
|
|||
Loading…
Reference in a new issue