PDF-export: tijdlijn-rail is geen doorlopende lijn — segmenten haken niet in op kaarten van variabele hoogte #1724
Labels
No labels
accepted
bug
declined
docs
duplicate
enhancement
good first issue
in-progress
needs-info
privacy
security
triage
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
LibreKAT/Ocideck#1724
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Wat is het probleem?
Bij de PDF-export van een documenttijdlijn loopt de verticale rail (de "ruggraat") niet als één doorlopende lijn van het eerste naar het laatste event. De lijn bestaat uit losse segmenten per event, en tussen events met kaarten van verschillende hoogte ontstaan zichtbare onderbrekingen. Op het scherm is de rail wel een ononderbroken lijn.
Hoe te reproduceren
Verwacht gedrag
De verticale rail is een doorlopende lijn, net als op het scherm (
lib/widgets/reader/parts/document_markdown_timeline.dart). De lijn verbindt alle bolletjes zonder onderbreking, ongeacht de hoogte van de individuele kaarten.Werkelijk gedrag
De rail bestaat uit vaste segmenten per event (bovenste segment
size * 0.8, bolletje-rijsize * 0.86, onderste segmentsize * 3.1), met een totale vaste hoogte van~4.76 * size. Omdat deRowCrossAxisAlignment.startgebruikt, rekt de rail-kolom niet mee met de kaart ernaast. Wanneer een kaart hoger is dan de vaste rail-hoogte, ontstaat een gap tussen het einde van het onderste segment en het begin van het bovenste segment van het volgende event.Root cause
lib/services/pdf/document_pdf_timeline.dart, functie_event():Rowop regel 46 gebruiktCrossAxisAlignment.start— de rail-kolom rekt niet mee met de kaart.size * 3.1in plaats van de resterende ruimte te vullen.size * 0.8.Op het scherm (
document_markdown_timeline.dart) lost hetzelfde probleem door:IntrinsicHeight+RowmetCrossAxisAlignment.stretch(regel 26-28) — de rail rekt mee met de kaart.Positionedmettop: timelineFirst ? 23 : 0enbottom: timelineLast ? null : 0(regels 39-47) — hij vult de volledige hoogte van elk event en verbindt zo met het volgende.Voorgestelde oplossing
Vervang het onderste segment door een
Expandedwidget zodat het de resterende ruimte vult, en gebruikCrossAxisAlignment.stretchop deRow(of een vergelijkbare constructie die de rail-kolom de volledige kaarthoogte laat vullen). Het bovenste segment van het volgende event begint dan direct waar het onderste segment van het vorige event eindigt, waardoor de lijn doorloopt.Voorbeeld
In de bijgevoegde PDF (Incidentrapport RWM) is de tijdlijn te zien op pagina's 7-12. De rail toont duidelijke onderbrekingen tussen events met kaarten van verschillende hoogte.
Labels
bug, accepted