Merge pull request #820 from alixander/fix-dagre-disconnect
fix dagre disconnect edge case
This commit is contained in:
commit
ba35a3173f
7 changed files with 3318 additions and 1 deletions
|
|
@ -3,3 +3,5 @@
|
||||||
#### Improvements 🧹
|
#### Improvements 🧹
|
||||||
|
|
||||||
#### Bugfixes ⛑️
|
#### Bugfixes ⛑️
|
||||||
|
|
||||||
|
- Fixes edge case where layouts with dagre show a connection from the bottom side of shapes being slightly disconnected from the shape. [#820](https://github.com/terrastruct/d2/pull/820)
|
||||||
|
|
|
||||||
|
|
@ -350,7 +350,8 @@ func Layout(ctx context.Context, g *d2graph.Graph, opts *ConfigurableOpts) (err
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
// Edge should only move if it's not connected to the bottom side of the shrinking container
|
// Edge should only move if it's not connected to the bottom side of the shrinking container
|
||||||
return p.Y != obj.TopLeft.Y+obj.Height
|
// Give some margin for error
|
||||||
|
return !(obj.TopLeft.Y+obj.Height-1 <= p.Y && obj.TopLeft.Y+obj.Height+1 >= p.Y && p.X != obj.TopLeft.X && p.X != (obj.TopLeft.X+obj.Width))
|
||||||
}
|
}
|
||||||
for _, e := range g.Edges {
|
for _, e := range g.Edges {
|
||||||
if _, ok := movedEdges[e]; ok {
|
if _, ok := movedEdges[e]; ok {
|
||||||
|
|
|
||||||
|
|
@ -489,6 +489,32 @@ group: {
|
||||||
}
|
}
|
||||||
&foo
|
&foo
|
||||||
&&bar
|
&&bar
|
||||||
|
`,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "dagre-disconnect",
|
||||||
|
script: `a: {
|
||||||
|
k.t -> f.i
|
||||||
|
f.g -> _.s.n
|
||||||
|
}
|
||||||
|
k
|
||||||
|
k.s <-> u.o
|
||||||
|
h.m.s -> a.f.g
|
||||||
|
|
||||||
|
a.f.j -> u.s.j
|
||||||
|
u: {
|
||||||
|
c -> _.s.z.c
|
||||||
|
}
|
||||||
|
|
||||||
|
s: {
|
||||||
|
n: {
|
||||||
|
style.stroke: red
|
||||||
|
f
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
s.n -> y.r: {style.stroke-width: 8; style.stroke: red}
|
||||||
|
y.r -> a.g.i: 1\n2\n3\n4
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
||||||
1722
e2etests/testdata/regression/dagre-disconnect/dagre/board.exp.json
generated
vendored
Normal file
1722
e2etests/testdata/regression/dagre-disconnect/dagre/board.exp.json
generated
vendored
Normal file
File diff suppressed because it is too large
Load diff
66
e2etests/testdata/regression/dagre-disconnect/dagre/sketch.exp.svg
vendored
Normal file
66
e2etests/testdata/regression/dagre-disconnect/dagre/sketch.exp.svg
vendored
Normal file
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 802 KiB |
1434
e2etests/testdata/regression/dagre-disconnect/elk/board.exp.json
generated
vendored
Normal file
1434
e2etests/testdata/regression/dagre-disconnect/elk/board.exp.json
generated
vendored
Normal file
File diff suppressed because it is too large
Load diff
66
e2etests/testdata/regression/dagre-disconnect/elk/sketch.exp.svg
vendored
Normal file
66
e2etests/testdata/regression/dagre-disconnect/elk/sketch.exp.svg
vendored
Normal file
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 801 KiB |
Loading…
Reference in a new issue