Fix label position for image and person actors
This commit is contained in:
parent
6b467095ae
commit
1a87a188b6
1 changed files with 16 additions and 5 deletions
|
|
@ -8,6 +8,7 @@ import (
|
||||||
"oss.terrastruct.com/util-go/go2"
|
"oss.terrastruct.com/util-go/go2"
|
||||||
|
|
||||||
"oss.terrastruct.com/d2/d2graph"
|
"oss.terrastruct.com/d2/d2graph"
|
||||||
|
"oss.terrastruct.com/d2/d2target"
|
||||||
"oss.terrastruct.com/d2/lib/geo"
|
"oss.terrastruct.com/d2/lib/geo"
|
||||||
"oss.terrastruct.com/d2/lib/label"
|
"oss.terrastruct.com/d2/lib/label"
|
||||||
"oss.terrastruct.com/d2/lib/shape"
|
"oss.terrastruct.com/d2/lib/shape"
|
||||||
|
|
@ -108,11 +109,18 @@ func (sd *sequenceDiagram) layout() {
|
||||||
// placeActors places actors bottom aligned, side by side
|
// placeActors places actors bottom aligned, side by side
|
||||||
func (sd *sequenceDiagram) placeActors() {
|
func (sd *sequenceDiagram) placeActors() {
|
||||||
x := 0.
|
x := 0.
|
||||||
for _, actors := range sd.actors {
|
for _, actor := range sd.actors {
|
||||||
yOffset := sd.maxActorHeight - actors.Height
|
shape := actor.Attributes.Shape.Value
|
||||||
actors.TopLeft = geo.NewPoint(x, yOffset)
|
var yOffset float64
|
||||||
x += actors.Width + sd.actorXStep
|
if shape == d2target.ShapeImage || shape == d2target.ShapePerson {
|
||||||
actors.LabelPosition = go2.Pointer(string(label.InsideMiddleCenter))
|
actor.LabelPosition = go2.Pointer(string(label.OutsideBottomCenter))
|
||||||
|
yOffset = sd.maxActorHeight - actor.Height - float64(*actor.LabelHeight)
|
||||||
|
} else {
|
||||||
|
actor.LabelPosition = go2.Pointer(string(label.InsideMiddleCenter))
|
||||||
|
yOffset = sd.maxActorHeight - actor.Height
|
||||||
|
}
|
||||||
|
actor.TopLeft = geo.NewPoint(x, yOffset)
|
||||||
|
x += actor.Width + sd.actorXStep
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -129,6 +137,9 @@ func (sd *sequenceDiagram) addLifelineEdges() {
|
||||||
for _, actor := range sd.actors {
|
for _, actor := range sd.actors {
|
||||||
actorBottom := actor.Center()
|
actorBottom := actor.Center()
|
||||||
actorBottom.Y = actor.TopLeft.Y + actor.Height
|
actorBottom.Y = actor.TopLeft.Y + actor.Height
|
||||||
|
if *actor.LabelPosition == string(label.OutsideBottomCenter) {
|
||||||
|
actorBottom.Y += float64(*actor.LabelHeight)
|
||||||
|
}
|
||||||
actorLifelineEnd := actor.Center()
|
actorLifelineEnd := actor.Center()
|
||||||
actorLifelineEnd.Y = endY
|
actorLifelineEnd.Y = endY
|
||||||
sd.lifelines = append(sd.lifelines, &d2graph.Edge{
|
sd.lifelines = append(sd.lifelines, &d2graph.Edge{
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue