Merge pull request #1038 from alixander/elk-label

Elk fit labels, center contents
This commit is contained in:
Alexander Wang 2023-03-15 13:15:54 -07:00 committed by GitHub
commit ad4d483bf8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
16 changed files with 615 additions and 616 deletions

View file

@ -10,6 +10,8 @@
- `elk` layouts have less bends in the routes. [#1033](https://github.com/terrastruct/d2/pull/1033) - `elk` layouts have less bends in the routes. [#1033](https://github.com/terrastruct/d2/pull/1033)
- `elk` layouts center nodes better. [#1028](https://github.com/terrastruct/d2/pull/1028) - `elk` layouts center nodes better. [#1028](https://github.com/terrastruct/d2/pull/1028)
- `elk` layouts have nicer margins between node boundaries and edges. [#1028](https://github.com/terrastruct/d2/pull/1028) - `elk` layouts have nicer margins between node boundaries and edges. [#1028](https://github.com/terrastruct/d2/pull/1028)
- `elk` layouts container contents are centered within. [#1038](https://github.com/terrastruct/d2/pull/1038)
- `elk` layouts container dimensions fit label. [#1038](https://github.com/terrastruct/d2/pull/1038)
- `sketch` draws connections with less roughness, which especially improves look of corner bends in ELK. [#1014](https://github.com/terrastruct/d2/pull/1014) - `sketch` draws connections with less roughness, which especially improves look of corner bends in ELK. [#1014](https://github.com/terrastruct/d2/pull/1014)
- CSS in SVGs are diagram-specific, which means you can embed multiple D2 diagrams on a web page without fear of style conflicts. [#1016](https://github.com/terrastruct/d2/pull/1016) - CSS in SVGs are diagram-specific, which means you can embed multiple D2 diagrams on a web page without fear of style conflicts. [#1016](https://github.com/terrastruct/d2/pull/1016)

View file

@ -110,6 +110,7 @@ type elkOpts struct {
ConsiderModelOrder string `json:"elk.layered.considerModelOrder.strategy,omitempty"` ConsiderModelOrder string `json:"elk.layered.considerModelOrder.strategy,omitempty"`
NodeSizeConstraints string `json:"elk.nodeSize.constraints,omitempty"` NodeSizeConstraints string `json:"elk.nodeSize.constraints,omitempty"`
ContentAlignment string `json:"elk.contentAlignment,omitempty"`
NodeSizeMinimum string `json:"elk.nodeSize.minimum,omitempty"` NodeSizeMinimum string `json:"elk.nodeSize.minimum,omitempty"`
ConfigurableOpts ConfigurableOpts
@ -148,6 +149,8 @@ func Layout(ctx context.Context, g *d2graph.Graph, opts *ConfigurableOpts) (err
HierarchyHandling: "INCLUDE_CHILDREN", HierarchyHandling: "INCLUDE_CHILDREN",
FixedAlignment: "BALANCED", FixedAlignment: "BALANCED",
ConsiderModelOrder: "NODES_AND_EDGES", ConsiderModelOrder: "NODES_AND_EDGES",
NodeSizeConstraints: "MINIMUM_SIZE",
ContentAlignment: "H_CENTER V_CENTER",
ConfigurableOpts: ConfigurableOpts{ ConfigurableOpts: ConfigurableOpts{
Algorithm: opts.Algorithm, Algorithm: opts.Algorithm,
NodeSpacing: opts.NodeSpacing, NodeSpacing: opts.NodeSpacing,
@ -227,8 +230,8 @@ func Layout(ctx context.Context, g *d2graph.Graph, opts *ConfigurableOpts) (err
FixedAlignment: "BALANCED", FixedAlignment: "BALANCED",
EdgeNode: edge_node_spacing, EdgeNode: edge_node_spacing,
ConsiderModelOrder: "NODES_AND_EDGES", ConsiderModelOrder: "NODES_AND_EDGES",
// Why is it (height, width)? I have no clue, but it works. NodeSizeConstraints: "MINIMUM_SIZE",
NodeSizeMinimum: fmt.Sprintf("(%d, %d)", int(math.Ceil(height)), int(math.Ceil(width))), ContentAlignment: "H_CENTER V_CENTER",
ConfigurableOpts: ConfigurableOpts{ ConfigurableOpts: ConfigurableOpts{
NodeSpacing: opts.NodeSpacing, NodeSpacing: opts.NodeSpacing,
EdgeNodeSpacing: opts.EdgeNodeSpacing, EdgeNodeSpacing: opts.EdgeNodeSpacing,
@ -236,11 +239,12 @@ func Layout(ctx context.Context, g *d2graph.Graph, opts *ConfigurableOpts) (err
Padding: opts.Padding, Padding: opts.Padding,
}, },
} }
// Only set if specified.
// There's a bug where if it's the node label dimensions that set the NodeSizeMinimum, switch elkGraph.LayoutOptions.Direction {
// then suddenly it's reversed back to (width, height). I must be missing something case "DOWN", "UP":
if obj.Attributes.Width != nil || obj.Attributes.Height != nil { n.LayoutOptions.NodeSizeMinimum = fmt.Sprintf("(%d, %d)", int(math.Ceil(height)), int(math.Ceil(width)))
n.LayoutOptions.NodeSizeConstraints = "MINIMUM_SIZE" case "RIGHT", "LEFT":
n.LayoutOptions.NodeSizeMinimum = fmt.Sprintf("(%d, %d)", int(math.Ceil(width)), int(math.Ceil(height)))
} }
if n.LayoutOptions.Padding == DefaultOpts.Padding { if n.LayoutOptions.Padding == DefaultOpts.Padding {

View file

@ -103,7 +103,8 @@ func testStable(t *testing.T) {
} }
} }
online portal: { # long label to expand
online portal: ONLINE PORTALLLL {
ui: { shape: hexagon } ui: { shape: hexagon }
} }

View file

@ -194,7 +194,7 @@
"fields": null, "fields": null,
"methods": null, "methods": null,
"columns": null, "columns": null,
"label": "online portal", "label": "ONLINE PORTALLLL",
"fontSize": 24, "fontSize": 24,
"fontFamily": "DEFAULT", "fontFamily": "DEFAULT",
"language": "", "language": "",
@ -202,7 +202,7 @@
"italic": false, "italic": false,
"bold": false, "bold": false,
"underline": false, "underline": false,
"labelWidth": 128, "labelWidth": 198,
"labelHeight": 31, "labelHeight": 31,
"labelPosition": "OUTSIDE_TOP_CENTER", "labelPosition": "OUTSIDE_TOP_CENTER",
"zIndex": 0, "zIndex": 0,

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 806 KiB

After

Width:  |  Height:  |  Size: 806 KiB

View file

@ -10,7 +10,7 @@
"x": 12, "x": 12,
"y": 311 "y": 311
}, },
"width": 540, "width": 603,
"height": 892, "height": 892,
"opacity": 1, "opacity": 1,
"strokeDash": 0, "strokeDash": 0,
@ -174,7 +174,7 @@
"x": 322, "x": 322,
"y": 366 "y": 366
}, },
"width": 180, "width": 243,
"height": 169, "height": 169,
"opacity": 1, "opacity": 1,
"strokeDash": 0, "strokeDash": 0,
@ -194,7 +194,7 @@
"fields": null, "fields": null,
"methods": null, "methods": null,
"columns": null, "columns": null,
"label": "online portal", "label": "ONLINE PORTALLLL",
"fontSize": 24, "fontSize": 24,
"fontFamily": "DEFAULT", "fontFamily": "DEFAULT",
"language": "", "language": "",
@ -202,7 +202,7 @@
"italic": false, "italic": false,
"bold": false, "bold": false,
"underline": false, "underline": false,
"labelWidth": 128, "labelWidth": 198,
"labelHeight": 31, "labelHeight": 31,
"labelPosition": "INSIDE_TOP_CENTER", "labelPosition": "INSIDE_TOP_CENTER",
"zIndex": 0, "zIndex": 0,
@ -212,7 +212,7 @@
"id": "network.online portal.ui", "id": "network.online portal.ui",
"type": "hexagon", "type": "hexagon",
"pos": { "pos": {
"x": 372, "x": 403,
"y": 416 "y": 416
}, },
"width": 80, "width": 80,
@ -335,7 +335,7 @@
"id": "user", "id": "user",
"type": "person", "type": "person",
"pos": { "pos": {
"x": 286, "x": 317,
"y": 12 "y": 12
}, },
"width": 130, "width": 130,
@ -376,7 +376,7 @@
"id": "api server", "id": "api server",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 534, "x": 597,
"y": 59 "y": 59
}, },
"width": 116, "width": 116,
@ -417,7 +417,7 @@
"id": "logs", "id": "logs",
"type": "page", "type": "page",
"pos": { "pos": {
"x": 632, "x": 695,
"y": 311 "y": 311
}, },
"width": 73, "width": 73,
@ -643,19 +643,19 @@
"labelPercentage": 0, "labelPercentage": 0,
"route": [ "route": [
{ {
"x": 329, "x": 361,
"y": 99 "y": 99
}, },
{ {
"x": 329.33333333333337, "x": 360.83333333333337,
"y": 165 "y": 165
}, },
{ {
"x": 222.83333333333334, "x": 238.58333333333334,
"y": 165 "y": 165
}, },
{ {
"x": 222.83333333333334, "x": 238.58333333333334,
"y": 361 "y": 361
} }
], ],
@ -691,11 +691,11 @@
"labelPercentage": 0, "labelPercentage": 0,
"route": [ "route": [
{ {
"x": 399, "x": 430,
"y": 99 "y": 99
}, },
{ {
"x": 399, "x": 430,
"y": 416 "y": 416
} }
], ],
@ -731,19 +731,19 @@
"labelPercentage": 0, "labelPercentage": 0,
"route": [ "route": [
{ {
"x": 563, "x": 626,
"y": 125 "y": 125
}, },
{ {
"x": 563, "x": 626,
"y": 266 "y": 266
}, },
{ {
"x": 425.33333333333337, "x": 456.83333333333337,
"y": 266 "y": 266
}, },
{ {
"x": 425, "x": 457,
"y": 416 "y": 416
} }
], ],
@ -779,19 +779,19 @@
"labelPercentage": 0, "labelPercentage": 0,
"route": [ "route": [
{ {
"x": 621, "x": 684,
"y": 125 "y": 125
}, },
{ {
"x": 621, "x": 684,
"y": 165 "y": 165
}, },
{ {
"x": 668.5, "x": 731.5,
"y": 165 "y": 165
}, },
{ {
"x": 669, "x": 732,
"y": 311 "y": 311
} }
], ],
@ -835,11 +835,11 @@
"y": 1248 "y": 1248
}, },
{ {
"x": 592, "x": 655,
"y": 1248 "y": 1248
}, },
{ {
"x": 592, "x": 655,
"y": 125 "y": 125
} }
], ],

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 805 KiB

After

Width:  |  Height:  |  Size: 805 KiB

View file

@ -10,7 +10,7 @@
"x": 12, "x": 12,
"y": 12 "y": 12
}, },
"width": 464, "width": 497,
"height": 572, "height": 572,
"opacity": 1, "opacity": 1,
"strokeDash": 0, "strokeDash": 0,
@ -48,7 +48,7 @@
"id": "ninety nine.sixty four", "id": "ninety nine.sixty four",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 62, "x": 78,
"y": 142 "y": 142
}, },
"width": 364, "width": 364,
@ -89,7 +89,7 @@
"id": "ninety nine.sixty four.thirty two", "id": "ninety nine.sixty four.thirty two",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 112, "x": 128,
"y": 228 "y": 228
}, },
"width": 264, "width": 264,
@ -130,7 +130,7 @@
"id": "ninety nine.sixty four.thirty two.sixteen", "id": "ninety nine.sixty four.thirty two.sixteen",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 162, "x": 178,
"y": 278 "y": 278
}, },
"width": 164, "width": 164,
@ -171,7 +171,7 @@
"id": "ninety nine.sixty four.thirty two.sixteen.eight", "id": "ninety nine.sixty four.thirty two.sixteen.eight",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 212, "x": 228,
"y": 328 "y": 328
}, },
"width": 64, "width": 64,

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 654 KiB

After

Width:  |  Height:  |  Size: 654 KiB

View file

@ -10,7 +10,7 @@
"x": 12, "x": 12,
"y": 12 "y": 12
}, },
"width": 464, "width": 497,
"height": 572, "height": 572,
"opacity": 1, "opacity": 1,
"strokeDash": 0, "strokeDash": 0,
@ -48,7 +48,7 @@
"id": "ninety nine.sixty four", "id": "ninety nine.sixty four",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 62, "x": 78,
"y": 142 "y": 142
}, },
"width": 364, "width": 364,
@ -89,7 +89,7 @@
"id": "ninety nine.sixty four.thirty two", "id": "ninety nine.sixty four.thirty two",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 112, "x": 128,
"y": 228 "y": 228
}, },
"width": 264, "width": 264,
@ -130,7 +130,7 @@
"id": "ninety nine.sixty four.thirty two.sixteen", "id": "ninety nine.sixty four.thirty two.sixteen",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 162, "x": 178,
"y": 278 "y": 278
}, },
"width": 164, "width": 164,
@ -171,7 +171,7 @@
"id": "ninety nine.sixty four.thirty two.sixteen.eight", "id": "ninety nine.sixty four.thirty two.sixteen.eight",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 212, "x": 228,
"y": 328 "y": 328
}, },
"width": 64, "width": 64,

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 654 KiB

After

Width:  |  Height:  |  Size: 654 KiB

View file

@ -7,7 +7,7 @@
"id": "a", "id": "a",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 12, "x": 41,
"y": 12 "y": 12
}, },
"width": 53, "width": 53,
@ -48,10 +48,10 @@
"id": "b", "id": "b",
"type": "cloud", "type": "cloud",
"pos": { "pos": {
"x": 39, "x": 12,
"y": 213 "y": 213
}, },
"width": 180, "width": 294,
"height": 166, "height": 166,
"opacity": 1, "opacity": 1,
"strokeDash": 0, "strokeDash": 0,
@ -89,7 +89,7 @@
"id": "b.c", "id": "b.c",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 89, "x": 119,
"y": 263 "y": 263
}, },
"width": 80, "width": 80,
@ -130,7 +130,7 @@
"id": "d", "id": "d",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 102, "x": 132,
"y": 454 "y": 454
}, },
"width": 54, "width": 54,
@ -171,7 +171,7 @@
"id": "e", "id": "e",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 85, "x": 114,
"y": 12 "y": 12
}, },
"width": 53, "width": 53,
@ -212,7 +212,7 @@
"id": "f", "id": "f",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 158, "x": 187,
"y": 12 "y": 12
}, },
"width": 51, "width": 51,
@ -253,7 +253,7 @@
"id": "g", "id": "g",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 229, "x": 258,
"y": 12 "y": 12
}, },
"width": 54, "width": 54,
@ -319,19 +319,19 @@
"labelPercentage": 0, "labelPercentage": 0,
"route": [ "route": [
{ {
"x": 38.5, "x": 68.33333333333337,
"y": 78 "y": 78
}, },
{ {
"x": 38.5, "x": 68.33333333333337,
"y": 168 "y": 168
}, },
{ {
"x": 115.8333333333333, "x": 145.66666666666669,
"y": 168 "y": 168
}, },
{ {
"x": 115.8333333333333, "x": 145.66666666666669,
"y": 263 "y": 263
} }
], ],
@ -367,11 +367,11 @@
"labelPercentage": 0, "labelPercentage": 0,
"route": [ "route": [
{ {
"x": 129.16666666666663, "x": 159,
"y": 329 "y": 329
}, },
{ {
"x": 129.16666666666663, "x": 159,
"y": 454 "y": 454
} }
], ],
@ -407,19 +407,19 @@
"labelPercentage": 0, "labelPercentage": 0,
"route": [ "route": [
{ {
"x": 111.5, "x": 141.33333333333337,
"y": 78 "y": 78
}, },
{ {
"x": 111.5, "x": 141.33333333333337,
"y": 118 "y": 118
}, },
{ {
"x": 142.49999999999997, "x": 172.33333333333334,
"y": 118 "y": 118
}, },
{ {
"x": 142.49999999999997, "x": 172.33333333333334,
"y": 263 "y": 263
} }
], ],
@ -455,20 +455,20 @@
"labelPercentage": 0, "labelPercentage": 0,
"route": [ "route": [
{ {
"x": 183.5, "x": 213.33333333333337,
"y": 78 "y": 78
}, },
{ {
"x": 183.5, "x": 213.33333333333337,
"y": 118 "y": 118
}, },
{ {
"x": 152.49999999999997, "x": 182.33333333333334,
"y": 118 "y": 118
}, },
{ {
"x": 153, "x": 182,
"y": 214 "y": 212
} }
], ],
"animated": false, "animated": false,
@ -503,20 +503,12 @@
"labelPercentage": 0, "labelPercentage": 0,
"route": [ "route": [
{ {
"x": 256, "x": 285.83333333333337,
"y": 78 "y": 78
}, },
{ {
"x": 256, "x": 286,
"y": 168 "y": 281
},
{
"x": 162.49999999999997,
"y": 168
},
{
"x": 163,
"y": 219
} }
], ],
"animated": false, "animated": false,

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 657 KiB

After

Width:  |  Height:  |  Size: 657 KiB

View file

@ -10,7 +10,7 @@
"x": 12, "x": 12,
"y": 12 "y": 12
}, },
"width": 1072, "width": 1388,
"height": 328, "height": 328,
"opacity": 1, "opacity": 1,
"strokeDash": 0, "strokeDash": 0,
@ -49,10 +49,10 @@
"type": "oval", "type": "oval",
"pos": { "pos": {
"x": 62, "x": 62,
"y": 94 "y": 76
}, },
"width": 228, "width": 228,
"height": 164, "height": 200,
"opacity": 1, "opacity": 1,
"strokeDash": 0, "strokeDash": 0,
"strokeWidth": 2, "strokeWidth": 2,
@ -133,7 +133,7 @@
"x": 310, "x": 310,
"y": 62 "y": 62
}, },
"width": 228, "width": 414,
"height": 228, "height": 228,
"opacity": 1, "opacity": 1,
"strokeDash": 0, "strokeDash": 0,
@ -171,7 +171,7 @@
"id": "containers.diamond container.circle", "id": "containers.diamond container.circle",
"type": "oval", "type": "oval",
"pos": { "pos": {
"x": 360, "x": 453,
"y": 112 "y": 112
}, },
"width": 128, "width": 128,
@ -212,10 +212,10 @@
"id": "containers.oval container", "id": "containers.oval container",
"type": "oval", "type": "oval",
"pos": { "pos": {
"x": 558, "x": 744,
"y": 94 "y": 94
}, },
"width": 228, "width": 266,
"height": 164, "height": 164,
"opacity": 1, "opacity": 1,
"strokeDash": 0, "strokeDash": 0,
@ -253,7 +253,7 @@
"id": "containers.oval container.hexagon", "id": "containers.oval container.hexagon",
"type": "hexagon", "type": "hexagon",
"pos": { "pos": {
"x": 608, "x": 813,
"y": 144 "y": 144
}, },
"width": 128, "width": 128,
@ -294,10 +294,10 @@
"id": "containers.hexagon container", "id": "containers.hexagon container",
"type": "hexagon", "type": "hexagon",
"pos": { "pos": {
"x": 806, "x": 1030,
"y": 94 "y": 94
}, },
"width": 228, "width": 320,
"height": 164, "height": 164,
"opacity": 1, "opacity": 1,
"strokeDash": 0, "strokeDash": 0,
@ -335,7 +335,7 @@
"id": "containers.hexagon container.oval", "id": "containers.hexagon container.oval",
"type": "oval", "type": "oval",
"pos": { "pos": {
"x": 856, "x": 1126,
"y": 144 "y": 144
}, },
"width": 128, "width": 128,
@ -376,7 +376,7 @@
"id": "cloud", "id": "cloud",
"type": "cloud", "type": "cloud",
"pos": { "pos": {
"x": 1104, "x": 1420,
"y": 84 "y": 84
}, },
"width": 512, "width": 512,
@ -417,7 +417,7 @@
"id": "tall cylinder", "id": "tall cylinder",
"type": "cylinder", "type": "cylinder",
"pos": { "pos": {
"x": 1232, "x": 1548,
"y": 1280 "y": 1280
}, },
"width": 256, "width": 256,
@ -458,7 +458,7 @@
"id": "class", "id": "class",
"type": "class", "type": "class",
"pos": { "pos": {
"x": 960, "x": 1276,
"y": 610 "y": 610
}, },
"width": 800, "width": 800,
@ -533,7 +533,7 @@
"id": "users", "id": "users",
"type": "sql_table", "type": "sql_table",
"pos": { "pos": {
"x": 960, "x": 1276,
"y": 1862 "y": 1862
}, },
"width": 800, "width": 800,
@ -717,7 +717,7 @@
"id": "container", "id": "container",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 1923, "x": 2239,
"y": 274 "y": 274
}, },
"width": 114, "width": 114,
@ -758,7 +758,7 @@
"id": "text", "id": "text",
"type": "text", "type": "text",
"pos": { "pos": {
"x": 1780, "x": 2096,
"y": 410 "y": 410
}, },
"width": 400, "width": 400,
@ -798,7 +798,7 @@
"id": "code", "id": "code",
"type": "code", "type": "code",
"pos": { "pos": {
"x": 1780, "x": 2096,
"y": 1386 "y": 1386
}, },
"width": 400, "width": 400,
@ -838,7 +838,7 @@
"id": "small code", "id": "small code",
"type": "code", "type": "code",
"pos": { "pos": {
"x": 1884, "x": 2200,
"y": 1862 "y": 1862
}, },
"width": 191, "width": 191,
@ -903,11 +903,11 @@
"labelPercentage": 0, "labelPercentage": 0,
"route": [ "route": [
{ {
"x": 1360, "x": 1676,
"y": 339 "y": 339
}, },
{ {
"x": 1360, "x": 1676,
"y": 610 "y": 610
} }
], ],
@ -943,11 +943,11 @@
"labelPercentage": 0, "labelPercentage": 0,
"route": [ "route": [
{ {
"x": 1360, "x": 1676,
"y": 1010 "y": 1010
}, },
{ {
"x": 1360, "x": 1676,
"y": 1280 "y": 1280
} }
], ],
@ -983,11 +983,11 @@
"labelPercentage": 0, "labelPercentage": 0,
"route": [ "route": [
{ {
"x": 1360, "x": 1676,
"y": 1792 "y": 1792
}, },
{ {
"x": 1360, "x": 1676,
"y": 1862 "y": 1862
} }
], ],
@ -1023,11 +1023,11 @@
"labelPercentage": 0, "labelPercentage": 0,
"route": [ "route": [
{ {
"x": 1980, "x": 2296,
"y": 340 "y": 340
}, },
{ {
"x": 1980, "x": 2296,
"y": 410 "y": 410
} }
], ],
@ -1063,11 +1063,11 @@
"labelPercentage": 0, "labelPercentage": 0,
"route": [ "route": [
{ {
"x": 1980, "x": 2296,
"y": 1210 "y": 1210
}, },
{ {
"x": 1980, "x": 2296,
"y": 1386 "y": 1386
} }
], ],
@ -1103,11 +1103,11 @@
"labelPercentage": 0, "labelPercentage": 0,
"route": [ "route": [
{ {
"x": 1980, "x": 2296,
"y": 1686 "y": 1686
}, },
{ {
"x": 1980, "x": 2296,
"y": 1862 "y": 1862
} }
], ],

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 948 KiB

After

Width:  |  Height:  |  Size: 948 KiB