fix(importer,exporter,viewer): islamicart legacy-parity backlog - Epics 10,11,12,13 (#1435)

Commit: 3df594b1a53a721d76b7f2073252bde534d52cdf
Date: 2026-07-06 21:55:33 +0000
Author: PascalHavelange

Commit Message

fix(importer,exporter,viewer): islamicart legacy-parity backlog - Epics 10,11,12,13 (#1435)

* fix(importer): don't drop typed monument/object pictures sharing an image_number

MonumentPictureImporter/ObjectPictureImporter built each picture's identity
from project/institution/number/image_number only, excluding the legacy
`type` column (e.g. 'plan' for monument site plans). A typed picture at the
same image_number as the default photo collided with it and was silently
skipped as an already-imported duplicate - e.g. the Amman Citadel monument's
7th image (a site plan) never made it past the importer. `type` is now only
appended to the identity when non-empty, so default-type pictures keep their
existing backward_compatibility (no regression for already-imported data or
sibling resolvers like thg-theme-item-resolver.ts) while typed pictures get
their own distinct identity.

Epic 10 of the islamicart legacy-parity backlog.

* fix(exporter,viewer): full item description + Artistic Introduction/On display in links

Items cross-catalogued under both the ISL and EPM legacy projects get two
item_translations rows for the same language, by design (contexts are
additive, not overlapping duplicates - ISL's own-context row holds the long
description, EPM's holds the short one). The exporter combined them with
plain overwrite keyed only by item_id+language, so whichever context's row
SQL happened to return last silently won - the Amman Citadel item lost its
long description entirely. The exporter now resolves each item's own project
context and explicitly combines both rows into `description` (own context)
and `short_description` (secondary context, e.g. EPM), instead of overwriting.
ItemDetail.vue renders `short_description`, when present, as a collapsible
"View short description" toggle beneath the main Description, matching
legacy's pc_view_sdesc placement.

Also adds the "Artistic Introduction" and "On display in" (Virtual
Exhibition) item cross-links, previously entirely absent from the item
detail page (only THG gallery cross-links were exported/rendered). No new
export was needed: collections.json already lists each collection's
items[], so "which Artistic Introduction pages / Exhibitions feature this
item" is a client-side reverse lookup over data already loaded for those
features.

Epics 11 and 12 of the islamicart legacy-parity backlog.

* feat(viewer): Dynasties intro text and quick-nav select

The Dynasties landing page showed a generic placeholder paragraph instead of
legacy's full intro text explaining what "Islamic Dynasties" means - that
text has no backing database table/column anywhere in the legacy schema, so
it is hardcoded here (English only; no source text was available for other
languages). Also adds a quick-nav select above the existing dynasty list
(kept as-is) to jump straight to a dynasty'"'"'s detail page, matching legacy'"'"'s
select-and-jump pattern.

Epic 13 of the islamicart legacy-parity backlog.

---------

Co-authored-by: Pascal HAVELANGE <havelangep@hotmail.com>

Files Changed


This documentation was automatically generated from Git commit data.