From c765298e396ca9aa2aa81c30f6a7b791a9adcfe8 Mon Sep 17 00:00:00 2001 From: Alexander Wang Date: Sun, 4 Dec 2022 21:57:59 -0800 Subject: [PATCH] nested group styling --- d2graph/d2graph.go | 10 +++++++++- d2graph/seqdiagram.go | 12 +++++++----- d2layouts/d2sequence/sequence_diagram.go | 3 +-- d2themes/d2themes.go | 3 +++ .../sequence_diagram_groups/dagre/board.exp.json | 2 +- .../sequence_diagram_groups/dagre/sketch.exp.svg | 2 +- .../sequence_diagram_groups/elk/board.exp.json | 2 +- .../sequence_diagram_groups/elk/sketch.exp.svg | 2 +- 8 files changed, 24 insertions(+), 12 deletions(-) diff --git a/d2graph/d2graph.go b/d2graph/d2graph.go index 7c320856b..d9a96d83a 100644 --- a/d2graph/d2graph.go +++ b/d2graph/d2graph.go @@ -330,13 +330,21 @@ func (l ContainerLevel) LabelSize() int { } func (obj *Object) GetFill(theme *d2themes.Theme) string { + level := int(obj.Level()) if obj.Parent.IsSequenceDiagram() { return theme.Colors.B5 } else if obj.IsSequenceDiagramNote() { return theme.Colors.Neutrals.N7 + } else if obj.IsSequenceDiagramGroup() { + sd := obj.outerSequenceDiagram() + // Alternate + if (level-int(sd.Level()))%2 == 0 { + return theme.Colors.Neutrals.N7 + } else { + return theme.Colors.Neutrals.N6 + } } - level := int(obj.Level()) shape := obj.Attributes.Shape.Value if shape == "" || strings.EqualFold(shape, d2target.ShapeSquare) || strings.EqualFold(shape, d2target.ShapeCircle) || strings.EqualFold(shape, d2target.ShapeOval) || strings.EqualFold(shape, d2target.ShapeRectangle) { diff --git a/d2graph/seqdiagram.go b/d2graph/seqdiagram.go index bf89b0f70..fbd4d4bb6 100644 --- a/d2graph/seqdiagram.go +++ b/d2graph/seqdiagram.go @@ -18,15 +18,18 @@ func (obj *Object) outerSequenceDiagram() *Object { // groups are objects in sequence diagrams that have no messages connected // and does not have a note as a child (a note can appear within a group, but it's a child of an actor) -func (obj *Object) IsSequenceDiagramGroup(edges []*Edge) bool { - for _, e := range edges { +func (obj *Object) IsSequenceDiagramGroup() bool { + if obj.outerSequenceDiagram() == nil { + return false + } + for _, e := range obj.Graph.Edges { if e.Src == obj || e.Dst == obj { return false } } for _, ch := range obj.ChildrenArray { // if the child contains a message, it's a span, not a note - if !ch.ContainsAnyEdge(edges) { + if !ch.ContainsAnyEdge(obj.Graph.Edges) { return false } } @@ -35,8 +38,7 @@ func (obj *Object) IsSequenceDiagramGroup(edges []*Edge) bool { // notes are descendant of actors with no edges and no children func (obj *Object) IsSequenceDiagramNote() bool { - sd := obj.outerSequenceDiagram() - if sd == nil { + if obj.outerSequenceDiagram() == nil { return false } return !obj.hasEdgeRef() && !obj.ContainsAnyEdge(obj.Graph.Edges) && len(obj.ChildrenArray) == 0 diff --git a/d2layouts/d2sequence/sequence_diagram.go b/d2layouts/d2sequence/sequence_diagram.go index 8a4385103..9edcf2d72 100644 --- a/d2layouts/d2sequence/sequence_diagram.go +++ b/d2layouts/d2sequence/sequence_diagram.go @@ -65,7 +65,7 @@ func newSequenceDiagram(objects []*d2graph.Object, messages []*d2graph.Edge) *se var groups []*d2graph.Object for _, obj := range objects { - if obj.IsSequenceDiagramGroup(messages) { + if obj.IsSequenceDiagramGroup() { queue := []*d2graph.Object{obj} // Groups may have more nested groups for len(queue) > 0 { @@ -175,7 +175,6 @@ func (sd *sequenceDiagram) layout() error { func (sd *sequenceDiagram) placeGroups() { for _, group := range sd.groups { group.ZIndex = GROUP_Z_INDEX - // group.Attributes.Style.Opacity = &d2graph.Scalar{Value: "0.5"} sd.placeGroup(group) } } diff --git a/d2themes/d2themes.go b/d2themes/d2themes.go index c5217c592..64510eb2f 100644 --- a/d2themes/d2themes.go +++ b/d2themes/d2themes.go @@ -14,6 +14,7 @@ type Neutral struct { N3 string `json:"n3"` N4 string `json:"n4"` N5 string `json:"n5"` + N6 string `json:"n6"` N7 string `json:"n7"` } @@ -44,6 +45,7 @@ var CoolNeutral = Neutral{ N3: "#9499AB", N4: "#CFD2DD", N5: "#F0F3F9", + N6: "#EEF1F8", N7: "#FFFFFF", } @@ -53,5 +55,6 @@ var WarmNeutral = Neutral{ N3: "#787777", N4: "#CCCACA", N5: "#DFDCDC", + N6: "#ECEBEB", N7: "#FFFFFF", } 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 1eada8b3a..9a6740045 100644 --- a/e2etests/testdata/stable/sequence_diagram_groups/dagre/board.exp.json +++ b/e2etests/testdata/stable/sequence_diagram_groups/dagre/board.exp.json @@ -246,7 +246,7 @@ "strokeDash": 0, "strokeWidth": 2, "borderRadius": 0, - "fill": "#EDF0FD", + "fill": "#FFFFFF", "stroke": "#0D32B2", "shadow": false, "3d": false, 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 5b76838f8..b569a7a6e 100644 --- a/e2etests/testdata/stable/sequence_diagram_groups/dagre/sketch.exp.svg +++ b/e2etests/testdata/stable/sequence_diagram_groups/dagre/sketch.exp.svg @@ -14,7 +14,7 @@ width="1069" height="2311" viewBox="-100 -50 1069 2311">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 1eada8b3a..9a6740045 100644 --- a/e2etests/testdata/stable/sequence_diagram_groups/elk/board.exp.json +++ b/e2etests/testdata/stable/sequence_diagram_groups/elk/board.exp.json @@ -246,7 +246,7 @@ "strokeDash": 0, "strokeWidth": 2, "borderRadius": 0, - "fill": "#EDF0FD", + "fill": "#FFFFFF", "stroke": "#0D32B2", "shadow": false, "3d": false, 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 5b76838f8..b569a7a6e 100644 --- a/e2etests/testdata/stable/sequence_diagram_groups/elk/sketch.exp.svg +++ b/e2etests/testdata/stable/sequence_diagram_groups/elk/sketch.exp.svg @@ -14,7 +14,7 @@ width="1069" height="2311" viewBox="-100 -50 1069 2311">abcdggggroup 1group bchoonested guy lalaeyokayokaywhat would arnold saythis note +abcdggggroup 1group bchoonested guy lalaeyokayokaywhat would arnold saythis note