Restore /zeitstrahl Datum-mode visual fidelity to the Concept-A spec (#833) #836

Merged
marcel merged 23 commits from feat/issue-833-zeitstrahl-fidelity into main 2026-06-14 14:12:42 +02:00
2 changed files with 26 additions and 2 deletions
Showing only changes of commit 9665c9c0fc - Show all commits

View File

@@ -18,8 +18,13 @@ const metaLine = $derived.by(() => {
if (meta.firstYear !== null && meta.lastYear !== null) {
segments.push(`${meta.firstYear}${meta.lastYear}`);
}
segments.push(m.timeline_letters_count({ count: meta.letterCount }));
segments.push(m.timeline_events_count({ count: meta.eventCount }));
// A zero-count segment ("0 Briefe") reads as a data error — drop it.
if (meta.letterCount > 0) {
segments.push(m.timeline_letters_count({ count: meta.letterCount }));
}
if (meta.eventCount > 0) {
segments.push(m.timeline_events_count({ count: meta.eventCount }));
}
segments.push(m.timeline_grouping_date());
return segments.join(' · ');
});

View File

@@ -75,4 +75,23 @@ describe('/zeitstrahl page', () => {
render(Page, { data: pageData(makeTimelineDTO()) });
expect(document.querySelector('[data-testid="timeline-meta"]')).toBeNull();
});
it('drops the letters segment instead of showing "0 Briefe" (REQ-002)', () => {
render(Page, {
data: pageData(makeTimelineDTO({ years: [makeYear(1914, [event('Geburt')])] }))
});
const sub = document.querySelector('[data-testid="timeline-meta"]');
expect(sub).not.toBeNull();
expect(sub?.textContent).not.toContain(m.timeline_letters_count({ count: 0 }));
expect(sub?.textContent).toContain(m.timeline_grouping_date());
});
it('drops the events segment instead of showing "0 Ereignisse" (REQ-002)', () => {
render(Page, {
data: pageData(makeTimelineDTO({ undated: [makeEntry({ documentId: 'u1' })] }))
});
const sub = document.querySelector('[data-testid="timeline-meta"]');
expect(sub).not.toBeNull();
expect(sub?.textContent).not.toContain(m.timeline_events_count({ count: 0 }));
});
});