diff --git a/d2layouts/d2sequence/sequence_diagram.go b/d2layouts/d2sequence/sequence_diagram.go index 4e981c6d9..3df170756 100644 --- a/d2layouts/d2sequence/sequence_diagram.go +++ b/d2layouts/d2sequence/sequence_diagram.go @@ -220,12 +220,12 @@ func newSequenceDiagram(objects []*d2graph.Object, messages []*d2graph.Edge) *se func (sd *sequenceDiagram) layout() error { sd.placeActors() + sd.placeNotes() if err := sd.routeMessages(); err != nil { return err } sd.placeSpans() sd.adjustRouteEndpoints() - sd.placeNotes() sd.placeGroups() sd.addLifelineEdges() return nil @@ -457,13 +457,15 @@ func (sd *sequenceDiagram) placeSpans() { // routeMessages routes horizontal edges (messages) from Src to Dst lifeline (actor/span center) // in another step, routes are adjusted to spans borders when necessary func (sd *sequenceDiagram) routeMessages() error { - startY := sd.maxActorHeight + sd.yStep + messageOffset := sd.maxActorHeight + sd.yStep for _, message := range sd.messages { + noteOffset := 0. for _, note := range sd.notes { if sd.verticalIndices[note.AbsID()] < sd.verticalIndices[message.AbsID()] { - startY += note.Height + sd.yStep + noteOffset += note.Height + sd.yStep } } + startY := messageOffset + noteOffset message.ZIndex = 2 var startX, endX float64 @@ -496,7 +498,7 @@ func (sd *sequenceDiagram) routeMessages() error { geo.NewPoint(endX, startY), } } - startY += sd.yStep + messageOffset += sd.yStep if message.Attributes.Label.Value != "" { message.LabelPosition = go2.Pointer(string(label.InsideMiddleCenter)) diff --git a/e2etests/testdata/stable/sequence_diagram_note/dagre/board.exp.json b/e2etests/testdata/stable/sequence_diagram_note/dagre/board.exp.json index cf9724d68..f00b769be 100644 --- a/e2etests/testdata/stable/sequence_diagram_note/dagre/board.exp.json +++ b/e2etests/testdata/stable/sequence_diagram_note/dagre/board.exp.json @@ -420,11 +420,11 @@ "route": [ { "x": 875, - "y": 1905 + "y": 1393 }, { "x": 475, - "y": 1905 + "y": 1393 } ], "animated": false, @@ -463,7 +463,7 @@ }, { "x": 75, - "y": 2035 + "y": 1779 } ], "animated": false, @@ -502,7 +502,7 @@ }, { "x": 475, - "y": 2035 + "y": 1779 } ], "animated": false, @@ -541,7 +541,7 @@ }, { "x": 875, - "y": 2035 + "y": 1779 } ], "animated": false, @@ -580,7 +580,7 @@ }, { "x": 1275, - "y": 2035 + "y": 1779 } ], "animated": false, diff --git a/e2etests/testdata/stable/sequence_diagram_note/dagre/sketch.exp.svg b/e2etests/testdata/stable/sequence_diagram_note/dagre/sketch.exp.svg index 5bf192089..0b2920bdb 100644 --- a/e2etests/testdata/stable/sequence_diagram_note/dagre/sketch.exp.svg +++ b/e2etests/testdata/stable/sequence_diagram_note/dagre/sketch.exp.svg @@ -2,7 +2,7 @@ abcdexplanationanother explanationSome one who believes imaginary things appear right before your i's.The earth is like a tiny grain of sand, only much, much heavier okay + + abcdexplanationanother explanationSome one who believes imaginary things appear right before your i's.The earth is like a tiny grain of sand, only much, much heavier okay - - +abcdexplanationanother explanationSome one who believes imaginary things appear right before your i's.The earth is like a tiny grain of sand, only much, much heavier okay + + How this is renderedCLId2astd2compilerd2layoutd2exporterd2themesd2rendererd2sequencelayoutd2dagrelayoutmeasurements also take place 'How this is rendered: {...}'tokenized ASTcompile ASTobjects and edgesrun layout enginesrun engine on shape: sequence_diagram, temporarily removerun core engine on rest add back in sequence diagramsdiagram with correct positions and dimensionsexport diagram with chosen theme and rendererget theme stylesrender to SVGresulting SVG - +How this is renderedCLId2astd2compilerd2layoutd2exporterd2themesd2rendererd2sequencelayoutd2dagrelayoutmeasurements also take place 'How this is rendered: {...}'tokenized ASTcompile ASTobjects and edgesrun layout enginesrun engine on shape: sequence_diagram, temporarily removerun core engine on rest add back in sequence diagramsdiagram with correct positions and dimensionsexport diagram with chosen theme and rendererget theme stylesrender to SVGresulting SVG + - - - - - - - - - + + + + + + + + + How this is renderedCLId2astd2compilerd2layoutd2exporterd2themesd2rendererd2sequencelayoutd2dagrelayoutmeasurements also take place 'How this is rendered: {...}'tokenized ASTcompile ASTobjects and edgesrun layout enginesrun engine on shape: sequence_diagram, temporarily removerun core engine on rest add back in sequence diagramsdiagram with correct positions and dimensionsexport diagram with chosen theme and rendererget theme stylesrender to SVGresulting SVG - +How this is renderedCLId2astd2compilerd2layoutd2exporterd2themesd2rendererd2sequencelayoutd2dagrelayoutmeasurements also take place 'How this is rendered: {...}'tokenized ASTcompile ASTobjects and edgesrun layout enginesrun engine on shape: sequence_diagram, temporarily removerun core engine on rest add back in sequence diagramsdiagram with correct positions and dimensionsexport diagram with chosen theme and rendererget theme stylesrender to SVGresulting SVG + - - - - - - - - - + + + + + + + + +