From 576307938935c18595865b5696eff2327f09cedd Mon Sep 17 00:00:00 2001 From: Flavien VIDAL Date: Tue, 26 May 2026 15:28:03 +0200 Subject: [PATCH 1/3] SCENARIO: Title of each glose that makes up a hexapla should be displayed (see #425). Co-authored-by: Arthur DE PETIGNY --- frontend/scenarios/link_document.feature | 2 ++ 1 file changed, 2 insertions(+) diff --git a/frontend/scenarios/link_document.feature b/frontend/scenarios/link_document.feature index f6090714..83d29732 100644 --- a/frontend/scenarios/link_document.feature +++ b/frontend/scenarios/link_document.feature @@ -23,6 +23,8 @@ Scénario: pour le comparer avec un autre Et une session active avec mon compte Quand je réutilise mon document reconnaissable en tant que glose de citation et que je me focalise dessus Alors la colonne 1 contient "Il était une fois une veuve" + Et l'entête de la colonne 1 est "Les fées (Charles Perrault)" + Et l'entête de la colonne 2 est "A tündérek (Charles Perrault)" Et la colonne 2 contient "Volt egyszer egy özvegyasszony" Et la colonne 2 contient "MÁSIK TANULSÁG" From db51f92d69dd7c0b80315e0f31d61ee1a0aff117 Mon Sep 17 00:00:00 2001 From: Flavien VIDAL Date: Tue, 26 May 2026 15:49:26 +0200 Subject: [PATCH 2/3] TEST: Title of each glose that makes up a hexapla should be displayed (see #425). Co-authored-by: Arthur DE PETIGNY --- frontend/tests/outcome.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/frontend/tests/outcome.js b/frontend/tests/outcome.js index 8a1940f0..8695057a 100644 --- a/frontend/tests/outcome.js +++ b/frontend/tests/outcome.js @@ -210,6 +210,10 @@ Alors("la colonne {int} contient {string}", (column, text) => { cy.contains(`.lectern .main .col .col:nth-child(${column})`, text); }); +Alors("l'entête de la colonne {int} est {string}", (column, text) => { + cy.contains(`.lectern .row .main .col .row .col:nth-child(${column}) span.work`, text); +}); + Alors("les métadonnées de la glose en mode édition contiennent {string}", (metadata) => { cy.get('.editable.metadata').click(); cy.editable_metadata_contains(metadata); From 38dc99e69a115d91677fd6e7cb5234be87c8d189 Mon Sep 17 00:00:00 2001 From: VIALAMorgane Date: Tue, 2 Jun 2026 16:59:54 +0200 Subject: [PATCH 3/3] FIX: Title of each glose that makes up a hexapla should be displayed (see #425). Co-authored-by: Gabriel DOSNE --- frontend/src/components/OpenedDocuments.jsx | 2 +- frontend/src/components/Passage.jsx | 25 ++++++++++++++++++--- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/frontend/src/components/OpenedDocuments.jsx b/frontend/src/components/OpenedDocuments.jsx index afc10f2e..0ca31c9a 100644 --- a/frontend/src/components/OpenedDocuments.jsx +++ b/frontend/src/components/OpenedDocuments.jsx @@ -34,7 +34,7 @@ function OpenedDocuments({id, margin, metadata, parallelDocuments, rawEditMode, {parallelDocuments.passages.map(({rubric, source, scholia}, i) => ) } diff --git a/frontend/src/components/Passage.jsx b/frontend/src/components/Passage.jsx index d2325cbb..f3957dbe 100644 --- a/frontend/src/components/Passage.jsx +++ b/frontend/src/components/Passage.jsx @@ -10,7 +10,7 @@ import EditableText from '../components/EditableText'; import DiscreeteDropdown from './DiscreeteDropdown'; import CommentFragmentAction from '../menu-items/CommentFragmentAction'; -function Passage({source, rubric, scholia, margin, sourceId, isComposite, rawEditMode, setRawEditMode, backend, setLastUpdate, user}) { +function Passage({source, metadata, rubric, scholia, margin, sourceId, isComposite, rawEditMode, setRawEditMode, backend, setLastUpdate, user}) { const [selectedText, setSelectedText] = useState(); const [highlightedText, setHighlightedText] = useState(''); const [fragment, setFragment] = useState(); @@ -31,7 +31,7 @@ function Passage({source, rubric, scholia, margin, sourceId, isComposite, rawEdi {!isFromScratch && - + {source} @@ -44,15 +44,34 @@ function Passage({source, rubric, scholia, margin, sourceId, isComposite, rawEdi ); } -function PassageSource({children, isComposite, highlightedText, setHighlightedText, setFragment, selectedText, setSelectedText, margin}) { +function PassageSource({children, metadata, isComposite, highlightedText, setHighlightedText, setFragment, selectedText, setSelectedText, margin, rubric}) { + const compositeTitleStyle = {color: 'crimson', textAlign: 'left'}; const styleOdd = {borderLeft: '1px #AAA solid', backgroundColor: '#efefef'}; const styleEven = {borderLeft: '1px #AAA solid', backgroundColor: '#f8f8ff'}; + let format = (actors, prefix = '', suffix = '') => + actors && (prefix + [actors].flat().join(' & ') + suffix); + let getCaption = (dc_title, dc_spatial, actors, prefix = '', suffix = '') => dc_title + (dc_spatial ? `, ${dc_spatial} ` : ' ') + (format(actors, prefix, suffix)); + let documentsMetadata = metadata.forwardLinkedDocuments; // Can be undefined ! + if (documentsMetadata !== undefined) { + documentsMetadata = documentsMetadata.filter(doc => 'dc_title' in doc); + } + console.log(JSON.stringify(documentsMetadata)); return ( {isComposite ? ( {children.map((chunk, index) => + {(rubric === '0' || rubric == null) && documentsMetadata !== undefined ? ( +
+ + {documentsMetadata[index] !== undefined ? ( + getCaption(documentsMetadata[index].dc_title, documentsMetadata[index].dc_spatial, documentsMetadata[index].dc_creator, '(', ')') + ) : ('')} + +
+ ) : (null) + } {chunk}