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