Merge pull request #1011 from alixander/dagre-rank

dagre: improve inter-container connections
This commit is contained in:
Alexander Wang 2023-03-09 19:49:53 -08:00 committed by GitHub
commit e02f1c38d9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
15 changed files with 613 additions and 544 deletions

View file

@ -2,6 +2,8 @@
#### Improvements 🧹 #### Improvements 🧹
- `dagre` layouts that have a connection where one endpoint is a container is much improved. [#1011](https://github.com/terrastruct/d2/pull/1011)
#### Bugfixes ⛑️ #### Bugfixes ⛑️
- Fixes `d2` erroring on malformed user paths (`fdopendir` error). [util-go#10](https://github.com/terrastruct/util-go/pull/10) - Fixes `d2` erroring on malformed user paths (`fdopendir` error). [util-go#10](https://github.com/terrastruct/util-go/pull/10)

View file

@ -177,11 +177,27 @@ func Layout(ctx context.Context, g *d2graph.Graph, opts *ConfigurableOpts) (err
// we will chop the edge where it intersects the container border so it only shows the edge from the container // we will chop the edge where it intersects the container border so it only shows the edge from the container
src := edge.Src src := edge.Src
for len(src.Children) > 0 && src.Class == nil && src.SQLTable == nil { for len(src.Children) > 0 && src.Class == nil && src.SQLTable == nil {
src = src.ChildrenArray[0] // We want to get the bottom node of sources, setting its rank higher than all children
src = getLongestEdgeChainTail(g, src)
} }
dst := edge.Dst dst := edge.Dst
for len(dst.Children) > 0 && dst.Class == nil && dst.SQLTable == nil { for len(dst.Children) > 0 && dst.Class == nil && dst.SQLTable == nil {
dst = dst.ChildrenArray[0] dst = dst.ChildrenArray[0]
// We want to get the top node of destinations
for _, child := range dst.ChildrenArray {
isHead := true
for _, e := range g.Edges {
if inContainer(e.Src, child) != nil && inContainer(e.Dst, dst) != nil {
isHead = false
break
}
}
if isHead {
dst = child
break
}
}
} }
if edge.SrcArrow && !edge.DstArrow { if edge.SrcArrow && !edge.DstArrow {
// for `b <- a`, edge.Edge is `a -> b` and we expect this routing result // for `b <- a`, edge.Edge is `a -> b` and we expect this routing result
@ -550,3 +566,66 @@ func generateAddParentLine(childID, parentID string) string {
func generateAddEdgeLine(fromID, toID, edgeID string, width, height int) string { func generateAddEdgeLine(fromID, toID, edgeID string, width, height int) string {
return fmt.Sprintf("g.setEdge({v:`%s`, w:`%s`, name:`%s`}, { width:%d, height:%d, labelpos: `c` });\n", escapeID(fromID), escapeID(toID), escapeID(edgeID), width, height) return fmt.Sprintf("g.setEdge({v:`%s`, w:`%s`, name:`%s`}, { width:%d, height:%d, labelpos: `c` });\n", escapeID(fromID), escapeID(toID), escapeID(edgeID), width, height)
} }
// getLongestEdgeChainTail gets the node at the end of the longest edge chain, because that will be the end of the container
// and is what external connections should connect with
func getLongestEdgeChainTail(g *d2graph.Graph, container *d2graph.Object) *d2graph.Object {
rank := make(map[*d2graph.Object]int)
for _, obj := range container.ChildrenArray {
isHead := true
for _, e := range g.Edges {
if inContainer(e.Src, container) != nil && inContainer(e.Dst, obj) != nil {
isHead = false
break
}
}
if !isHead {
continue
}
rank[obj] = 1
// BFS
queue := []*d2graph.Object{obj}
visited := make(map[*d2graph.Object]struct{})
for len(queue) > 0 {
curr := queue[0]
queue = queue[1:]
if _, ok := visited[curr]; ok {
continue
}
visited[curr] = struct{}{}
for _, e := range g.Edges {
child := inContainer(e.Dst, container)
if child == curr {
continue
}
if child != nil && inContainer(e.Src, curr) != nil {
rank[child] = go2.Max(rank[child], rank[curr]+1)
queue = append(queue, child)
}
}
}
}
max := int(math.MinInt32)
var tail *d2graph.Object
for _, obj := range container.ChildrenArray {
if rank[obj] >= max {
max = rank[obj]
tail = obj
}
}
return tail
}
func inContainer(obj, container *d2graph.Object) *d2graph.Object {
if obj == nil {
return nil
}
if obj == container {
return obj
}
if obj.Parent == container {
return obj
}
return inContainer(obj.Parent, container)
}

View file

@ -10,7 +10,7 @@
"x": 0, "x": 0,
"y": 41 "y": 41
}, },
"width": 1221, "width": 1200,
"height": 125, "height": 125,
"opacity": 1, "opacity": 1,
"strokeDash": 0, "strokeDash": 0,
@ -48,7 +48,7 @@
"id": "k8s.m1", "id": "k8s.m1",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 86, "x": 40,
"y": 70 "y": 70
}, },
"width": 132, "width": 132,
@ -89,7 +89,7 @@
"id": "k8s.m2", "id": "k8s.m2",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 278, "x": 232,
"y": 70 "y": 70
}, },
"width": 132, "width": 132,
@ -130,7 +130,7 @@
"id": "k8s.m3", "id": "k8s.m3",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 470, "x": 424,
"y": 70 "y": 70
}, },
"width": 132, "width": 132,
@ -171,7 +171,7 @@
"id": "k8s.w1", "id": "k8s.w1",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 662, "x": 616,
"y": 70 "y": 70
}, },
"width": 133, "width": 133,
@ -212,7 +212,7 @@
"id": "k8s.w2", "id": "k8s.w2",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 855, "x": 809,
"y": 70 "y": 70
}, },
"width": 133, "width": 133,
@ -253,7 +253,7 @@
"id": "k8s.w3", "id": "k8s.w3",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 1048, "x": 1002,
"y": 70 "y": 70
}, },
"width": 133, "width": 133,
@ -294,10 +294,10 @@
"id": "osvc", "id": "osvc",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 0, "x": 826,
"y": 328 "y": 328
}, },
"width": 395, "width": 364,
"height": 125, "height": 125,
"opacity": 1, "opacity": 1,
"strokeDash": 0, "strokeDash": 0,
@ -335,7 +335,7 @@
"id": "osvc.vm1", "id": "osvc.vm1",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 131, "x": 926,
"y": 357 "y": 357
}, },
"width": 76, "width": 76,
@ -376,7 +376,7 @@
"id": "osvc.vm2", "id": "osvc.vm2",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 279, "x": 1074,
"y": 357 "y": 357
}, },
"width": 76, "width": 76,
@ -442,19 +442,19 @@
"labelPercentage": 0, "labelPercentage": 0,
"route": [ "route": [
{ {
"x": 59, "x": 884.75,
"y": 166 "y": 166
}, },
{ {
"x": 59, "x": 884.75,
"y": 214.4 "y": 214.4
}, },
{ {
"x": 59, "x": 884.75,
"y": 246.9 "y": 246.9
}, },
{ {
"x": 59, "x": 884.75,
"y": 328.5 "y": 328.5
} }
], ],
@ -491,20 +491,20 @@
"labelPercentage": 0, "labelPercentage": 0,
"route": [ "route": [
{ {
"x": 141, "x": 966.75,
"y": 166 "y": 166
}, },
{ {
"x": 141, "x": 966.75,
"y": 214.4 "y": 214.4
}, },
{ {
"x": 141, "x": 966.75,
"y": 246.9 "y": 238.7
}, },
{ {
"x": 141, "x": 966.75,
"y": 328.5 "y": 287.5
} }
], ],
"isCurve": true, "isCurve": true,
@ -540,19 +540,19 @@
"labelPercentage": 0, "labelPercentage": 0,
"route": [ "route": [
{ {
"x": 217, "x": 1042.75,
"y": 166 "y": 166
}, },
{ {
"x": 217, "x": 1042.75,
"y": 214.4 "y": 214.4
}, },
{ {
"x": 217, "x": 1042.75,
"y": 238.7 "y": 238.7
}, },
{ {
"x": 217, "x": 1042.75,
"y": 287.5 "y": 287.5
} }
], ],
@ -589,19 +589,19 @@
"labelPercentage": 0, "labelPercentage": 0,
"route": [ "route": [
{ {
"x": 278, "x": 1137,
"y": 166 "y": 166
}, },
{ {
"x": 278, "x": 1137,
"y": 214.4 "y": 214.4
}, },
{ {
"x": 278, "x": 1137,
"y": 246.9 "y": 246.9
}, },
{ {
"x": 278, "x": 1137,
"y": 328.5 "y": 328.5
} }
], ],

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 799 KiB

After

Width:  |  Height:  |  Size: 799 KiB

View file

@ -10,8 +10,8 @@
"x": 0, "x": 0,
"y": 41 "y": 41
}, },
"width": 738, "width": 806,
"height": 1480, "height": 1314,
"opacity": 1, "opacity": 1,
"strokeDash": 0, "strokeDash": 0,
"strokeWidth": 2, "strokeWidth": 2,
@ -51,8 +51,8 @@
"x": 20, "x": 20,
"y": 106 "y": 106
}, },
"width": 499, "width": 567,
"height": 1385, "height": 1219,
"opacity": 1, "opacity": 1,
"strokeDash": 0, "strokeDash": 0,
"strokeWidth": 2, "strokeWidth": 2,
@ -90,9 +90,9 @@
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 40, "x": 40,
"y": 887 "y": 721
}, },
"width": 325, "width": 393,
"height": 572, "height": 572,
"opacity": 1, "opacity": 1,
"strokeDash": 0, "strokeDash": 0,
@ -130,10 +130,10 @@
"id": "aa.bb.cc.dd", "id": "aa.bb.cc.dd",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 62, "x": 60,
"y": 948 "y": 782
}, },
"width": 237, "width": 223,
"height": 140, "height": 140,
"opacity": 1, "opacity": 1,
"strokeDash": 0, "strokeDash": 0,
@ -171,8 +171,8 @@
"id": "aa.bb.cc.dd.ee", "id": "aa.bb.cc.dd.ee",
"type": "text", "type": "text",
"pos": { "pos": {
"x": 126, "x": 110,
"y": 1008 "y": 842
}, },
"width": 16, "width": 16,
"height": 21, "height": 21,
@ -211,8 +211,8 @@
"id": "aa.bb.cc.dd.ff", "id": "aa.bb.cc.dd.ff",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 202, "x": 186,
"y": 985 "y": 819
}, },
"width": 57, "width": 57,
"height": 66, "height": 66,
@ -252,8 +252,8 @@
"id": "aa.bb.cc.gg", "id": "aa.bb.cc.gg",
"type": "text", "type": "text",
"pos": { "pos": {
"x": 244, "x": 190,
"y": 1209 "y": 1043
}, },
"width": 17, "width": 17,
"height": 21, "height": 21,
@ -292,8 +292,8 @@
"id": "aa.bb.cc.hh", "id": "aa.bb.cc.hh",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 221, "x": 324,
"y": 1355 "y": 1189
}, },
"width": 63, "width": 63,
"height": 66, "height": 66,
@ -333,10 +333,10 @@
"id": "aa.bb.ii", "id": "aa.bb.ii",
"type": "package", "type": "package",
"pos": { "pos": {
"x": 50, "x": 52,
"y": 169 "y": 169
}, },
"width": 236, "width": 469,
"height": 161, "height": 161,
"opacity": 1, "opacity": 1,
"strokeDash": 0, "strokeDash": 0,
@ -374,7 +374,7 @@
"id": "aa.bb.ii.jj", "id": "aa.bb.ii.jj",
"type": "diamond", "type": "diamond",
"pos": { "pos": {
"x": 148, "x": 431,
"y": 204 "y": 204
}, },
"width": 50, "width": 50,
@ -415,8 +415,8 @@
"id": "aa.bb.kk", "id": "aa.bb.kk",
"type": "oval", "type": "oval",
"pos": { "pos": {
"x": 405, "x": 474,
"y": 1335 "y": 1169
}, },
"width": 74, "width": 74,
"height": 74, "height": 74,
@ -456,8 +456,8 @@
"id": "aa.ll", "id": "aa.ll",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 606, "x": 670,
"y": 651 "y": 772
}, },
"width": 54, "width": 54,
"height": 66, "height": 66,
@ -497,7 +497,7 @@
"id": "aa.mm", "id": "aa.mm",
"type": "cylinder", "type": "cylinder",
"pos": { "pos": {
"x": 593, "x": 662,
"y": 433 "y": 433
}, },
"width": 71, "width": 71,
@ -538,8 +538,8 @@
"id": "aa.nn", "id": "aa.nn",
"type": "text", "type": "text",
"pos": { "pos": {
"x": 559, "x": 628,
"y": 1344 "y": 1178
}, },
"width": 16, "width": 16,
"height": 21, "height": 21,
@ -578,8 +578,8 @@
"id": "aa.oo", "id": "aa.oo",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 635, "x": 704,
"y": 1321 "y": 1155
}, },
"width": 63, "width": 63,
"height": 66, "height": 66,
@ -644,20 +644,20 @@
"labelPercentage": 0, "labelPercentage": 0,
"route": [ "route": [
{ {
"x": 134.25, "x": 118,
"y": 1029.5 "y": 863.5
}, },
{ {
"x": 134.25, "x": 118,
"y": 1076.3 "y": 910.3
}, },
{ {
"x": 156.1, "x": 132.35,
"y": 1161.6749469214437 "y": 995.1959501557633
}, },
{ {
"x": 243.5, "x": 189.75,
"y": 1214.3747346072187 "y": 1045.9797507788162
} }
], ],
"isCurve": true, "isCurve": true,
@ -693,20 +693,20 @@
"labelPercentage": 0, "labelPercentage": 0,
"route": [ "route": [
{ {
"x": 252, "x": 198.25,
"y": 1230 "y": 1064
}, },
{ {
"x": 252, "x": 198.25,
"y": 1278.4 "y": 1112.4
}, },
{ {
"x": 252, "x": 223.45,
"y": 1303.5 "y": 1140.1
}, },
{ {
"x": 252, "x": 324.25,
"y": 1355.5 "y": 1202.5
} }
], ],
"isCurve": true, "isCurve": true,
@ -742,68 +742,44 @@
"labelPercentage": 0, "labelPercentage": 0,
"route": [ "route": [
{ {
"x": 102, "x": 104,
"y": 331 "y": 331
}, },
{ {
"x": 102.4, "x": 104,
"y": 379 "y": 379
}, },
{ {
"x": 102.5, "x": 104,
"y": 414.9 "y": 414.9
}, },
{ {
"x": 102.5, "x": 104,
"y": 450.75 "y": 450.75
}, },
{ {
"x": 102.5, "x": 104,
"y": 486.6 "y": 486.6
}, },
{ {
"x": 102.5, "x": 104,
"y": 532.3 "y": 534.4
}, },
{ {
"x": 102.5, "x": 104,
"y": 565 "y": 570.25
}, },
{ {
"x": 102.5, "x": 104,
"y": 597.7 "y": 606.1
}, },
{ {
"x": 102.5, "x": 104,
"y": 636.1 "y": 708.8
}, },
{ {
"x": 102.5, "x": 104,
"y": 661 "y": 782
},
{
"x": 102.5,
"y": 685.9
},
{
"x": 102.5,
"y": 721.2
},
{
"x": 102.5,
"y": 749.25
},
{
"x": 102.5,
"y": 777.3
},
{
"x": 102.5,
"y": 874.8
},
{
"x": 102.5,
"y": 948
} }
], ],
"isCurve": true, "isCurve": true,
@ -839,12 +815,12 @@
"labelPercentage": 0, "labelPercentage": 0,
"route": [ "route": [
{ {
"x": 605.75, "x": 670.25,
"y": 689.5313901345291 "y": 811.7993675333802
}, },
{ {
"x": 518.75, "x": 587.25,
"y": 741.5313901345291 "y": 866.7993675333802
} }
], ],
"animated": false, "animated": false,
@ -879,32 +855,20 @@
"labelPercentage": 0, "labelPercentage": 0,
"route": [ "route": [
{ {
"x": 593, "x": 662,
"y": 501 "y": 501
}, },
{ {
"x": 246.2, "x": 284.79999999999995,
"y": 581.4 "y": 589.8
}, },
{ {
"x": 159.5, "x": 190.5,
"y": 618.1 "y": 634
}, },
{ {
"x": 159.5, "x": 190.5,
"y": 643 "y": 722
},
{
"x": 159.5,
"y": 667.9
},
{
"x": 159.5,
"y": 800
},
{
"x": 159.5,
"y": 888
} }
], ],
"isCurve": true, "isCurve": true,
@ -940,20 +904,32 @@
"labelPercentage": 0, "labelPercentage": 0,
"route": [ "route": [
{ {
"x": 631, "x": 697,
"y": 552 "y": 552
}, },
{ {
"x": 632.4, "x": 697.2,
"y": 591.6 "y": 600
}, },
{ {
"x": 632.75, "x": 697.25,
"y": 611.5 "y": 624.1
}, },
{ {
"x": 632.75, "x": 697.25,
"y": 651.5 "y": 642.25
},
{
"x": 697.25,
"y": 660.4
},
{
"x": 697.25,
"y": 732.5
},
{
"x": 697.25,
"y": 772.5
} }
], ],
"isCurve": true, "isCurve": true,
@ -989,12 +965,12 @@
"labelPercentage": 0, "labelPercentage": 0,
"route": [ "route": [
{ {
"x": 593, "x": 662,
"y": 501 "y": 505
}, },
{ {
"x": 519, "x": 587.75,
"y": 556.4364896073903 "y": 568.4633307868602
} }
], ],
"animated": false, "animated": false,
@ -1029,68 +1005,20 @@
"labelPercentage": 0, "labelPercentage": 0,
"route": [ "route": [
{ {
"x": 605.75, "x": 670.25,
"y": 692.5526315789474 "y": 811.1842105263158
}, },
{ {
"x": 376.54999999999995, "x": 376.45,
"y": 760.9105263157895 "y": 873.0368421052632
}, },
{ {
"x": 319.25, "x": 283.8,
"y": 790.1 "y": 968.7
}, },
{ {
"x": 319.25, "x": 207,
"y": 808.25 "y": 1047.5
},
{
"x": 319.25,
"y": 826.4
},
{
"x": 319.25,
"y": 848.5
},
{
"x": 319.25,
"y": 863.5
},
{
"x": 319.25,
"y": 878.5
},
{
"x": 319.25,
"y": 905.1
},
{
"x": 319.25,
"y": 930
},
{
"x": 319.25,
"y": 954.9
},
{
"x": 319.25,
"y": 988.1
},
{
"x": 319.25,
"y": 1013
},
{
"x": 319.25,
"y": 1037.9
},
{
"x": 307.65,
"y": 1133.9
},
{
"x": 261.25,
"y": 1209.5
} }
], ],
"isCurve": true, "isCurve": true,
@ -1126,19 +1054,19 @@
"labelPercentage": 0, "labelPercentage": 0,
"route": [ "route": [
{ {
"x": 593, "x": 662,
"y": 481 "y": 473
}, },
{ {
"x": 313.4, "x": 517.8,
"y": 394.6 "y": 393
}, },
{ {
"x": 243.4, "x": 481.8,
"y": 364.6 "y": 364.6
}, },
{ {
"x": 243, "x": 482,
"y": 331 "y": 331
} }
], ],
@ -1175,23 +1103,14 @@
"labelPercentage": 0, "labelPercentage": 0,
"route": [ "route": [
{ {
"x": 238.75, "x": 434,
"y": 887.5 "y": 896.5
}, },
{ {
"x": 238.75, "x": 670,
"y": 799.9 "y": 813.5
},
{
"x": 312.15,
"y": 760.5814720812183
},
{
"x": 605.75,
"y": 690.9073604060914
} }
], ],
"isCurve": true,
"animated": false, "animated": false,
"tooltip": "", "tooltip": "",
"icon": null, "icon": null,
@ -1224,32 +1143,56 @@
"labelPercentage": 0, "labelPercentage": 0,
"route": [ "route": [
{ {
"x": 215, "x": 454,
"y": 331 "y": 331
}, },
{ {
"x": 215.4, "x": 453.8,
"y": 364.6 "y": 364.6
}, },
{ {
"x": 215.5, "x": 453.75,
"y": 396.9 "y": 396.9
}, },
{ {
"x": 215.5, "x": 453.75,
"y": 432.75 "y": 432.75
}, },
{ {
"x": 215.5, "x": 453.75,
"y": 468.6 "y": 468.6
}, },
{ {
"x": 293.55, "x": 453.75,
"y": 617.0258238466147 "y": 516.4
}, },
{ {
"x": 605.75, "x": 453.75,
"y": 679.1291192330737 "y": 552.25
},
{
"x": 453.75,
"y": 588.1
},
{
"x": 453.75,
"y": 624.1
},
{
"x": 453.75,
"y": 642.25
},
{
"x": 453.75,
"y": 660.4
},
{
"x": 496.95,
"y": 737.3
},
{
"x": 669.75,
"y": 796.5
} }
], ],
"isCurve": true, "isCurve": true,

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 814 KiB

After

Width:  |  Height:  |  Size: 814 KiB

View file

@ -7,7 +7,7 @@
"id": "a", "id": "a",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 253, "x": 276,
"y": 0 "y": 0
}, },
"width": 53, "width": 53,
@ -51,7 +51,7 @@
"x": 193, "x": 193,
"y": 207 "y": 207
}, },
"width": 153, "width": 176,
"height": 657, "height": 657,
"opacity": 1, "opacity": 1,
"strokeDash": 0, "strokeDash": 0,
@ -89,7 +89,7 @@
"id": "g.b", "id": "g.b",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 253, "x": 276,
"y": 236 "y": 236
}, },
"width": 53, "width": 53,
@ -294,7 +294,7 @@
"id": "f", "id": "f",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 244, "x": 267,
"y": 964 "y": 964
}, },
"width": 51, "width": 51,
@ -360,19 +360,19 @@
"labelPercentage": 0, "labelPercentage": 0,
"route": [ "route": [
{ {
"x": 279.5, "x": 302.75,
"y": 66 "y": 66
}, },
{ {
"x": 279.5, "x": 302.75,
"y": 106 "y": 106
}, },
{ {
"x": 279.5, "x": 302.75,
"y": 180.1 "y": 180.1
}, },
{ {
"x": 279.5, "x": 302.75,
"y": 236.5 "y": 236.5
} }
], ],
@ -409,32 +409,32 @@
"labelPercentage": 0, "labelPercentage": 0,
"route": [ "route": [
{ {
"x": 262.3042168674699, "x": 280.28614457831327,
"y": 302.5 "y": 302.5
}, },
{ {
"x": 241.460843373494, "x": 253.05722891566265,
"y": 326.1 "y": 326.1
}, },
{ {
"x": 236.25, "x": 246.25,
"y": 342 "y": 342
}, },
{ {
"x": 236.25, "x": 246.25,
"y": 357 "y": 357
}, },
{ {
"x": 236.25, "x": 246.25,
"y": 372 "y": 372
}, },
{ {
"x": 211.65, "x": 219.65,
"y": 453.3 "y": 453.5
}, },
{ {
"x": 113.25, "x": 113.25,
"y": 538.5 "y": 539.5
} }
], ],
"isCurve": true, "isCurve": true,
@ -470,19 +470,19 @@
"labelPercentage": 0, "labelPercentage": 0,
"route": [ "route": [
{ {
"x": 86.5, "x": 73.25,
"y": 648 "y": 648
}, },
{ {
"x": 224.9, "x": 203.65,
"y": 688 "y": 688
}, },
{ {
"x": 259.5, "x": 239.05,
"y": 712.1 "y": 712.1
}, },
{ {
"x": 259.5, "x": 250.25,
"y": 768.5 "y": 768.5
} }
], ],
@ -527,11 +527,11 @@
"y": 858.1 "y": 858.1
}, },
{ {
"x": 260.7, "x": 263.5,
"y": 924 "y": 924
}, },
{ {
"x": 265.5, "x": 279.5,
"y": 964 "y": 964
} }
], ],
@ -568,11 +568,11 @@
"labelPercentage": 0, "labelPercentage": 0,
"route": [ "route": [
{ {
"x": 291.96385542168673, "x": 305.9698795180723,
"y": 964 "y": 964
}, },
{ {
"x": 319.1927710843373, "x": 321.99397590361446,
"y": 924 "y": 924
}, },
{ {
@ -617,14 +617,23 @@
"labelPercentage": 0, "labelPercentage": 0,
"route": [ "route": [
{ {
"x": 192.5, "x": 192.75,
"y": 508 "y": 713
}, },
{ {
"x": 152.5, "x": 126.35,
"y": 541.5 "y": 661
},
{
"x": 109.75,
"y": 642.1
},
{
"x": 109.75,
"y": 618.5
} }
], ],
"isCurve": true,
"animated": false, "animated": false,
"tooltip": "", "tooltip": "",
"icon": null, "icon": null,

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 655 KiB

After

Width:  |  Height:  |  Size: 655 KiB

View file

@ -7,7 +7,7 @@
"id": "a", "id": "a",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 229, "x": 301,
"y": 50 "y": 50
}, },
"width": 53, "width": 53,
@ -48,7 +48,7 @@
"id": "tree", "id": "tree",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 218, "x": 75,
"y": 216 "y": 216
}, },
"width": 74, "width": 74,
@ -89,7 +89,7 @@
"id": "and", "id": "and",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 6, "x": 292,
"y": 216 "y": 216
}, },
"width": 72, "width": 72,
@ -130,7 +130,7 @@
"id": "nodes", "id": "nodes",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 352, "x": 424,
"y": 216 "y": 216
}, },
"width": 87, "width": 87,
@ -171,7 +171,7 @@
"id": "some", "id": "some",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 0, "x": 286,
"y": 382 "y": 382
}, },
"width": 83, "width": 83,
@ -212,7 +212,7 @@
"id": "more", "id": "more",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 143, "x": 0,
"y": 382 "y": 382
}, },
"width": 81, "width": 81,
@ -253,7 +253,7 @@
"id": "many", "id": "many",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 284, "x": 141,
"y": 382 "y": 382
}, },
"width": 85, "width": 85,
@ -294,7 +294,7 @@
"id": "then", "id": "then",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 508, "x": 580,
"y": 50 "y": 50
}, },
"width": 78, "width": 78,
@ -335,7 +335,7 @@
"id": "here", "id": "here",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 499, "x": 571,
"y": 216 "y": 216
}, },
"width": 76, "width": 76,
@ -376,7 +376,7 @@
"id": "you", "id": "you",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 501, "x": 573,
"y": 382 "y": 382
}, },
"width": 72, "width": 72,
@ -417,7 +417,7 @@
"id": "have", "id": "have",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 664, "x": 736,
"y": 50 "y": 50
}, },
"width": 78, "width": 78,
@ -458,7 +458,7 @@
"id": "hierarchy", "id": "hierarchy",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 637, "x": 708,
"y": 216 "y": 216
}, },
"width": 113, "width": 113,
@ -499,10 +499,10 @@
"id": "finally", "id": "finally",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 791, "x": 863,
"y": 41 "y": 41
}, },
"width": 321, "width": 311,
"height": 623, "height": 623,
"opacity": 1, "opacity": 1,
"strokeDash": 0, "strokeDash": 0,
@ -540,8 +540,8 @@
"id": "another", "id": "another",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 1303, "x": 879,
"y": 382 "y": 764
}, },
"width": 103, "width": 103,
"height": 66, "height": 66,
@ -581,8 +581,8 @@
"id": "of", "id": "of",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 1324, "x": 901,
"y": 548 "y": 930
}, },
"width": 60, "width": 60,
"height": 66, "height": 66,
@ -622,8 +622,8 @@
"id": "nesting", "id": "nesting",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 1153, "x": 1214,
"y": 216 "y": 548
}, },
"width": 98, "width": 98,
"height": 66, "height": 66,
@ -663,8 +663,8 @@
"id": "trees", "id": "trees",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 1161, "x": 1168,
"y": 382 "y": 764
}, },
"width": 82, "width": 82,
"height": 66, "height": 66,
@ -704,7 +704,7 @@
"id": "finally.a", "id": "finally.a",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 1002, "x": 1000,
"y": 236 "y": 236
}, },
"width": 53, "width": 53,
@ -745,7 +745,7 @@
"id": "finally.tree", "id": "finally.tree",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 851, "x": 922,
"y": 402 "y": 402
}, },
"width": 74, "width": 74,
@ -786,7 +786,7 @@
"id": "finally.inside", "id": "finally.inside",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 985, "x": 982,
"y": 70 "y": 70
}, },
"width": 88, "width": 88,
@ -827,7 +827,7 @@
"id": "finally.hierarchy", "id": "finally.hierarchy",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 831, "x": 903,
"y": 568 "y": 568
}, },
"width": 113, "width": 113,
@ -868,7 +868,7 @@
"id": "finally.root", "id": "finally.root",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 985, "x": 1056,
"y": 402 "y": 402
}, },
"width": 75, "width": 75,
@ -934,19 +934,19 @@
"labelPercentage": 0, "labelPercentage": 0,
"route": [ "route": [
{ {
"x": 255, "x": 301,
"y": 116 "y": 93.20649651972158
}, },
{ {
"x": 255, "x": 149.79999999999998,
"y": 156 "y": 151.44129930394433
}, },
{ {
"x": 255, "x": 112,
"y": 176 "y": 176
}, },
{ {
"x": 255, "x": 112,
"y": 216 "y": 216
} }
], ],
@ -983,19 +983,19 @@
"labelPercentage": 0, "labelPercentage": 0,
"route": [ "route": [
{ {
"x": 228.5, "x": 327.5,
"y": 93.30210772833723 "y": 116
}, },
{ {
"x": 78.9, "x": 327.5,
"y": 151.46042154566746 "y": 156
}, },
{ {
"x": 41.5, "x": 327.5,
"y": 176 "y": 176
}, },
{ {
"x": 41.5, "x": 327.5,
"y": 216 "y": 216
} }
], ],
@ -1032,19 +1032,19 @@
"labelPercentage": 0, "labelPercentage": 0,
"route": [ "route": [
{ {
"x": 282.5, "x": 354,
"y": 98.65480427046263 "y": 98.76702508960574
}, },
{ {
"x": 372.9, "x": 444.4,
"y": 152.53096085409254 "y": 152.55340501792114
}, },
{ {
"x": 395.5, "x": 467,
"y": 176 "y": 176
}, },
{ {
"x": 395.5, "x": 467,
"y": 216 "y": 216
} }
], ],
@ -1081,19 +1081,19 @@
"labelPercentage": 0, "labelPercentage": 0,
"route": [ "route": [
{ {
"x": 41.5, "x": 327.5,
"y": 282 "y": 282
}, },
{ {
"x": 41.5, "x": 327.5,
"y": 322 "y": 322
}, },
{ {
"x": 41.5, "x": 327.5,
"y": 342 "y": 342
}, },
{ {
"x": 41.5, "x": 327.5,
"y": 382 "y": 382
} }
], ],
@ -1130,19 +1130,19 @@
"labelPercentage": 0, "labelPercentage": 0,
"route": [ "route": [
{ {
"x": 226.5722891566265, "x": 83.57228915662651,
"y": 282 "y": 282
}, },
{ {
"x": 192.1144578313253, "x": 49.1144578313253,
"y": 322 "y": 322
}, },
{ {
"x": 183.5, "x": 40.5,
"y": 342 "y": 342
}, },
{ {
"x": 183.5, "x": 40.5,
"y": 382 "y": 382
} }
], ],
@ -1179,19 +1179,19 @@
"labelPercentage": 0, "labelPercentage": 0,
"route": [ "route": [
{ {
"x": 283.52710843373495, "x": 140.4277108433735,
"y": 282 "y": 282
}, },
{ {
"x": 318.105421686747, "x": 174.8855421686747,
"y": 322 "y": 322
}, },
{ {
"x": 326.75, "x": 183.5,
"y": 342 "y": 342
}, },
{ {
"x": 326.75, "x": 183.5,
"y": 382 "y": 382
} }
], ],
@ -1228,19 +1228,19 @@
"labelPercentage": 0, "labelPercentage": 0,
"route": [ "route": [
{ {
"x": 543.0240963855422, "x": 614.5240963855422,
"y": 116 "y": 116
}, },
{ {
"x": 538.2048192771084, "x": 609.7048192771084,
"y": 156 "y": 156
}, },
{ {
"x": 537, "x": 608.5,
"y": 176 "y": 176
}, },
{ {
"x": 537, "x": 608.5,
"y": 216 "y": 216
} }
], ],
@ -1277,19 +1277,19 @@
"labelPercentage": 0, "labelPercentage": 0,
"route": [ "route": [
{ {
"x": 537, "x": 608.5,
"y": 282 "y": 282
}, },
{ {
"x": 537, "x": 608.5,
"y": 322 "y": 322
}, },
{ {
"x": 537, "x": 608.5,
"y": 342 "y": 342
}, },
{ {
"x": 537, "x": 608.5,
"y": 382 "y": 382
} }
], ],
@ -1326,19 +1326,19 @@
"labelPercentage": 0, "labelPercentage": 0,
"route": [ "route": [
{ {
"x": 703.25, "x": 774.75,
"y": 116 "y": 116
}, },
{ {
"x": 703.25, "x": 774.75,
"y": 156 "y": 156
}, },
{ {
"x": 702.05, "x": 773.55,
"y": 176 "y": 176
}, },
{ {
"x": 697.25, "x": 768.75,
"y": 216 "y": 216
} }
], ],
@ -1375,19 +1375,19 @@
"labelPercentage": 0, "labelPercentage": 0,
"route": [ "route": [
{ {
"x": 577.7138554216867, "x": 649.2138554216867,
"y": 116 "y": 116
}, },
{ {
"x": 614.9427710843373, "x": 686.4427710843373,
"y": 156 "y": 156
}, },
{ {
"x": 632.65, "x": 704.15,
"y": 176 "y": 176
}, },
{ {
"x": 666.25, "x": 737.75,
"y": 216 "y": 216
} }
], ],
@ -1424,14 +1424,23 @@
"labelPercentage": 0, "labelPercentage": 0,
"route": [ "route": [
{ {
"x": 1112.75, "x": 930.75,
"y": 344 "y": 664
}, },
{ {
"x": 1302.75, "x": 930.75,
"y": 399.92239858906527 "y": 704
},
{
"x": 930.75,
"y": 724
},
{
"x": 930.75,
"y": 764
} }
], ],
"isCurve": true,
"animated": false, "animated": false,
"tooltip": "", "tooltip": "",
"icon": null, "icon": null,
@ -1464,20 +1473,20 @@
"labelPercentage": 0, "labelPercentage": 0,
"route": [ "route": [
{ {
"x": 1354.25, "x": 930.75,
"y": 448 "y": 830
}, },
{ {
"x": 1354.25, "x": 930.75,
"y": 488 "y": 870
}, },
{ {
"x": 1354.25, "x": 930.75,
"y": 508 "y": 890
}, },
{ {
"x": 1354.25, "x": 930.75,
"y": 548 "y": 930
} }
], ],
"isCurve": true, "isCurve": true,
@ -1513,20 +1522,20 @@
"labelPercentage": 0, "labelPercentage": 0,
"route": [ "route": [
{ {
"x": 1201.75, "x": 1263.25,
"y": 282 "y": 614
}, },
{ {
"x": 1201.75, "x": 1263.25,
"y": 322 "y": 654
}, },
{ {
"x": 1201.75, "x": 1256.65,
"y": 342 "y": 724
}, },
{ {
"x": 1201.75, "x": 1230.25,
"y": 382 "y": 764
} }
], ],
"isCurve": true, "isCurve": true,
@ -1562,14 +1571,23 @@
"labelPercentage": 0, "labelPercentage": 0,
"route": [ "route": [
{ {
"x": 1112.75, "x": 1055,
"y": 366 "y": 664
}, },
{ {
"x": 1160.75, "x": 1055,
"y": 392.4635761589404 "y": 704
},
{
"x": 1077.55,
"y": 726.1733333333333
},
{
"x": 1167.75,
"y": 774.8666666666667
} }
], ],
"isCurve": true,
"animated": false, "animated": false,
"tooltip": "", "tooltip": "",
"icon": null, "icon": null,
@ -1602,19 +1620,19 @@
"labelPercentage": 0, "labelPercentage": 0,
"route": [ "route": [
{ {
"x": 1002.25, "x": 999.75,
"y": 285.0716814159292 "y": 302.20631970260223
}, },
{ {
"x": 910.45, "x": 967.15,
"y": 339.01433628318586 "y": 342.44126394052046
}, },
{ {
"x": 887.5, "x": 959,
"y": 362.5 "y": 362.5
}, },
{ {
"x": 887.5, "x": 959,
"y": 402.5 "y": 402.5
} }
], ],
@ -1651,19 +1669,19 @@
"labelPercentage": 0, "labelPercentage": 0,
"route": [ "route": [
{ {
"x": 1028.75, "x": 1026.25,
"y": 136.5 "y": 136.5
}, },
{ {
"x": 1028.75, "x": 1026.25,
"y": 176.5 "y": 176.5
}, },
{ {
"x": 1028.75, "x": 1026.25,
"y": 196.5 "y": 196.5
}, },
{ {
"x": 1028.75, "x": 1026.25,
"y": 236.5 "y": 236.5
} }
], ],
@ -1700,19 +1718,19 @@
"labelPercentage": 0, "labelPercentage": 0,
"route": [ "route": [
{ {
"x": 887.5, "x": 959,
"y": 468.5 "y": 468.5
}, },
{ {
"x": 887.5, "x": 959,
"y": 508.5 "y": 508.5
}, },
{ {
"x": 887.5, "x": 959,
"y": 528.5 "y": 528.5
}, },
{ {
"x": 887.5, "x": 959,
"y": 568.5 "y": 568.5
} }
], ],
@ -1749,19 +1767,19 @@
"labelPercentage": 0, "labelPercentage": 0,
"route": [ "route": [
{ {
"x": 1026.066265060241, "x": 1052.75,
"y": 302.5 "y": 302.20631970260223
}, },
{ {
"x": 1022.8132530120482, "x": 1085.35,
"y": 342.5 "y": 342.44126394052046
}, },
{ {
"x": 1022, "x": 1093.5,
"y": 362.5 "y": 362.5
}, },
{ {
"x": 1022, "x": 1093.5,
"y": 402.5 "y": 402.5
} }
], ],

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 662 KiB

After

Width:  |  Height:  |  Size: 662 KiB

View file

@ -7,7 +7,7 @@
"id": "a", "id": "a",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 114, "x": 61,
"y": 0 "y": 0
}, },
"width": 53, "width": 53,
@ -51,8 +51,8 @@
"x": 0, "x": 0,
"y": 207 "y": 207
}, },
"width": 297, "width": 174,
"height": 1055, "height": 1553,
"opacity": 1, "opacity": 1,
"strokeDash": 0, "strokeDash": 0,
"strokeWidth": 2, "strokeWidth": 2,
@ -89,8 +89,8 @@
"id": "c", "id": "c",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 338, "x": 61,
"y": 432 "y": 1860
}, },
"width": 53, "width": 53,
"height": 66, "height": 66,
@ -130,8 +130,8 @@
"id": "d", "id": "d",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 338, "x": 60,
"y": 598 "y": 2026
}, },
"width": 54, "width": 54,
"height": 66, "height": 66,
@ -171,8 +171,8 @@
"id": "e", "id": "e",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 338, "x": 61,
"y": 764 "y": 2192
}, },
"width": 53, "width": 53,
"height": 66, "height": 66,
@ -212,7 +212,7 @@
"id": "b.1", "id": "b.1",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 114, "x": 61,
"y": 236 "y": 236
}, },
"width": 52, "width": 52,
@ -256,7 +256,7 @@
"x": 20, "x": 20,
"y": 438 "y": 438
}, },
"width": 143, "width": 134,
"height": 794, "height": 794,
"opacity": 1, "opacity": 1,
"strokeDash": 0, "strokeDash": 0,
@ -294,8 +294,8 @@
"id": "b.3", "id": "b.3",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 204, "x": 61,
"y": 618 "y": 1332
}, },
"width": 53, "width": 53,
"height": 66, "height": 66,
@ -335,8 +335,8 @@
"id": "b.4", "id": "b.4",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 204, "x": 60,
"y": 784 "y": 1498
}, },
"width": 54, "width": 54,
"height": 66, "height": 66,
@ -376,8 +376,8 @@
"id": "b.5", "id": "b.5",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 204, "x": 61,
"y": 950 "y": 1664
}, },
"width": 53, "width": 53,
"height": 66, "height": 66,
@ -417,7 +417,7 @@
"id": "b.2.a", "id": "b.2.a",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 71, "x": 61,
"y": 470 "y": 470
}, },
"width": 53, "width": 53,
@ -647,19 +647,19 @@
"labelPercentage": 0, "labelPercentage": 0,
"route": [ "route": [
{ {
"x": 140.25, "x": 87,
"y": 66 "y": 66
}, },
{ {
"x": 140.25, "x": 87,
"y": 106 "y": 106
}, },
{ {
"x": 140.25, "x": 87,
"y": 126 "y": 126
}, },
{ {
"x": 140.25, "x": 87,
"y": 166 "y": 166
} }
], ],
@ -696,14 +696,23 @@
"labelPercentage": 0, "labelPercentage": 0,
"route": [ "route": [
{ {
"x": 297.75, "x": 87,
"y": 423 "y": 1760
}, },
{ {
"x": 337.75, "x": 87,
"y": 448 "y": 1800
},
{
"x": 87,
"y": 1820
},
{
"x": 87,
"y": 1860
} }
], ],
"isCurve": true,
"animated": false, "animated": false,
"tooltip": "", "tooltip": "",
"icon": null, "icon": null,
@ -736,20 +745,20 @@
"labelPercentage": 0, "labelPercentage": 0,
"route": [ "route": [
{ {
"x": 364.75, "x": 87,
"y": 498 "y": 1926
}, },
{ {
"x": 364.75, "x": 87,
"y": 538 "y": 1966
}, },
{ {
"x": 364.75, "x": 87,
"y": 558 "y": 1986
}, },
{ {
"x": 364.75, "x": 87,
"y": 598 "y": 2026
} }
], ],
"isCurve": true, "isCurve": true,
@ -785,20 +794,20 @@
"labelPercentage": 0, "labelPercentage": 0,
"route": [ "route": [
{ {
"x": 364.75, "x": 87,
"y": 664 "y": 2092
}, },
{ {
"x": 364.75, "x": 87,
"y": 704 "y": 2132
}, },
{ {
"x": 364.75, "x": 87,
"y": 724 "y": 2152
}, },
{ {
"x": 364.75, "x": 87,
"y": 764 "y": 2192
} }
], ],
"isCurve": true, "isCurve": true,
@ -834,19 +843,19 @@
"labelPercentage": 0, "labelPercentage": 0,
"route": [ "route": [
{ {
"x": 123.05421686746988, "x": 87,
"y": 302.5 "y": 302.5
}, },
{ {
"x": 102.21084337349397, "x": 87,
"y": 342.5 "y": 342.5
}, },
{ {
"x": 97, "x": 87,
"y": 362.5 "y": 362.5
}, },
{ {
"x": 97, "x": 87,
"y": 402.5 "y": 402.5
} }
], ],
@ -883,14 +892,23 @@
"labelPercentage": 0, "labelPercentage": 0,
"route": [ "route": [
{ {
"x": 163.5, "x": 87,
"y": 601.5 "y": 1232.5
}, },
{ {
"x": 204.5, "x": 87,
"y": 631.5 "y": 1272.5
},
{
"x": 87,
"y": 1292.5
},
{
"x": 87,
"y": 1332.5
} }
], ],
"isCurve": true,
"animated": false, "animated": false,
"tooltip": "", "tooltip": "",
"icon": null, "icon": null,
@ -923,20 +941,20 @@
"labelPercentage": 0, "labelPercentage": 0,
"route": [ "route": [
{ {
"x": 230.75, "x": 87,
"y": 684.5 "y": 1398.5
}, },
{ {
"x": 230.75, "x": 87,
"y": 724.5 "y": 1438.5
}, },
{ {
"x": 230.75, "x": 87,
"y": 744.5 "y": 1458.5
}, },
{ {
"x": 230.75, "x": 87,
"y": 784.5 "y": 1498.5
} }
], ],
"isCurve": true, "isCurve": true,
@ -972,20 +990,20 @@
"labelPercentage": 0, "labelPercentage": 0,
"route": [ "route": [
{ {
"x": 230.75, "x": 87,
"y": 850.5 "y": 1564.5
}, },
{ {
"x": 230.75, "x": 87,
"y": 890.5 "y": 1604.5
}, },
{ {
"x": 230.75, "x": 87,
"y": 910.5 "y": 1624.5
}, },
{ {
"x": 230.75, "x": 87,
"y": 950.5 "y": 1664.5
} }
], ],
"isCurve": true, "isCurve": true,
@ -1021,11 +1039,11 @@
"labelPercentage": 0, "labelPercentage": 0,
"route": [ "route": [
{ {
"x": 93.02409638554217, "x": 87,
"y": 536.5 "y": 536.5
}, },
{ {
"x": 88.20481927710843, "x": 87,
"y": 576.5 "y": 576.5
}, },
{ {

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 658 KiB

After

Width:  |  Height:  |  Size: 658 KiB

View file

@ -10,7 +10,7 @@
"x": 0, "x": 0,
"y": 41 "y": 41
}, },
"width": 299, "width": 313,
"height": 125, "height": 125,
"opacity": 1, "opacity": 1,
"strokeDash": 0, "strokeDash": 0,
@ -48,7 +48,7 @@
"id": "a.b", "id": "a.b",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 60, "x": 40,
"y": 70 "y": 70
}, },
"width": 53, "width": 53,
@ -89,7 +89,7 @@
"id": "c", "id": "c",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 93, "x": 130,
"y": 764 "y": 764
}, },
"width": 53, "width": 53,
@ -130,7 +130,7 @@
"id": "d", "id": "d",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 206, "x": 130,
"y": 598 "y": 598
}, },
"width": 54, "width": 54,
@ -171,7 +171,7 @@
"id": "e", "id": "e",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 93, "x": 244,
"y": 598 "y": 598
}, },
"width": 53, "width": 53,
@ -212,7 +212,7 @@
"id": "f", "id": "f",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 208, "x": 131,
"y": 432 "y": 432
}, },
"width": 51, "width": 51,
@ -253,7 +253,7 @@
"id": "g", "id": "g",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 206, "x": 130,
"y": 266 "y": 266
}, },
"width": 54, "width": 54,
@ -294,7 +294,7 @@
"id": "a.h", "id": "a.h",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 207, "x": 187,
"y": 70 "y": 70
}, },
"width": 53, "width": 53,
@ -360,92 +360,92 @@
"labelPercentage": 0, "labelPercentage": 0,
"route": [ "route": [
{ {
"x": 73.28012048192771, "x": 66.5,
"y": 136.5 "y": 136.5
}, },
{ {
"x": 57.256024096385545, "x": 66.5,
"y": 160.1 "y": 160.1
}, },
{ {
"x": 53.25, "x": 66.5,
"y": 176 "y": 176
}, },
{ {
"x": 53.25, "x": 66.5,
"y": 191 "y": 191
}, },
{ {
"x": 53.25, "x": 66.5,
"y": 206 "y": 206
}, },
{ {
"x": 53.25, "x": 66.5,
"y": 232.6 "y": 232.6
}, },
{ {
"x": 53.25, "x": 66.5,
"y": 257.5 "y": 257.5
}, },
{ {
"x": 53.25, "x": 66.5,
"y": 282.4 "y": 282.4
}, },
{ {
"x": 53.25, "x": 66.5,
"y": 315.6 "y": 315.6
}, },
{ {
"x": 53.25, "x": 66.5,
"y": 340.5 "y": 340.5
}, },
{ {
"x": 53.25, "x": 66.5,
"y": 365.4 "y": 365.4
}, },
{ {
"x": 53.25, "x": 66.5,
"y": 398.6 "y": 398.6
}, },
{ {
"x": 53.25, "x": 66.5,
"y": 423.5 "y": 423.5
}, },
{ {
"x": 53.25, "x": 66.5,
"y": 448.4 "y": 448.4
}, },
{ {
"x": 53.25, "x": 66.5,
"y": 481.6 "y": 481.6
}, },
{ {
"x": 53.25, "x": 66.5,
"y": 506.5 "y": 506.5
}, },
{ {
"x": 53.25, "x": 66.5,
"y": 531.4 "y": 531.4
}, },
{ {
"x": 53.25, "x": 66.5,
"y": 564.6 "y": 564.6
}, },
{ {
"x": 53.25, "x": 66.5,
"y": 589.5 "y": 589.5
}, },
{ {
"x": 53.25, "x": 66.5,
"y": 614.4 "y": 614.4
}, },
{ {
"x": 61.25, "x": 79.3,
"y": 724 "y": 725.8
}, },
{ {
"x": 93.25, "x": 130.5,
"y": 764 "y": 773
} }
], ],
"isCurve": true, "isCurve": true,
@ -481,20 +481,20 @@
"labelPercentage": 0, "labelPercentage": 0,
"route": [ "route": [
{ {
"x": 233.25, "x": 156.5,
"y": 664 "y": 664
}, },
{ {
"x": 233.25, "x": 156.5,
"y": 704 "y": 704
}, },
{ {
"x": 215.85, "x": 156.5,
"y": 726.7242290748899 "y": 724
}, },
{ {
"x": 146.25, "x": 156.5,
"y": 777.6211453744494 "y": 764
} }
], ],
"isCurve": true, "isCurve": true,
@ -530,20 +530,20 @@
"labelPercentage": 0, "labelPercentage": 0,
"route": [ "route": [
{ {
"x": 119.75, "x": 270,
"y": 664 "y": 664
}, },
{ {
"x": 119.75, "x": 270,
"y": 704 "y": 704
}, },
{ {
"x": 119.75, "x": 252.6,
"y": 724 "y": 726.8
}, },
{ {
"x": 119.75, "x": 183,
"y": 764 "y": 778
} }
], ],
"isCurve": true, "isCurve": true,
@ -579,19 +579,19 @@
"labelPercentage": 0, "labelPercentage": 0,
"route": [ "route": [
{ {
"x": 233.25, "x": 156.5,
"y": 498 "y": 498
}, },
{ {
"x": 233.25, "x": 156.5,
"y": 538 "y": 538
}, },
{ {
"x": 233.25, "x": 156.5,
"y": 558 "y": 558
}, },
{ {
"x": 233.25, "x": 156.5,
"y": 598 "y": 598
} }
], ],
@ -628,55 +628,55 @@
"labelPercentage": 0, "labelPercentage": 0,
"route": [ "route": [
{ {
"x": 119.75, "x": 270,
"y": 166 "y": 166
}, },
{ {
"x": 119.75, "x": 270,
"y": 206 "y": 206
}, },
{ {
"x": 119.75, "x": 270,
"y": 232.6 "y": 232.6
}, },
{ {
"x": 119.75, "x": 270,
"y": 257.5 "y": 257.5
}, },
{ {
"x": 119.75, "x": 270,
"y": 282.4 "y": 282.4
}, },
{ {
"x": 119.75, "x": 270,
"y": 315.6 "y": 315.6
}, },
{ {
"x": 119.75, "x": 270,
"y": 340.5 "y": 340.5
}, },
{ {
"x": 119.75, "x": 270,
"y": 365.4 "y": 365.4
}, },
{ {
"x": 119.75, "x": 270,
"y": 398.6 "y": 398.6
}, },
{ {
"x": 119.75, "x": 270,
"y": 423.5 "y": 423.5
}, },
{ {
"x": 119.75, "x": 270,
"y": 448.4 "y": 448.4
}, },
{ {
"x": 119.75, "x": 270,
"y": 558 "y": 558
}, },
{ {
"x": 119.75, "x": 270,
"y": 598 "y": 598
} }
], ],
@ -713,19 +713,19 @@
"labelPercentage": 0, "labelPercentage": 0,
"route": [ "route": [
{ {
"x": 233.25, "x": 156.5,
"y": 332 "y": 332
}, },
{ {
"x": 233.25, "x": 156.5,
"y": 372 "y": 372
}, },
{ {
"x": 233.25, "x": 156.5,
"y": 392 "y": 392
}, },
{ {
"x": 233.25, "x": 156.5,
"y": 432 "y": 432
} }
], ],
@ -762,19 +762,19 @@
"labelPercentage": 0, "labelPercentage": 0,
"route": [ "route": [
{ {
"x": 233.25, "x": 190.6867469879518,
"y": 136.5 "y": 136.5
}, },
{ {
"x": 233.25, "x": 163.33734939759034,
"y": 160.1 "y": 160.1
}, },
{ {
"x": 233.25, "x": 156.5,
"y": 226 "y": 226
}, },
{ {
"x": 233.25, "x": 156.5,
"y": 266 "y": 266
} }
], ],

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 656 KiB

After

Width:  |  Height:  |  Size: 656 KiB