only add message offset after loops in another group
This commit is contained in:
parent
576c8df2c8
commit
74b0ed2064
2 changed files with 19 additions and 1 deletions
|
|
@ -97,3 +97,10 @@ func (e *Edge) ContainedBy(obj *Object) bool {
|
||||||
}
|
}
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (e *Edge) GetGroup() *Object {
|
||||||
|
for _, ref := range e.References {
|
||||||
|
return ref.ScopeObj
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -445,6 +445,8 @@ func (sd *sequenceDiagram) placeSpans() {
|
||||||
// routeMessages routes horizontal edges (messages) from Src to Dst lifeline (actor/span center)
|
// routeMessages routes horizontal edges (messages) from Src to Dst lifeline (actor/span center)
|
||||||
// in another step, routes are adjusted to spans borders when necessary
|
// in another step, routes are adjusted to spans borders when necessary
|
||||||
func (sd *sequenceDiagram) routeMessages() error {
|
func (sd *sequenceDiagram) routeMessages() error {
|
||||||
|
var lastIsLoop bool
|
||||||
|
var lastGroup *d2graph.Object
|
||||||
messageOffset := sd.maxActorHeight + sd.yStep
|
messageOffset := sd.maxActorHeight + sd.yStep
|
||||||
for _, message := range sd.messages {
|
for _, message := range sd.messages {
|
||||||
message.ZIndex = MESSAGE_Z_INDEX
|
message.ZIndex = MESSAGE_Z_INDEX
|
||||||
|
|
@ -454,6 +456,14 @@ func (sd *sequenceDiagram) routeMessages() error {
|
||||||
noteOffset += note.Height + sd.yStep
|
noteOffset += note.Height + sd.yStep
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// we need extra space if the last message was a loop in a different group
|
||||||
|
group := message.GetGroup()
|
||||||
|
if lastIsLoop && lastGroup != group {
|
||||||
|
messageOffset += MIN_MESSAGE_DISTANCE
|
||||||
|
}
|
||||||
|
lastGroup = group
|
||||||
|
|
||||||
startY := messageOffset + noteOffset
|
startY := messageOffset + noteOffset
|
||||||
|
|
||||||
var startX, endX float64
|
var startX, endX float64
|
||||||
|
|
@ -490,12 +500,13 @@ func (sd *sequenceDiagram) routeMessages() error {
|
||||||
geo.NewPoint(midX, endY),
|
geo.NewPoint(midX, endY),
|
||||||
geo.NewPoint(endX, endY),
|
geo.NewPoint(endX, endY),
|
||||||
}
|
}
|
||||||
messageOffset += MIN_MESSAGE_DISTANCE
|
lastIsLoop = true
|
||||||
} else {
|
} else {
|
||||||
message.Route = []*geo.Point{
|
message.Route = []*geo.Point{
|
||||||
geo.NewPoint(startX, startY),
|
geo.NewPoint(startX, startY),
|
||||||
geo.NewPoint(endX, startY),
|
geo.NewPoint(endX, startY),
|
||||||
}
|
}
|
||||||
|
lastIsLoop = false
|
||||||
}
|
}
|
||||||
messageOffset += sd.yStep
|
messageOffset += sd.yStep
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue