doxa-maps/library/components/poster
Doxa Maps 14f4cb2d9d A long map-poster render shows its progress, an honest time, and why it failed
rega's poster-path timings: A4 300 dpi ~42 s, 24x36 in at 150 dpi 90-135 s,
24x36 in at 300 dpi ~4 min. Through all of it PosterDialog showed an
internal phase name ("hidden-map"), a bar measuring only the current phase
(so it restarted and sat still), and English. A failed render, including a
canvas too large for the device, went only to the console: the status block
vanished and the reader was told nothing.

- The bar follows the composable's overall, monotonic percent; beside it,
  the time elapsed (ticking) and, while stitching, "tile n of total".
- An honest expectation for the chosen size, from its megapixels: "up to a
  minute" from 5 MP (A4 300 dpi, 8.7 MP), "a few minutes" from 15 MP (24x36
  in 150 dpi, 19.4 MP, and up). A4 at 150 dpi (2.2 MP, 11 s) shows none.
- A failure is shown in the dialog: a specific message when the device ran
  out of memory (an oversized canvas or encode), a general one otherwise,
  nothing when the reader cancelled (AbortError).
- The Render button's labels and the "(optional)" placeholder go through
  T() too. 9 poster.* keys in 11 locales, using the dialog's own terms.
2026-09-29 10:07:29 +00:00
..
slots consolidate docs into documentation/ and deployment shells into deployment/ 2026-09-21 23:23:23 +00:00
PosterDialog.vue A long map-poster render shows its progress, an honest time, and why it failed 2026-09-29 10:07:29 +00:00
PosterPreview.vue The last of the shared-library English: legend, poster preview and tab loading states 2026-09-26 13:04:16 +00:00
PosterWall.vue Speak the reader's language on the UPG-100 map, its wall and the print HUD 2026-09-29 08:33:43 +00:00
README.md consolidate docs into documentation/ and deployment shells into deployment/ 2026-09-21 23:23:23 +00:00

library/components/poster/ — poster export UI

The dialog and preview surfaces that turn a live map into a printable poster. Used by research-map.vue.

  PosterDialog.vue   ← pick size, orientation, title → export
  PosterPreview.vue  ← live preview, updates as you change settings
  PosterWall.vue     ← grid of poster previews
  slots/             ← the composable regions of a poster (own README)
        fed by useMapPoster() · sizes from constants/posterSizes.js
  • Open/close state comes from inject('uiStore'); the preview is fed by useMapPoster().
  • Page sizes: library/constants/posterSizes.js. Defaults: library/constants/posterDefaults.js.

Full wiring + slot contract: ../../../documentation/architecture/components.md.