diff --git a/d2exporter/export_test.go b/d2exporter/export_test.go index 70c02c210..d0fac1189 100644 --- a/d2exporter/export_test.go +++ b/d2exporter/export_test.go @@ -8,6 +8,7 @@ import ( "cdr.dev/slog" + tassert "github.com/stretchr/testify/assert" "oss.terrastruct.com/util-go/assert" "oss.terrastruct.com/util-go/diff" @@ -80,6 +81,23 @@ y: {shape: square} } }, }, + { + name: "sequence_group_position", + + dsl: `hey { + shape: sequence_diagram + a + b + group: { + a -> b + } +} +`, + assertions: func(t *testing.T, d *d2target.Diagram) { + tassert.Equal(t, "hey.group", d.Shapes[3].ID) + tassert.Equal(t, "INSIDE_TOP_LEFT", d.Shapes[3].LabelPosition) + }, + }, } runa(t, tcs) diff --git a/d2layouts/d2sequence/sequence_diagram.go b/d2layouts/d2sequence/sequence_diagram.go index 258428975..1058d6037 100644 --- a/d2layouts/d2sequence/sequence_diagram.go +++ b/d2layouts/d2sequence/sequence_diagram.go @@ -74,6 +74,7 @@ func newSequenceDiagram(objects []*d2graph.Object, messages []*d2graph.Edge) *se // Groups may have more nested groups for len(queue) > 0 { curr := queue[0] + curr.LabelPosition = go2.Pointer(string(label.InsideTopLeft)) groups = append(groups, curr) queue = queue[1:] queue = append(queue, curr.ChildrenArray...) diff --git a/e2etests/testdata/stable/sequence_diagram_groups/dagre/board.exp.json b/e2etests/testdata/stable/sequence_diagram_groups/dagre/board.exp.json index 270198f16..776b8ddfb 100644 --- a/e2etests/testdata/stable/sequence_diagram_groups/dagre/board.exp.json +++ b/e2etests/testdata/stable/sequence_diagram_groups/dagre/board.exp.json @@ -198,6 +198,7 @@ "underline": false, "labelWidth": 30, "labelHeight": 26, + "labelPosition": "INSIDE_TOP_LEFT", "zIndex": 3, "level": 1 }, @@ -237,6 +238,7 @@ "underline": false, "labelWidth": 57, "labelHeight": 26, + "labelPosition": "INSIDE_TOP_LEFT", "zIndex": 3, "level": 1 }, @@ -276,6 +278,7 @@ "underline": false, "labelWidth": 78, "labelHeight": 26, + "labelPosition": "INSIDE_TOP_LEFT", "zIndex": 3, "level": 2 }, @@ -315,6 +318,7 @@ "underline": false, "labelWidth": 58, "labelHeight": 26, + "labelPosition": "INSIDE_TOP_LEFT", "zIndex": 3, "level": 1 }, @@ -394,6 +398,7 @@ "underline": false, "labelWidth": 38, "labelHeight": 26, + "labelPosition": "INSIDE_TOP_LEFT", "zIndex": 3, "level": 1 }, diff --git a/e2etests/testdata/stable/sequence_diagram_groups/dagre/sketch.exp.svg b/e2etests/testdata/stable/sequence_diagram_groups/dagre/sketch.exp.svg index 0afcfd18a..d3ed45a1a 100644 --- a/e2etests/testdata/stable/sequence_diagram_groups/dagre/sketch.exp.svg +++ b/e2etests/testdata/stable/sequence_diagram_groups/dagre/sketch.exp.svg @@ -18,13 +18,13 @@ width="1147" height="2268" viewBox="-76 -26 1147 2268">abcdggggroup 1group bchoonested guy lalaeyokayokaywhat would arnold saythis note +abcdggggroup 1group bchoonested guy lalaeyokayokaywhat would arnold saythis note - - - - - + + + + + diff --git a/e2etests/testdata/stable/sequence_diagram_groups/elk/board.exp.json b/e2etests/testdata/stable/sequence_diagram_groups/elk/board.exp.json index 270198f16..776b8ddfb 100644 --- a/e2etests/testdata/stable/sequence_diagram_groups/elk/board.exp.json +++ b/e2etests/testdata/stable/sequence_diagram_groups/elk/board.exp.json @@ -198,6 +198,7 @@ "underline": false, "labelWidth": 30, "labelHeight": 26, + "labelPosition": "INSIDE_TOP_LEFT", "zIndex": 3, "level": 1 }, @@ -237,6 +238,7 @@ "underline": false, "labelWidth": 57, "labelHeight": 26, + "labelPosition": "INSIDE_TOP_LEFT", "zIndex": 3, "level": 1 }, @@ -276,6 +278,7 @@ "underline": false, "labelWidth": 78, "labelHeight": 26, + "labelPosition": "INSIDE_TOP_LEFT", "zIndex": 3, "level": 2 }, @@ -315,6 +318,7 @@ "underline": false, "labelWidth": 58, "labelHeight": 26, + "labelPosition": "INSIDE_TOP_LEFT", "zIndex": 3, "level": 1 }, @@ -394,6 +398,7 @@ "underline": false, "labelWidth": 38, "labelHeight": 26, + "labelPosition": "INSIDE_TOP_LEFT", "zIndex": 3, "level": 1 }, diff --git a/e2etests/testdata/stable/sequence_diagram_groups/elk/sketch.exp.svg b/e2etests/testdata/stable/sequence_diagram_groups/elk/sketch.exp.svg index 0afcfd18a..d3ed45a1a 100644 --- a/e2etests/testdata/stable/sequence_diagram_groups/elk/sketch.exp.svg +++ b/e2etests/testdata/stable/sequence_diagram_groups/elk/sketch.exp.svg @@ -18,13 +18,13 @@ width="1147" height="2268" viewBox="-76 -26 1147 2268">abcdggggroup 1group bchoonested guy lalaeyokayokaywhat would arnold saythis note +abcdggggroup 1group bchoonested guy lalaeyokayokaywhat would arnold saythis note - - - - - + + + + + diff --git a/e2etests/testdata/stable/sequence_diagram_nested_groups/dagre/board.exp.json b/e2etests/testdata/stable/sequence_diagram_nested_groups/dagre/board.exp.json index 21f56fb8a..772cc63c2 100644 --- a/e2etests/testdata/stable/sequence_diagram_nested_groups/dagre/board.exp.json +++ b/e2etests/testdata/stable/sequence_diagram_nested_groups/dagre/board.exp.json @@ -158,6 +158,7 @@ "underline": false, "labelWidth": 160, "labelHeight": 26, + "labelPosition": "INSIDE_TOP_LEFT", "zIndex": 3, "level": 1 }, @@ -197,6 +198,7 @@ "underline": false, "labelWidth": 238, "labelHeight": 26, + "labelPosition": "INSIDE_TOP_LEFT", "zIndex": 3, "level": 2 }, @@ -236,6 +238,7 @@ "underline": false, "labelWidth": 173, "labelHeight": 26, + "labelPosition": "INSIDE_TOP_LEFT", "zIndex": 3, "level": 3 }, @@ -275,6 +278,7 @@ "underline": false, "labelWidth": 77, "labelHeight": 26, + "labelPosition": "INSIDE_TOP_LEFT", "zIndex": 3, "level": 4 }, @@ -354,6 +358,7 @@ "underline": false, "labelWidth": 41, "labelHeight": 26, + "labelPosition": "INSIDE_TOP_LEFT", "zIndex": 3, "level": 5 }, @@ -393,6 +398,7 @@ "underline": false, "labelWidth": 24, "labelHeight": 26, + "labelPosition": "INSIDE_TOP_LEFT", "zIndex": 3, "level": 1 }, @@ -432,6 +438,7 @@ "underline": false, "labelWidth": 47, "labelHeight": 26, + "labelPosition": "INSIDE_TOP_LEFT", "zIndex": 3, "level": 2 }, @@ -471,6 +478,7 @@ "underline": false, "labelWidth": 47, "labelHeight": 26, + "labelPosition": "INSIDE_TOP_LEFT", "zIndex": 3, "level": 2 }, @@ -510,6 +518,7 @@ "underline": false, "labelWidth": 47, "labelHeight": 26, + "labelPosition": "INSIDE_TOP_LEFT", "zIndex": 3, "level": 2 }, @@ -549,6 +558,7 @@ "underline": false, "labelWidth": 47, "labelHeight": 26, + "labelPosition": "INSIDE_TOP_LEFT", "zIndex": 3, "level": 2 }, diff --git a/e2etests/testdata/stable/sequence_diagram_nested_groups/dagre/sketch.exp.svg b/e2etests/testdata/stable/sequence_diagram_nested_groups/dagre/sketch.exp.svg index 0dbb0afaa..48b328e86 100644 --- a/e2etests/testdata/stable/sequence_diagram_nested_groups/dagre/sketch.exp.svg +++ b/e2etests/testdata/stable/sequence_diagram_nested_groups/dagre/sketch.exp.svg @@ -18,18 +18,18 @@ width="1116" height="2458" viewBox="-197 -26 1116 2458">abjust an actorthis is a message groupaltand this is a nested message groupcase 1case 2case 3case 4what about more nestingcrazy townwhoa a notea note here to remember that padding must consider notes toojustalongnotehere +abjust an actorthis is a message groupaltand this is a nested message groupcase 1case 2case 3case 4what about more nestingcrazy townwhoa a notea note here to remember that padding must consider notes toojustalongnotehere - - - - - - - - - - + + + + + + + + + + abjust an actorthis is a message groupaltand this is a nested message groupcase 1case 2case 3case 4what about more nestingcrazy townwhoa a notea note here to remember that padding must consider notes toojustalongnotehere +abjust an actorthis is a message groupaltand this is a nested message groupcase 1case 2case 3case 4what about more nestingcrazy townwhoa a notea note here to remember that padding must consider notes toojustalongnotehere - - - - - - - - - - + + + + + + + + + + How this is renderedCLId2astd2compilerd2layoutd2exporterd2themesd2rendererd2sequencelayoutd2dagrelayoutonly if root is not sequence '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 SVGmeasurements also take place +How this is renderedCLId2astd2compilerd2layoutd2exporterd2themesd2rendererd2sequencelayoutd2dagrelayoutonly if root is not sequence '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 SVGmeasurements also take place - + diff --git a/e2etests/testdata/stable/sequence_diagram_real/elk/board.exp.json b/e2etests/testdata/stable/sequence_diagram_real/elk/board.exp.json index d20a6d846..3945edf3f 100644 --- a/e2etests/testdata/stable/sequence_diagram_real/elk/board.exp.json +++ b/e2etests/testdata/stable/sequence_diagram_real/elk/board.exp.json @@ -478,6 +478,7 @@ "underline": false, "labelWidth": 185, "labelHeight": 26, + "labelPosition": "INSIDE_TOP_LEFT", "zIndex": 3, "level": 2 }, diff --git a/e2etests/testdata/stable/sequence_diagram_real/elk/sketch.exp.svg b/e2etests/testdata/stable/sequence_diagram_real/elk/sketch.exp.svg index 364fb5549..5f4dd359a 100644 --- a/e2etests/testdata/stable/sequence_diagram_real/elk/sketch.exp.svg +++ b/e2etests/testdata/stable/sequence_diagram_real/elk/sketch.exp.svg @@ -18,9 +18,9 @@ width="2447" height="2536" viewBox="-88 -88 2447 2536">How this is renderedCLId2astd2compilerd2layoutd2exporterd2themesd2rendererd2sequencelayoutd2dagrelayoutonly if root is not sequence '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 SVGmeasurements also take place +How this is renderedCLId2astd2compilerd2layoutd2exporterd2themesd2rendererd2sequencelayoutd2dagrelayoutonly if root is not sequence '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 SVGmeasurements also take place - + diff --git a/e2etests/testdata/todo/sequence_diagram_actor_padding_nested_groups/dagre/board.exp.json b/e2etests/testdata/todo/sequence_diagram_actor_padding_nested_groups/dagre/board.exp.json index c0f384c07..d20401f87 100644 --- a/e2etests/testdata/todo/sequence_diagram_actor_padding_nested_groups/dagre/board.exp.json +++ b/e2etests/testdata/todo/sequence_diagram_actor_padding_nested_groups/dagre/board.exp.json @@ -158,6 +158,7 @@ "underline": false, "labelWidth": 160, "labelHeight": 26, + "labelPosition": "INSIDE_TOP_LEFT", "zIndex": 3, "level": 1 }, @@ -197,6 +198,7 @@ "underline": false, "labelWidth": 238, "labelHeight": 26, + "labelPosition": "INSIDE_TOP_LEFT", "zIndex": 3, "level": 2 }, @@ -236,6 +238,7 @@ "underline": false, "labelWidth": 173, "labelHeight": 26, + "labelPosition": "INSIDE_TOP_LEFT", "zIndex": 3, "level": 3 }, @@ -275,6 +278,7 @@ "underline": false, "labelWidth": 21, "labelHeight": 26, + "labelPosition": "INSIDE_TOP_LEFT", "zIndex": 3, "level": 4 }, @@ -314,6 +318,7 @@ "underline": false, "labelWidth": 21, "labelHeight": 26, + "labelPosition": "INSIDE_TOP_LEFT", "zIndex": 3, "level": 5 } diff --git a/e2etests/testdata/todo/sequence_diagram_actor_padding_nested_groups/dagre/sketch.exp.svg b/e2etests/testdata/todo/sequence_diagram_actor_padding_nested_groups/dagre/sketch.exp.svg index 288cab1f2..5bcd47f78 100644 --- a/e2etests/testdata/todo/sequence_diagram_actor_padding_nested_groups/dagre/sketch.exp.svg +++ b/e2etests/testdata/todo/sequence_diagram_actor_padding_nested_groups/dagre/sketch.exp.svg @@ -18,13 +18,13 @@ width="921" height="1242" viewBox="-147 -26 921 1242">bacthis is a message groupand this is a nested message groupwhat about more nestingyoyo +bacthis is a message groupand this is a nested message groupwhat about more nestingyoyo - - - - - + + + + + bacthis is a message groupand this is a nested message groupwhat about more nestingyoyo +bacthis is a message groupand this is a nested message groupwhat about more nestingyoyo - - - - - + + + + +