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
- 📝 Modified:
scripts/exporter/src/exporters/item-exporter.ts - 📝 Modified:
scripts/importer/src/importers/phase-02/monument-picture-importer.ts - 📝 Modified:
scripts/importer/src/importers/phase-02/object-picture-importer.ts - 📝 Modified:
scripts/importer/tests/unit/monument-picture-importer.test.ts - 📝 Modified:
scripts/viewer/src/composables/useInventoryData.js - 📝 Modified:
scripts/viewer/src/views/Dynasties.vue - 📝 Modified:
scripts/viewer/src/views/ItemDetail.vue
Links
This documentation was automatically generated from Git commit data.