diff --git a/d2layouts/d2elklayout/layout.go b/d2layouts/d2elklayout/layout.go index be40c6bff..18dd392f7 100644 --- a/d2layouts/d2elklayout/layout.go +++ b/d2layouts/d2elklayout/layout.go @@ -79,14 +79,16 @@ type ELKGraph struct { } type ELKLayoutOptions struct { - Algorithm string `json:"elk.algorithm,omitempty"` - HierarchyHandling string `json:"elk.hierarchyHandling,omitempty"` - NodeSpacing float64 `json:"spacing.nodeNodeBetweenLayers,omitempty"` - Padding string `json:"elk.padding,omitempty"` - EdgeNodeSpacing float64 `json:"spacing.edgeNodeBetweenLayers,omitempty"` - Direction string `json:"elk.direction"` - SelfLoopSpacing float64 `json:"elk.spacing.nodeSelfLoop"` - InlineEdgeLabels bool `json:"elk.edgeLabels.inline,omitempty"` + Algorithm string `json:"elk.algorithm,omitempty"` + HierarchyHandling string `json:"elk.hierarchyHandling,omitempty"` + NodeSpacing float64 `json:"spacing.nodeNodeBetweenLayers,omitempty"` + Padding string `json:"elk.padding,omitempty"` + EdgeNodeSpacing float64 `json:"spacing.edgeNodeBetweenLayers,omitempty"` + Direction string `json:"elk.direction"` + SelfLoopSpacing float64 `json:"elk.spacing.nodeSelfLoop"` + InlineEdgeLabels bool `json:"elk.edgeLabels.inline,omitempty"` + ConsiderModelOrder string `json:"elk.layered.considerModelOrder.strategy,omitempty"` + ForceNodeModelOrder bool `json:"elk.layered.crossingMinimization.forceNodeModelOrder,omitempty"` } func Layout(ctx context.Context, g *d2graph.Graph) (err error) { @@ -109,11 +111,12 @@ func Layout(ctx context.Context, g *d2graph.Graph) (err error) { elkGraph := &ELKGraph{ ID: "root", LayoutOptions: &ELKLayoutOptions{ - Algorithm: "layered", - HierarchyHandling: "INCLUDE_CHILDREN", - NodeSpacing: 100.0, - EdgeNodeSpacing: 50.0, - SelfLoopSpacing: 50.0, + Algorithm: "layered", + HierarchyHandling: "INCLUDE_CHILDREN", + NodeSpacing: 100.0, + EdgeNodeSpacing: 50.0, + SelfLoopSpacing: 50.0, + ConsiderModelOrder: "NODES_AND_EDGES", }, } switch g.Root.Attributes.Direction.Value { @@ -157,7 +160,8 @@ func Layout(ctx context.Context, g *d2graph.Graph) (err error) { if len(obj.ChildrenArray) > 0 { n.LayoutOptions = &ELKLayoutOptions{ - Padding: "[top=75,left=75,bottom=75,right=75]", + Padding: "[top=75,left=75,bottom=75,right=75]", + ForceNodeModelOrder: true, } } diff --git a/e2etests/regression_test.go b/e2etests/regression_test.go index 966e03af2..d3fe777b6 100644 --- a/e2etests/regression_test.go +++ b/e2etests/regression_test.go @@ -178,6 +178,43 @@ build_workflow: lambda-build.yaml { script: `my network: { icon: https://icons.terrastruct.com/infra/019-network.svg?fuga=1&hoge } +`, + }, + { + name: "elk_order", + script: `queue: { + shape: queue + label: '' + + M0 + M1 + M2 + M3 + M4 + M5 + M6 +} + +m0_desc: |md + Oldest message +| +m0_desc -> queue.M0 + +m2_desc: |md + Offset +| +m2_desc -> queue.M2 + +m5_desc: |md + Last message +| +m5_desc -> queue.M5 + +m6_desc: |md + Next message will be\ + inserted here +| +m6_desc -> queue.M6 `, }, } diff --git a/e2etests/testdata/regression/dagre_special_ids/elk/board.exp.json b/e2etests/testdata/regression/dagre_special_ids/elk/board.exp.json index bd21d8cc7..d74b1feb5 100644 --- a/e2etests/testdata/regression/dagre_special_ids/elk/board.exp.json +++ b/e2etests/testdata/regression/dagre_special_ids/elk/board.exp.json @@ -6,7 +6,7 @@ "id": "\"ninety\\nnine\"", "type": "", "pos": { - "x": 714, + "x": 12, "y": 12 }, "width": 151, @@ -46,7 +46,7 @@ "id": "eighty\reight", "type": "", "pos": { - "x": 194, + "x": 183, "y": 20 }, "width": 151, @@ -86,7 +86,7 @@ "id": "\"seventy\r\\nseven\"", "type": "", "pos": { - "x": 12, + "x": 354, "y": 12 }, "width": 162, @@ -126,7 +126,7 @@ "id": "\"a\\\\yode\"", "type": "", "pos": { - "x": 885, + "x": 536, "y": 28 }, "width": 154, @@ -166,7 +166,7 @@ "id": "there", "type": "", "pos": { - "x": 546, + "x": 716, "y": 254 }, "width": 143, @@ -206,7 +206,7 @@ "id": "'a\\\"ode'", "type": "", "pos": { - "x": 540, + "x": 710, "y": 28 }, "width": 154, @@ -246,7 +246,7 @@ "id": "\"a\\\\node\"", "type": "", "pos": { - "x": 365, + "x": 884, "y": 28 }, "width": 155, @@ -310,19 +310,19 @@ "labelPercentage": 0, "route": [ { - "x": 962, + "x": 613, "y": 154 }, { - "x": 962, + "x": 613, "y": 204 }, { - "x": 652.75, + "x": 751.25, "y": 204 }, { - "x": 652.75, + "x": 751.25, "y": 254 } ], @@ -357,11 +357,11 @@ "labelPercentage": 0, "route": [ { - "x": 617, + "x": 787, "y": 154 }, { - "x": 617, + "x": 787, "y": 254 } ], @@ -396,19 +396,19 @@ "labelPercentage": 0, "route": [ { - "x": 442.5, + "x": 961.5, "y": 154 }, { - "x": 442.5, + "x": 961.5, "y": 204 }, { - "x": 581.25, + "x": 822.75, "y": 204 }, { - "x": 581.25, + "x": 822.75, "y": 254 } ], diff --git a/e2etests/testdata/regression/dagre_special_ids/elk/sketch.exp.svg b/e2etests/testdata/regression/dagre_special_ids/elk/sketch.exp.svg index fb14b30ee..985f6ad4e 100644 --- a/e2etests/testdata/regression/dagre_special_ids/elk/sketch.exp.svg +++ b/e2etests/testdata/regression/dagre_special_ids/elk/sketch.exp.svg @@ -18,7 +18,7 @@ width="1227" height="568" viewBox="-88 -88 1227 568">ninetynineeighty eightseventy sevena\yodetherea\"odea\node +ninetynineeighty eightseventy sevena\yodetherea\"odea\node lambda-build.yamllambda-deploy.yamlapollo-deploy.yamlPush to main branchGitHub ActionsS3TerraformAWSManual TriggerGitHub ActionsAWSApollo RepoGitHub ActionsAWS TriggersBuilds zip and pushes it Pulls zip to deployChanges live lambdasLaunchesBuilds zippushes them to S3. Deploys lambdasusing TerraformTriggered manually/push to master test test test test test test testtest +lambda-build.yamllambda-deploy.yamlapollo-deploy.yamlPush to main branchGitHub ActionsS3TerraformAWSManual TriggerGitHub ActionsAWSApollo RepoGitHub ActionsAWS TriggersBuilds zip and pushes it Pulls zip to deployChanges live lambdasLaunchesBuilds zippushes them to S3. Deploys lambdasusing TerraformTriggered manually/push to master test test test test test test testtest - - - - - - - - + + + + + + + + Oldest message +Offset +Last message +Next message will be +inserted here +M0M1M2M3M4M5M6 + + + \ No newline at end of file diff --git a/e2etests/testdata/regression/elk_order/elk/board.exp.json b/e2etests/testdata/regression/elk_order/elk/board.exp.json new file mode 100644 index 000000000..10c667ae8 --- /dev/null +++ b/e2etests/testdata/regression/elk_order/elk/board.exp.json @@ -0,0 +1,639 @@ +{ + "name": "", + "fontFamily": "SourceSansPro", + "shapes": [ + { + "id": "queue", + "type": "queue", + "pos": { + "x": 12, + "y": 165 + }, + "width": 1146, + "height": 276, + "opacity": 1, + "strokeDash": 0, + "strokeWidth": 2, + "borderRadius": 0, + "fill": "#DEE1EB", + "stroke": "#0D32B2", + "shadow": false, + "3d": false, + "multiple": false, + "tooltip": "", + "link": "", + "icon": null, + "iconPosition": "", + "blend": false, + "fields": null, + "methods": null, + "columns": null, + "label": "", + "fontSize": 28, + "fontFamily": "DEFAULT", + "language": "", + "color": "#0A0F25", + "italic": false, + "bold": false, + "underline": false, + "labelWidth": 0, + "labelHeight": 0, + "zIndex": 0, + "level": 1 + }, + { + "id": "queue.M0", + "type": "", + "pos": { + "x": 87, + "y": 240 + }, + "width": 125, + "height": 126, + "opacity": 1, + "strokeDash": 0, + "strokeWidth": 2, + "borderRadius": 0, + "fill": "#EDF0FD", + "stroke": "#0D32B2", + "shadow": false, + "3d": false, + "multiple": false, + "tooltip": "", + "link": "", + "icon": null, + "iconPosition": "", + "blend": false, + "fields": null, + "methods": null, + "columns": null, + "label": "M0", + "fontSize": 16, + "fontFamily": "DEFAULT", + "language": "", + "color": "#0A0F25", + "italic": false, + "bold": true, + "underline": false, + "labelWidth": 25, + "labelHeight": 26, + "labelPosition": "INSIDE_MIDDLE_CENTER", + "zIndex": 0, + "level": 2 + }, + { + "id": "queue.M1", + "type": "", + "pos": { + "x": 232, + "y": 240 + }, + "width": 125, + "height": 126, + "opacity": 1, + "strokeDash": 0, + "strokeWidth": 2, + "borderRadius": 0, + "fill": "#EDF0FD", + "stroke": "#0D32B2", + "shadow": false, + "3d": false, + "multiple": false, + "tooltip": "", + "link": "", + "icon": null, + "iconPosition": "", + "blend": false, + "fields": null, + "methods": null, + "columns": null, + "label": "M1", + "fontSize": 16, + "fontFamily": "DEFAULT", + "language": "", + "color": "#0A0F25", + "italic": false, + "bold": true, + "underline": false, + "labelWidth": 25, + "labelHeight": 26, + "labelPosition": "INSIDE_MIDDLE_CENTER", + "zIndex": 0, + "level": 2 + }, + { + "id": "queue.M2", + "type": "", + "pos": { + "x": 377, + "y": 240 + }, + "width": 125, + "height": 126, + "opacity": 1, + "strokeDash": 0, + "strokeWidth": 2, + "borderRadius": 0, + "fill": "#EDF0FD", + "stroke": "#0D32B2", + "shadow": false, + "3d": false, + "multiple": false, + "tooltip": "", + "link": "", + "icon": null, + "iconPosition": "", + "blend": false, + "fields": null, + "methods": null, + "columns": null, + "label": "M2", + "fontSize": 16, + "fontFamily": "DEFAULT", + "language": "", + "color": "#0A0F25", + "italic": false, + "bold": true, + "underline": false, + "labelWidth": 25, + "labelHeight": 26, + "labelPosition": "INSIDE_MIDDLE_CENTER", + "zIndex": 0, + "level": 2 + }, + { + "id": "queue.M3", + "type": "", + "pos": { + "x": 522, + "y": 240 + }, + "width": 125, + "height": 126, + "opacity": 1, + "strokeDash": 0, + "strokeWidth": 2, + "borderRadius": 0, + "fill": "#EDF0FD", + "stroke": "#0D32B2", + "shadow": false, + "3d": false, + "multiple": false, + "tooltip": "", + "link": "", + "icon": null, + "iconPosition": "", + "blend": false, + "fields": null, + "methods": null, + "columns": null, + "label": "M3", + "fontSize": 16, + "fontFamily": "DEFAULT", + "language": "", + "color": "#0A0F25", + "italic": false, + "bold": true, + "underline": false, + "labelWidth": 25, + "labelHeight": 26, + "labelPosition": "INSIDE_MIDDLE_CENTER", + "zIndex": 0, + "level": 2 + }, + { + "id": "queue.M4", + "type": "", + "pos": { + "x": 667, + "y": 240 + }, + "width": 126, + "height": 126, + "opacity": 1, + "strokeDash": 0, + "strokeWidth": 2, + "borderRadius": 0, + "fill": "#EDF0FD", + "stroke": "#0D32B2", + "shadow": false, + "3d": false, + "multiple": false, + "tooltip": "", + "link": "", + "icon": null, + "iconPosition": "", + "blend": false, + "fields": null, + "methods": null, + "columns": null, + "label": "M4", + "fontSize": 16, + "fontFamily": "DEFAULT", + "language": "", + "color": "#0A0F25", + "italic": false, + "bold": true, + "underline": false, + "labelWidth": 26, + "labelHeight": 26, + "labelPosition": "INSIDE_MIDDLE_CENTER", + "zIndex": 0, + "level": 2 + }, + { + "id": "queue.M5", + "type": "", + "pos": { + "x": 813, + "y": 240 + }, + "width": 125, + "height": 126, + "opacity": 1, + "strokeDash": 0, + "strokeWidth": 2, + "borderRadius": 0, + "fill": "#EDF0FD", + "stroke": "#0D32B2", + "shadow": false, + "3d": false, + "multiple": false, + "tooltip": "", + "link": "", + "icon": null, + "iconPosition": "", + "blend": false, + "fields": null, + "methods": null, + "columns": null, + "label": "M5", + "fontSize": 16, + "fontFamily": "DEFAULT", + "language": "", + "color": "#0A0F25", + "italic": false, + "bold": true, + "underline": false, + "labelWidth": 25, + "labelHeight": 26, + "labelPosition": "INSIDE_MIDDLE_CENTER", + "zIndex": 0, + "level": 2 + }, + { + "id": "queue.M6", + "type": "", + "pos": { + "x": 958, + "y": 240 + }, + "width": 125, + "height": 126, + "opacity": 1, + "strokeDash": 0, + "strokeWidth": 2, + "borderRadius": 0, + "fill": "#EDF0FD", + "stroke": "#0D32B2", + "shadow": false, + "3d": false, + "multiple": false, + "tooltip": "", + "link": "", + "icon": null, + "iconPosition": "", + "blend": false, + "fields": null, + "methods": null, + "columns": null, + "label": "M6", + "fontSize": 16, + "fontFamily": "DEFAULT", + "language": "", + "color": "#0A0F25", + "italic": false, + "bold": true, + "underline": false, + "labelWidth": 25, + "labelHeight": 26, + "labelPosition": "INSIDE_MIDDLE_CENTER", + "zIndex": 0, + "level": 2 + }, + { + "id": "m0_desc", + "type": "text", + "pos": { + "x": 97, + "y": 36 + }, + "width": 106, + "height": 24, + "opacity": 1, + "strokeDash": 0, + "strokeWidth": 2, + "borderRadius": 0, + "fill": "transparent", + "stroke": "#0A0F25", + "shadow": false, + "3d": false, + "multiple": false, + "tooltip": "", + "link": "", + "icon": null, + "iconPosition": "", + "blend": false, + "fields": null, + "methods": null, + "columns": null, + "label": "Oldest message", + "fontSize": 16, + "fontFamily": "DEFAULT", + "language": "markdown", + "color": "#0A0F25", + "italic": false, + "bold": true, + "underline": false, + "labelWidth": 106, + "labelHeight": 24, + "zIndex": 0, + "level": 1 + }, + { + "id": "m2_desc", + "type": "text", + "pos": { + "x": 419, + "y": 36 + }, + "width": 41, + "height": 24, + "opacity": 1, + "strokeDash": 0, + "strokeWidth": 2, + "borderRadius": 0, + "fill": "transparent", + "stroke": "#0A0F25", + "shadow": false, + "3d": false, + "multiple": false, + "tooltip": "", + "link": "", + "icon": null, + "iconPosition": "", + "blend": false, + "fields": null, + "methods": null, + "columns": null, + "label": "Offset", + "fontSize": 16, + "fontFamily": "DEFAULT", + "language": "markdown", + "color": "#0A0F25", + "italic": false, + "bold": true, + "underline": false, + "labelWidth": 41, + "labelHeight": 24, + "zIndex": 0, + "level": 1 + }, + { + "id": "m5_desc", + "type": "text", + "pos": { + "x": 831, + "y": 36 + }, + "width": 90, + "height": 24, + "opacity": 1, + "strokeDash": 0, + "strokeWidth": 2, + "borderRadius": 0, + "fill": "transparent", + "stroke": "#0A0F25", + "shadow": false, + "3d": false, + "multiple": false, + "tooltip": "", + "link": "", + "icon": null, + "iconPosition": "", + "blend": false, + "fields": null, + "methods": null, + "columns": null, + "label": "Last message", + "fontSize": 16, + "fontFamily": "DEFAULT", + "language": "markdown", + "color": "#0A0F25", + "italic": false, + "bold": true, + "underline": false, + "labelWidth": 90, + "labelHeight": 24, + "zIndex": 0, + "level": 1 + }, + { + "id": "m6_desc", + "type": "text", + "pos": { + "x": 951, + "y": 12 + }, + "width": 140, + "height": 48, + "opacity": 1, + "strokeDash": 0, + "strokeWidth": 2, + "borderRadius": 0, + "fill": "transparent", + "stroke": "#0A0F25", + "shadow": false, + "3d": false, + "multiple": false, + "tooltip": "", + "link": "", + "icon": null, + "iconPosition": "", + "blend": false, + "fields": null, + "methods": null, + "columns": null, + "label": "Next message will be\\\ninserted here", + "fontSize": 16, + "fontFamily": "DEFAULT", + "language": "markdown", + "color": "#0A0F25", + "italic": false, + "bold": true, + "underline": false, + "labelWidth": 140, + "labelHeight": 48, + "zIndex": 0, + "level": 1 + } + ], + "connections": [ + { + "id": "(m0_desc -> queue.M0)[0]", + "src": "m0_desc", + "srcArrow": "none", + "srcLabel": "", + "dst": "queue.M0", + "dstArrow": "triangle", + "dstLabel": "", + "opacity": 1, + "strokeDash": 0, + "strokeWidth": 2, + "stroke": "#0D32B2", + "label": "", + "fontSize": 16, + "fontFamily": "DEFAULT", + "language": "", + "color": "#676C7E", + "italic": true, + "bold": false, + "underline": false, + "labelWidth": 0, + "labelHeight": 0, + "labelPosition": "", + "labelPercentage": 0, + "route": [ + { + "x": 149.5, + "y": 60 + }, + { + "x": 149.5, + "y": 240 + } + ], + "animated": false, + "tooltip": "", + "icon": null, + "zIndex": 0 + }, + { + "id": "(m2_desc -> queue.M2)[0]", + "src": "m2_desc", + "srcArrow": "none", + "srcLabel": "", + "dst": "queue.M2", + "dstArrow": "triangle", + "dstLabel": "", + "opacity": 1, + "strokeDash": 0, + "strokeWidth": 2, + "stroke": "#0D32B2", + "label": "", + "fontSize": 16, + "fontFamily": "DEFAULT", + "language": "", + "color": "#676C7E", + "italic": true, + "bold": false, + "underline": false, + "labelWidth": 0, + "labelHeight": 0, + "labelPosition": "", + "labelPercentage": 0, + "route": [ + { + "x": 439.5, + "y": 60 + }, + { + "x": 439.5, + "y": 240 + } + ], + "animated": false, + "tooltip": "", + "icon": null, + "zIndex": 0 + }, + { + "id": "(m5_desc -> queue.M5)[0]", + "src": "m5_desc", + "srcArrow": "none", + "srcLabel": "", + "dst": "queue.M5", + "dstArrow": "triangle", + "dstLabel": "", + "opacity": 1, + "strokeDash": 0, + "strokeWidth": 2, + "stroke": "#0D32B2", + "label": "", + "fontSize": 16, + "fontFamily": "DEFAULT", + "language": "", + "color": "#676C7E", + "italic": true, + "bold": false, + "underline": false, + "labelWidth": 0, + "labelHeight": 0, + "labelPosition": "", + "labelPercentage": 0, + "route": [ + { + "x": 875.5, + "y": 60 + }, + { + "x": 875.5, + "y": 240 + } + ], + "animated": false, + "tooltip": "", + "icon": null, + "zIndex": 0 + }, + { + "id": "(m6_desc -> queue.M6)[0]", + "src": "m6_desc", + "srcArrow": "none", + "srcLabel": "", + "dst": "queue.M6", + "dstArrow": "triangle", + "dstLabel": "", + "opacity": 1, + "strokeDash": 0, + "strokeWidth": 2, + "stroke": "#0D32B2", + "label": "", + "fontSize": 16, + "fontFamily": "DEFAULT", + "language": "", + "color": "#676C7E", + "italic": true, + "bold": false, + "underline": false, + "labelWidth": 0, + "labelHeight": 0, + "labelPosition": "", + "labelPercentage": 0, + "route": [ + { + "x": 1020.5, + "y": 60 + }, + { + "x": 1020.5, + "y": 240 + } + ], + "animated": false, + "tooltip": "", + "icon": null, + "zIndex": 0 + } + ] +} diff --git a/e2etests/testdata/regression/elk_order/elk/sketch.exp.svg b/e2etests/testdata/regression/elk_order/elk/sketch.exp.svg new file mode 100644 index 000000000..63a3b016e --- /dev/null +++ b/e2etests/testdata/regression/elk_order/elk/sketch.exp.svg @@ -0,0 +1,799 @@ + +Oldest message +Offset +Last message +Next message will be +inserted here +M0M1M2M3M4M5M6 + + + \ No newline at end of file diff --git a/e2etests/testdata/stable/all_shapes/elk/board.exp.json b/e2etests/testdata/stable/all_shapes/elk/board.exp.json index bb4e1b59a..1e9044c30 100644 --- a/e2etests/testdata/stable/all_shapes/elk/board.exp.json +++ b/e2etests/testdata/stable/all_shapes/elk/board.exp.json @@ -6,7 +6,7 @@ "id": "rectangle", "type": "rectangle", "pos": { - "x": 769, + "x": 12, "y": 12 }, "width": 171, @@ -46,7 +46,7 @@ "id": "square", "type": "rectangle", "pos": { - "x": 778, + "x": 21, "y": 238 }, "width": 154, @@ -86,7 +86,7 @@ "id": "page", "type": "page", "pos": { - "x": 785, + "x": 28, "y": 492 }, "width": 139, @@ -126,7 +126,7 @@ "id": "parallelogram", "type": "parallelogram", "pos": { - "x": 960, + "x": 203, "y": 12 }, "width": 204, @@ -166,7 +166,7 @@ "id": "document", "type": "document", "pos": { - "x": 974, + "x": 217, "y": 252 }, "width": 177, @@ -206,7 +206,7 @@ "id": "cylinder", "type": "cylinder", "pos": { - "x": 980, + "x": 223, "y": 492 }, "width": 164, @@ -246,7 +246,7 @@ "id": "queue", "type": "queue", "pos": { - "x": 19, + "x": 427, "y": 12 }, "width": 149, @@ -286,7 +286,7 @@ "id": "package", "type": "package", "pos": { - "x": 12, + "x": 420, "y": 252 }, "width": 163, @@ -326,7 +326,7 @@ "id": "step", "type": "step", "pos": { - "x": 26, + "x": 434, "y": 492 }, "width": 136, @@ -366,7 +366,7 @@ "id": "callout", "type": "callout", "pos": { - "x": 213, + "x": 621, "y": 12 }, "width": 155, @@ -406,7 +406,7 @@ "id": "stored_data", "type": "stored_data", "pos": { - "x": 195, + "x": 603, "y": 252 }, "width": 191, @@ -446,7 +446,7 @@ "id": "person", "type": "person", "pos": { - "x": 214, + "x": 622, "y": 492 }, "width": 153, @@ -486,7 +486,7 @@ "id": "diamond", "type": "diamond", "pos": { - "x": 581, + "x": 798, "y": 12 }, "width": 168, @@ -526,7 +526,7 @@ "id": "oval", "type": "oval", "pos": { - "x": 597, + "x": 814, "y": 252 }, "width": 136, @@ -566,7 +566,7 @@ "id": "circle", "type": "oval", "pos": { - "x": 593, + "x": 810, "y": 492 }, "width": 144, @@ -606,7 +606,7 @@ "id": "hexagon", "type": "hexagon", "pos": { - "x": 396, + "x": 986, "y": 12 }, "width": 165, @@ -646,7 +646,7 @@ "id": "cloud", "type": "cloud", "pos": { - "x": 406, + "x": 996, "y": 238 }, "width": 145, @@ -710,11 +710,11 @@ "labelPercentage": 0, "route": [ { - "x": 854.5, + "x": 97.5, "y": 138 }, { - "x": 854.5, + "x": 97.5, "y": 238 } ], @@ -749,11 +749,11 @@ "labelPercentage": 0, "route": [ { - "x": 854.5, + "x": 97.5, "y": 392 }, { - "x": 855, + "x": 98, "y": 492 } ], @@ -788,11 +788,11 @@ "labelPercentage": 0, "route": [ { - "x": 1062, + "x": 305, "y": 138 }, { - "x": 1062, + "x": 305, "y": 252 } ], @@ -827,11 +827,11 @@ "labelPercentage": 0, "route": [ { - "x": 1062, + "x": 305, "y": 361 }, { - "x": 1062, + "x": 305, "y": 492 } ], @@ -866,11 +866,11 @@ "labelPercentage": 0, "route": [ { - "x": 93, + "x": 501, "y": 138 }, { - "x": 94, + "x": 502, "y": 252 } ], @@ -905,11 +905,11 @@ "labelPercentage": 0, "route": [ { - "x": 93, + "x": 501, "y": 378 }, { - "x": 94, + "x": 502, "y": 492 } ], @@ -944,11 +944,11 @@ "labelPercentage": 0, "route": [ { - "x": 291, + "x": 699, "y": 138 }, { - "x": 291, + "x": 699, "y": 252 } ], @@ -983,11 +983,11 @@ "labelPercentage": 0, "route": [ { - "x": 290, + "x": 698, "y": 378 }, { - "x": 291, + "x": 699, "y": 492 } ], @@ -1022,11 +1022,11 @@ "labelPercentage": 0, "route": [ { - "x": 665, + "x": 882, "y": 138 }, { - "x": 665, + "x": 882, "y": 252 } ], @@ -1061,11 +1061,11 @@ "labelPercentage": 0, "route": [ { - "x": 665, + "x": 882, "y": 378 }, { - "x": 665, + "x": 882, "y": 492 } ], @@ -1100,11 +1100,11 @@ "labelPercentage": 0, "route": [ { - "x": 478, + "x": 1068, "y": 138 }, { - "x": 479, + "x": 1069, "y": 240 } ], diff --git a/e2etests/testdata/stable/all_shapes/elk/sketch.exp.svg b/e2etests/testdata/stable/all_shapes/elk/sketch.exp.svg index 197d3d968..bbdb6ed74 100644 --- a/e2etests/testdata/stable/all_shapes/elk/sketch.exp.svg +++ b/e2etests/testdata/stable/all_shapes/elk/sketch.exp.svg @@ -2,7 +2,7 @@ rectanglesquarepageparallelogramdocumentcylinderqueuepackagestepcalloutstored_datapersondiamondovalcirclehexagoncloud - +rectanglesquarepageparallelogramdocumentcylinderqueuepackagestepcalloutstored_datapersondiamondovalcirclehexagoncloud + rectanglesquarepageparallelogramdocumentcylinderqueuepackagestepcalloutstored_datapersondiamondovalcirclehexagoncloud - +rectanglesquarepageparallelogramdocumentcylinderqueuepackagestepcalloutstored_datapersondiamondovalcirclehexagoncloud + abcdefghijklmno +abcdefghijklmno aabbllmmnn -oocciikkddgg -hhjjee -ff1122 334455667788 - - - - - - - - - +aabbllmmnn +oocciikkddgg +hhjjee +ff1122 334455667788 + + + + + + + + + abcdefghijklmnopq - +abcdefghijklmnopq + finallyatreeandnodessomemoremanythenhereyouhavehierarchyanotherofnestingtreesatreeinsidehierarchyroot - +finallyatreeandnodessomemoremanythenhereyouhavehierarchyanotherofnestingtreesatreeinsidehierarchyroot + size XSsize Ssize Msize Lsize XLsize XXLsize XXXLcustom 8custom 12custom 18custom 21custom 64 custom 10custom 15custom 48 - - - - +size XSsize Ssize Msize Lsize XLsize XXLsize XXXLcustom 8custom 12custom 18custom 21custom 64 custom 10custom 15custom 48 + + + + aabbccddllffwwyyadnniijjkkssuurmeemmmmgghhzzooppqqrrttvvxxabac 123456 - - - - - - - +aabbccddllffwwyyadnniijjkkssuurmeemmmmgghhzzooppqqrrttvvxxabac 123456 + + + + + + + abcdefghiqrjmnoszaabbeeffggklptuwxyccddv - +abcdefghiqrjmnoszaabbeeffggklptuwxyccddv + mixed togethersugarsolution we get +mixed togethersugarsolution we get - + abcdefghijklmnopqrstuvw - +abcdefghijklmnopqrstuvw + abcdefghijklmnopqrstu - +abcdefghijklmnopqrstu + acdefgbh +acdefgbh topabcbottomstartend +topabcbottomstartend xyz hello - - +xyz hello + + usersid -int -name -string -email -string -password -string -last_login -datetime -productsid -int -price -decimal -sku -string -name -string -ordersid -int -user_id -int -product_id -int -shipmentsid -int -order_id -int -tracking_number -string -status -string - +usersid +int +name +string +email +string +password +string +last_login +datetime +productsid +int +price +decimal +sku +string +name +string +ordersid +int +user_id +int +product_id +int +shipmentsid +int +order_id +int +tracking_number +string +status +string + acbl1l2c1l2c3l2c2l3c1l3c2l4bacacbabcc1c2c3abc - +acbl1l2c1l2c3l2c2l3c1l3c2l4bacacbabcc1c2c3abc + AKHIALFLGAMSTNAZCANVNMUTARLAMOOKTXORCOKSNEWYCTMANYRIDEMDNJPANCSCIDMTWAILINIAMIKYWIOHMNSDVAWVMENHVTND - +AKHIALFLGAMSTNAZCANVNMUTARLAMOOKTXORCOKSNEWYCTMANYRIDEMDNJPANCSCIDMTWAILINIAMIKYWIOHMNSDVAWVMENHVTND +
Oldest message
Offset
Last message
Next message will be +inserted here
nn
gg
ee