diff --git a/README.md b/README.md index 842662b34..fd927cb76 100644 --- a/README.md +++ b/README.md @@ -202,11 +202,13 @@ let us know and we'll be happy to include it here! - **VSCode extension**: [https://github.com/terrastruct/d2-vscode](https://github.com/terrastruct/d2-vscode) - **Vim extension**: [https://github.com/terrastruct/d2-vim](https://github.com/terrastruct/d2-vim) - **Obsidian plugin**: [https://github.com/terrastruct/d2-obsidian](https://github.com/terrastruct/d2-obsidian) +- **Slack app**: [https://d2lang.com/tour/slack](https://d2lang.com/tour/slack) ### Community plugins - **Tree-sitter grammar**: [https://github.com/pleshevskiy/tree-sitter-d2](https://github.com/pleshevskiy/tree-sitter-d2) - **Emacs major mode**: [https://github.com/andorsk/d2-mode](https://github.com/andorsk/d2-mode) +- **Goldmark extension**: [https://github.com/FurqanSoftware/goldmark-d2](https://github.com/FurqanSoftware/goldmark-d2) - **Telegram bot**: [https://github.com/meinside/telegram-d2-bot](https://github.com/meinside/telegram-d2-bot) - **Postgres importer**: [https://github.com/zekenie/d2-erd-from-postgres](https://github.com/zekenie/d2-erd-from-postgres) - **Structurizr to D2 exporter**: [https://github.com/goto1134/structurizr-d2-exporter](https://github.com/goto1134/structurizr-d2-exporter) diff --git a/ci/release/changelogs/next.md b/ci/release/changelogs/next.md index a4c14441b..150fc23d1 100644 --- a/ci/release/changelogs/next.md +++ b/ci/release/changelogs/next.md @@ -1,16 +1,34 @@ +Many have asked how to get the diagram to look like the one on D2's [cheat sheet](https://d2lang.com/tour/cheat-sheet). With this release, now you can! See [https://d2lang.com/tour/themes](https://d2lang.com/tour/themes) for more. + +![sketch](https://user-images.githubusercontent.com/3120367/209235066-d8ad6b3c-d19b-491d-b014-407f3c47407f.png) + +The Slack app for D2 has now hit production, so if you're looking for the quickest way to express a visual model without interrupting the conversation flow, go to [http://d2lang.com/tour/slack](http://d2lang.com/tour/slack) to install. + +Hope everyone is enjoying the holidays this week! + #### Features ๐Ÿš€ - `sketch` flag renders the diagram to look like it was sketched by hand. [#492](https://github.com/terrastruct/d2/pull/492) +- `near` now takes constants like `top-center`, particularly useful for diagram titles. See [docs](https://d2lang.com/tour/text#near-a-constant) for more. [#525](https://github.com/terrastruct/d2/pull/525) #### Improvements ๐Ÿงน -- Improved label placements for shapes with images to avoid overlapping container labels. [#474](https://github.com/terrastruct/d2/pull/474) +- Improved label placements for shapes with images and icons to avoid overlapping labels. [#474](https://github.com/terrastruct/d2/pull/474) +- Themes are applied to `sql_table` and `class` shapes. [#521](https://github.com/terrastruct/d2/pull/521) +- `class` shapes use monospaced font. [#521](https://github.com/terrastruct/d2/pull/521) +- Sequence diagram edge group labels have more reasonable padding. [#512](https://github.com/terrastruct/d2/pull/512) +- ELK layout engine preserves order of nodes. [#282](https://github.com/terrastruct/d2/issues/282) +- Non-markdown text (`shape: text` without language block) works with `bold`, `italic`, `underline`, and `font-size`. [#528](https://github.com/terrastruct/d2/pull/528) +- Markdown headings set font-family explicitly, so that external stylesheets with more specific targeting don't override it. [#525](https://github.com/terrastruct/d2/pull/525) #### Bugfixes โ›‘๏ธ - `d2 fmt` only rewrites if it has changes, instead of always rewriting. [#470](https://github.com/terrastruct/d2/pull/470) -- Fixed an issue where text could overflow in sql_table shapes. [#458](https://github.com/terrastruct/d2/pull/458) -- Fixed an issue with elk layouts accounting for edge labels as if they were placed on the side of the edge. [#483](https://github.com/terrastruct/d2/pull/483) -- Fixed an issue where dagre layouts may not have enough spacing for all edge labels. [#484](https://github.com/terrastruct/d2/pull/484) -- Fixed connections being clipped if they were at the very top or left edges of the diagram. [#493](https://github.com/terrastruct/d2/pull/493) -- Fixed edge case where the key `null` was compiling wrongly. [#507](https://github.com/terrastruct/d2/issues/507) +- Text no longer overflows in `sql_table` shapes. [#458](https://github.com/terrastruct/d2/pull/458) +- ELK connection labels are now given the appropriate dimensions. [#483](https://github.com/terrastruct/d2/pull/483) +- Dagre connection lengths make room for longer labels. [#484](https://github.com/terrastruct/d2/pull/484) +- Icons with query parameters are escaped to valid SVG XML. [#438](https://github.com/terrastruct/d2/issues/438) +- Connections at the boundaries no longer get part of its stroke clipped. [#493](https://github.com/terrastruct/d2/pull/493) +- Fixes edge case where `style` being defined in same scope as `sql_table` causes compiler to skip compiling `sql_table`. [#506](https://github.com/terrastruct/d2/issues/506) +- Fixes panic passing a non-string value to `constraint`. [#248](https://github.com/terrastruct/d2/issues/248) +- Fixes edge case where the key `null` was compiling wrongly. [#507](https://github.com/terrastruct/d2/issues/507) diff --git a/ci/sub b/ci/sub index 494f23a57..b1ec0a8d4 160000 --- a/ci/sub +++ b/ci/sub @@ -1 +1 @@ -Subproject commit 494f23a574d5d96b369e886aa1cd48df059dc912 +Subproject commit b1ec0a8d430a62b7556211ed8bcd7b6e41e2362c diff --git a/d2compiler/compile.go b/d2compiler/compile.go index 901f6bcee..9ca373d81 100644 --- a/d2compiler/compile.go +++ b/d2compiler/compile.go @@ -583,16 +583,25 @@ func (c *compiler) compileShapes(obj *d2graph.Object) { c.compileShapes(obj) } - for _, obj := range obj.ChildrenArray { - switch obj.Attributes.Shape.Value { + for i := 0; i < len(obj.ChildrenArray); i++ { + ch := obj.ChildrenArray[i] + switch ch.Attributes.Shape.Value { case d2target.ShapeClass, d2target.ShapeSQLTable: - flattenContainer(obj.Graph, obj) + flattenContainer(obj.Graph, ch) } - if obj.IDVal == "style" { - obj.Parent.Attributes.Style = obj.Attributes.Style + if ch.IDVal == "style" { + obj.Attributes.Style = ch.Attributes.Style if obj.Graph != nil { - flattenContainer(obj.Graph, obj) - removeObject(obj.Graph, obj) + flattenContainer(obj.Graph, ch) + for i := 0; i < len(obj.Graph.Objects); i++ { + if obj.Graph.Objects[i] == ch { + obj.Graph.Objects = append(obj.Graph.Objects[:i], obj.Graph.Objects[i+1:]...) + break + } + } + delete(obj.Children, ch.ID) + obj.ChildrenArray = append(obj.ChildrenArray[:i], obj.ChildrenArray[i+1:]...) + i-- } } } @@ -679,6 +688,10 @@ func (c *compiler) compileSQLTable(obj *d2graph.Object) { continue } if n.MapKey.Key.Path[0].Unbox().ScalarString() == "constraint" { + if n.MapKey.Value.StringBox().Unbox() == nil { + c.errorf(n.MapKey.GetRange().Start, n.MapKey.GetRange().End, "constraint value must be a string") + return + } d2Col.Constraint = n.MapKey.Value.StringBox().Unbox().ScalarString() } } @@ -706,23 +719,6 @@ func (c *compiler) compileSQLTable(obj *d2graph.Object) { } } -// TODO too similar to flattenContainer, should reconcile in a refactor -func removeObject(g *d2graph.Graph, obj *d2graph.Object) { - for i := 0; i < len(obj.Graph.Objects); i++ { - if obj.Graph.Objects[i] == obj { - obj.Graph.Objects = append(obj.Graph.Objects[:i], obj.Graph.Objects[i+1:]...) - break - } - } - delete(obj.Parent.Children, obj.ID) - for i, child := range obj.Parent.ChildrenArray { - if obj == child { - obj.Parent.ChildrenArray = append(obj.Parent.ChildrenArray[:i], obj.Parent.ChildrenArray[i+1:]...) - break - } - } -} - func flattenContainer(g *d2graph.Graph, obj *d2graph.Object) { absID := obj.AbsID() @@ -854,9 +850,14 @@ func (c *compiler) validateKeys(obj *d2graph.Object, m *d2ast.Map) { func (c *compiler) validateNear(g *d2graph.Graph) { for _, obj := range g.Objects { if obj.Attributes.NearKey != nil { - _, ok := g.Root.HasChild(d2graph.Key(obj.Attributes.NearKey)) - if !ok { - c.errorf(obj.Attributes.NearKey.GetRange().Start, obj.Attributes.NearKey.GetRange().End, "near key %#v does not exist. It must be the absolute path to a shape.", d2format.Format(obj.Attributes.NearKey)) + _, isKey := g.Root.HasChild(d2graph.Key(obj.Attributes.NearKey)) + _, isConst := d2graph.NearConstants[d2graph.Key(obj.Attributes.NearKey)[0]] + if !isKey && !isConst { + c.errorf(obj.Attributes.NearKey.GetRange().Start, obj.Attributes.NearKey.GetRange().End, "near key %#v must be the absolute path to a shape or one of the following constants: %s", d2format.Format(obj.Attributes.NearKey), strings.Join(d2graph.NearConstantsArray, ", ")) + continue + } + if !isKey && isConst && obj.Parent != g.Root { + c.errorf(obj.Attributes.NearKey.GetRange().Start, obj.Attributes.NearKey.GetRange().End, "constant near keys can only be set on root level shapes") continue } } diff --git a/d2compiler/compile_test.go b/d2compiler/compile_test.go index f72894721..29d99cee0 100644 --- a/d2compiler/compile_test.go +++ b/d2compiler/compile_test.go @@ -1266,6 +1266,28 @@ x -> y: { } }, }, + { + name: "near_constant", + + text: `x.near: top-center +`, + }, + { + name: "near_bad_constant", + + text: `x.near: txop-center +`, + expErr: `d2/testdata/d2compiler/TestCompile/near_bad_constant.d2:1:1: near key "txop-center" must be the absolute path to a shape or one of the following constants: top-left, top-center, top-right, center-left, center-right, bottom-left, bottom-center, bottom-right +`, + }, + { + name: "nested_near_constant", + + text: `x.y.near: top-center +`, + expErr: `d2/testdata/d2compiler/TestCompile/nested_near_constant.d2:1:1: constant near keys can only be set on root level shapes +`, + }, { name: "reserved_icon_near_style", @@ -1312,7 +1334,7 @@ y expErr: `d2/testdata/d2compiler/TestCompile/errors/reserved_icon_style.d2:3:9: bad icon url "::????:::%%orange": parse "::????:::%%orange": missing protocol scheme d2/testdata/d2compiler/TestCompile/errors/reserved_icon_style.d2:4:18: expected "opacity" to be a number between 0.0 and 1.0 d2/testdata/d2compiler/TestCompile/errors/reserved_icon_style.d2:5:18: expected "opacity" to be a number between 0.0 and 1.0 -d2/testdata/d2compiler/TestCompile/errors/reserved_icon_style.d2:1:1: near key "y" does not exist. It must be the absolute path to a shape. +d2/testdata/d2compiler/TestCompile/errors/reserved_icon_style.d2:1:1: near key "y" must be the absolute path to a shape or one of the following constants: top-left, top-center, top-right, center-left, center-right, bottom-left, bottom-center, bottom-right `, }, { @@ -1660,6 +1682,34 @@ choo: { tassert.Equal(t, "null", g.Objects[0].IDVal) }, }, + { + name: "sql-regression", + + text: `a: { + style: { + fill: lemonchiffon + } + b: { + shape: sql_table + c + } + d +} +`, + assertions: func(t *testing.T, g *d2graph.Graph) { + tassert.Equal(t, 3, len(g.Objects)) + }, + }, + { + name: "sql-panic", + text: `test { + shape: sql_table + test_id: varchar(64) {constraint: [primary_key, foreign_key]} +} +`, + expErr: `d2/testdata/d2compiler/TestCompile/sql-panic.d2:3:27: constraint value must be a string +`, + }, } for _, tc := range testCases { diff --git a/d2exporter/export.go b/d2exporter/export.go index 73a6e37bd..9706365f0 100644 --- a/d2exporter/export.go +++ b/d2exporter/export.go @@ -40,6 +40,11 @@ func applyTheme(shape *d2target.Shape, obj *d2graph.Object, theme *d2themes.Them if obj.Attributes.Shape.Value == d2target.ShapeText { shape.Color = theme.Colors.Neutrals.N1 } + if obj.Attributes.Shape.Value == d2target.ShapeSQLTable || obj.Attributes.Shape.Value == d2target.ShapeClass { + shape.PrimaryAccentColor = theme.Colors.B2 + shape.SecondaryAccentColor = theme.Colors.AA2 + shape.NeutralAccentColor = theme.Colors.Neutrals.N2 + } } func applyStyles(shape *d2target.Shape, obj *d2graph.Object) { @@ -76,19 +81,17 @@ func applyStyles(shape *d2target.Shape, obj *d2graph.Object) { if obj.Attributes.Style.FontColor != nil { shape.Color = obj.Attributes.Style.FontColor.Value } - if obj.Attributes.Shape.Value != d2target.ShapeText { - if obj.Attributes.Style.Italic != nil { - shape.Italic, _ = strconv.ParseBool(obj.Attributes.Style.Italic.Value) - } - if obj.Attributes.Style.Bold != nil { - shape.Bold, _ = strconv.ParseBool(obj.Attributes.Style.Bold.Value) - } - if obj.Attributes.Style.Underline != nil { - shape.Underline, _ = strconv.ParseBool(obj.Attributes.Style.Underline.Value) - } - if obj.Attributes.Style.Font != nil { - shape.FontFamily = obj.Attributes.Style.Font.Value - } + if obj.Attributes.Style.Italic != nil { + shape.Italic, _ = strconv.ParseBool(obj.Attributes.Style.Italic.Value) + } + if obj.Attributes.Style.Bold != nil { + shape.Bold, _ = strconv.ParseBool(obj.Attributes.Style.Bold.Value) + } + if obj.Attributes.Style.Underline != nil { + shape.Underline, _ = strconv.ParseBool(obj.Attributes.Style.Underline.Value) + } + if obj.Attributes.Style.Font != nil { + shape.FontFamily = obj.Attributes.Style.Font.Value } } diff --git a/d2exporter/export_test.go b/d2exporter/export_test.go index 70c02c210..ca813d2b1 100644 --- a/d2exporter/export_test.go +++ b/d2exporter/export_test.go @@ -8,12 +8,15 @@ import ( "cdr.dev/slog" + tassert "github.com/stretchr/testify/assert" + "oss.terrastruct.com/util-go/assert" "oss.terrastruct.com/util-go/diff" "oss.terrastruct.com/d2/d2compiler" "oss.terrastruct.com/d2/d2exporter" "oss.terrastruct.com/d2/d2layouts/d2dagrelayout" + "oss.terrastruct.com/d2/d2layouts/d2sequence" "oss.terrastruct.com/d2/d2target" "oss.terrastruct.com/d2/d2themes/d2themescatalog" "oss.terrastruct.com/d2/lib/geo" @@ -80,6 +83,23 @@ y: {shape: square} } }, }, + { + name: "sequence_group_position", + + dsl: `hey { + shape: sequence_diagram + a + b + group: { + a -> b + } +} +`, + assertions: func(t *testing.T, d *d2target.Diagram) { + tassert.Equal(t, "hey.group", d.Shapes[3].ID) + tassert.Equal(t, "INSIDE_TOP_LEFT", d.Shapes[3].LabelPosition) + }, + }, } runa(t, tcs) @@ -219,7 +239,7 @@ func run(t *testing.T, tc testCase) { err = g.SetDimensions(nil, ruler, nil) assert.JSON(t, nil, err) - err = d2dagrelayout.Layout(ctx, g) + err = d2sequence.Layout(ctx, g, d2dagrelayout.Layout) if err != nil { t.Fatal(err) } diff --git a/d2graph/d2graph.go b/d2graph/d2graph.go index 885823d16..da137cc12 100644 --- a/d2graph/d2graph.go +++ b/d2graph/d2graph.go @@ -392,17 +392,23 @@ func (obj *Object) GetFill(theme *d2themes.Theme) string { return theme.Colors.Neutrals.N5 } + if strings.EqualFold(shape, d2target.ShapeSQLTable) || strings.EqualFold(shape, d2target.ShapeClass) { + return theme.Colors.Neutrals.N1 + } + return theme.Colors.Neutrals.N7 } func (obj *Object) GetStroke(theme *d2themes.Theme, dashGapSize interface{}) string { shape := obj.Attributes.Shape.Value if strings.EqualFold(shape, d2target.ShapeCode) || - strings.EqualFold(shape, d2target.ShapeClass) || - strings.EqualFold(shape, d2target.ShapeSQLTable) || strings.EqualFold(shape, d2target.ShapeText) { return theme.Colors.Neutrals.N1 } + if strings.EqualFold(shape, d2target.ShapeClass) || + strings.EqualFold(shape, d2target.ShapeSQLTable) { + return theme.Colors.Neutrals.N7 + } if dashGapSize != 0.0 { return theme.Colors.B2 } @@ -435,7 +441,14 @@ func (obj *Object) AbsIDArray() []string { } func (obj *Object) Text() *d2target.MText { - isBold := !obj.IsContainer() + isBold := !obj.IsContainer() && obj.Attributes.Shape.Value != "text" + isItalic := false + if obj.Attributes.Style.Bold != nil && obj.Attributes.Style.Bold.Value == "true" { + isBold = true + } + if obj.Attributes.Style.Italic != nil && obj.Attributes.Style.Italic.Value == "true" { + isItalic = true + } fontSize := d2fonts.FONT_SIZE_M if obj.OuterSequenceDiagram() == nil { if obj.IsContainer() { @@ -451,11 +464,14 @@ func (obj *Object) Text() *d2target.MText { if obj.Class != nil || obj.SQLTable != nil { fontSize = d2fonts.FONT_SIZE_XL } + if obj.Class != nil { + isBold = false + } return &d2target.MText{ Text: obj.Attributes.Label.Value, FontSize: fontSize, IsBold: isBold, - IsItalic: false, + IsItalic: isItalic, Language: obj.Attributes.Language, Shape: obj.Attributes.Shape.Value, @@ -899,14 +915,18 @@ func (g *Graph) SetDimensions(mtexts []*d2target.MText, ruler *textmeasure.Ruler return err } dims = d2target.NewTextDimensions(width, height) - } else { + } else if obj.Attributes.Language != "" { var err error dims, err = getMarkdownDimensions(mtexts, ruler, obj.Text(), fontFamily) if err != nil { return err } + } else { + dims = getTextDimensions(mtexts, ruler, obj.Text(), fontFamily) } innerLabelPadding = 0 + } else if obj.Attributes.Shape.Value == d2target.ShapeClass { + dims = getTextDimensions(mtexts, ruler, obj.Text(), go2.Pointer(d2fonts.SourceCodePro)) } else { dims = getTextDimensions(mtexts, ruler, obj.Text(), fontFamily) } @@ -962,7 +982,7 @@ func (g *Graph) SetDimensions(mtexts []*d2target.MText, ruler *textmeasure.Ruler maxWidth := dims.Width for _, f := range obj.Class.Fields { - fdims := getTextDimensions(mtexts, ruler, f.Text(), fontFamily) + fdims := getTextDimensions(mtexts, ruler, f.Text(), go2.Pointer(d2fonts.SourceCodePro)) if fdims == nil { return fmt.Errorf("dimensions for class field %#v not found", f.Text()) } @@ -972,7 +992,7 @@ func (g *Graph) SetDimensions(mtexts []*d2target.MText, ruler *textmeasure.Ruler } } for _, m := range obj.Class.Methods { - mdims := getTextDimensions(mtexts, ruler, m.Text(), fontFamily) + mdims := getTextDimensions(mtexts, ruler, m.Text(), go2.Pointer(d2fonts.SourceCodePro)) if mdims == nil { return fmt.Errorf("dimensions for class method %#v not found", m.Text()) } @@ -991,7 +1011,7 @@ func (g *Graph) SetDimensions(mtexts []*d2target.MText, ruler *textmeasure.Ruler } if anyRowText != nil { // 10px of padding top and bottom so text doesn't look squished - rowHeight := getTextDimensions(mtexts, ruler, anyRowText, fontFamily).Height + 20 + rowHeight := getTextDimensions(mtexts, ruler, anyRowText, go2.Pointer(d2fonts.SourceCodePro)).Height + 20 obj.Height = float64(rowHeight * (len(obj.Class.Fields) + len(obj.Class.Methods) + 2)) } // Leave room for padding @@ -1002,23 +1022,29 @@ func (g *Graph) SetDimensions(mtexts []*d2target.MText, ruler *textmeasure.Ruler maxTypeWidth := 0 constraintWidth := 0 - font := d2fonts.SourceSansPro.Font(d2fonts.FONT_SIZE_L, d2fonts.FONT_STYLE_REGULAR) for i := range obj.SQLTable.Columns { // Note: we want to set dimensions of actual column not the for loop copy of the struct c := &obj.SQLTable.Columns[i] + ctexts := c.Texts() - nameWidth, nameHeight := ruler.Measure(font, c.Name.Label) - c.Name.LabelWidth = nameWidth - c.Name.LabelHeight = nameHeight - if maxNameWidth < nameWidth { - maxNameWidth = nameWidth + nameDims := getTextDimensions(mtexts, ruler, ctexts[0], fontFamily) + if nameDims == nil { + return fmt.Errorf("dimensions for sql_table name %#v not found", ctexts[0].Text) + } + c.Name.LabelWidth = nameDims.Width + c.Name.LabelHeight = nameDims.Height + if maxNameWidth < nameDims.Width { + maxNameWidth = nameDims.Width } - typeWidth, typeHeight := ruler.Measure(font, c.Type.Label) - c.Type.LabelWidth = typeWidth - c.Type.LabelHeight = typeHeight - if maxTypeWidth < typeWidth { - maxTypeWidth = typeWidth + typeDims := getTextDimensions(mtexts, ruler, ctexts[1], fontFamily) + if typeDims == nil { + return fmt.Errorf("dimensions for sql_table type %#v not found", ctexts[1].Text) + } + c.Type.LabelWidth = typeDims.Width + c.Type.LabelHeight = typeDims.Height + if maxTypeWidth < typeDims.Width { + maxTypeWidth = typeDims.Width } if c.Constraint != "" { @@ -1084,7 +1110,9 @@ func (g *Graph) Texts() []*d2target.MText { } } else if obj.SQLTable != nil { for _, column := range obj.SQLTable.Columns { - texts = appendTextDedup(texts, column.Text()) + for _, t := range column.Texts() { + texts = appendTextDedup(texts, t) + } } } } @@ -1170,6 +1198,22 @@ var StyleKeywords = map[string]struct{}{ "filled": {}, } +// TODO maybe autofmt should allow other values, and transform them to conform +// e.g. left-center becomes center-left +var NearConstantsArray = []string{ + "top-left", + "top-center", + "top-right", + + "center-left", + "center-right", + + "bottom-left", + "bottom-center", + "bottom-right", +} +var NearConstants map[string]struct{} + func init() { for k, v := range StyleKeywords { ReservedKeywords[k] = v @@ -1177,4 +1221,8 @@ func init() { for k, v := range ReservedKeywordHolders { ReservedKeywords[k] = v } + NearConstants = make(map[string]struct{}, len(NearConstantsArray)) + for _, k := range NearConstantsArray { + NearConstants[k] = struct{}{} + } } diff --git a/d2layouts/d2elklayout/layout.go b/d2layouts/d2elklayout/layout.go index be40c6bff..6dd37f828 100644 --- a/d2layouts/d2elklayout/layout.go +++ b/d2layouts/d2elklayout/layout.go @@ -9,7 +9,6 @@ import ( _ "embed" "encoding/json" "fmt" - "math" "strings" "github.com/dop251/goja" @@ -79,14 +78,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 +110,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 +159,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, } } @@ -253,7 +256,7 @@ func Layout(ctx context.Context, g *d2graph.Graph) (err error) { parentX = parent.TopLeft.X parentY = parent.TopLeft.Y } - obj.TopLeft = geo.NewPoint(math.Round(parentX+n.X), math.Round(parentY+n.Y)) + obj.TopLeft = geo.NewPoint(parentX+n.X, parentY+n.Y) obj.Width = n.Width obj.Height = n.Height diff --git a/d2layouts/d2near/layout.go b/d2layouts/d2near/layout.go new file mode 100644 index 000000000..99e8a10e1 --- /dev/null +++ b/d2layouts/d2near/layout.go @@ -0,0 +1,146 @@ +// d2near applies near keywords when they're constants +// Intended to be run as the last stage of layout after the diagram has already undergone layout +package d2near + +import ( + "context" + "math" + "strings" + + "oss.terrastruct.com/d2/d2graph" + "oss.terrastruct.com/d2/d2target" + "oss.terrastruct.com/d2/lib/geo" + "oss.terrastruct.com/d2/lib/label" + "oss.terrastruct.com/util-go/go2" +) + +const pad = 20 + +// Layout finds the shapes which are assigned constant near keywords and places them. +func Layout(ctx context.Context, g *d2graph.Graph, constantNears []*d2graph.Object) error { + if len(constantNears) == 0 { + return nil + } + + // Imagine the graph has two long texts, one at top center and one at top left. + // Top left should go left enough to not collide with center. + // So place the center ones first, then the later ones will consider them for bounding box + for _, processCenters := range []bool{true, false} { + for _, obj := range constantNears { + if processCenters == strings.Contains(d2graph.Key(obj.Attributes.NearKey)[0], "center") { + obj.TopLeft = geo.NewPoint(place(obj)) + } + } + for _, obj := range constantNears { + if processCenters == strings.Contains(d2graph.Key(obj.Attributes.NearKey)[0], "center") { + // The z-index for constant nears does not matter, as it will not collide + g.Objects = append(g.Objects, obj) + obj.Parent.Children[obj.ID] = obj + obj.Parent.ChildrenArray = append(obj.Parent.ChildrenArray, obj) + } + } + } + + // These shapes skipped core layout, which means they also skipped label placements + for _, obj := range constantNears { + if obj.Attributes.Shape.Value == d2target.ShapeImage { + obj.LabelPosition = go2.Pointer(string(label.OutsideBottomCenter)) + } else if obj.Attributes.Icon != nil { + obj.LabelPosition = go2.Pointer(string(label.InsideTopCenter)) + } else { + obj.LabelPosition = go2.Pointer(string(label.InsideMiddleCenter)) + } + } + + return nil +} + +// place returns the position of obj, taking into consideration its near value and the diagram +func place(obj *d2graph.Object) (float64, float64) { + tl, br := boundingBox(obj.Graph) + w := br.X - tl.X + h := br.Y - tl.Y + switch d2graph.Key(obj.Attributes.NearKey)[0] { + case "top-left": + return tl.X - obj.Width - pad, tl.Y - obj.Height - pad + case "top-center": + return tl.X + w/2 - obj.Width/2, tl.Y - obj.Height - pad + case "top-right": + return br.X + pad, tl.Y - obj.Height - pad + case "center-left": + return tl.X - obj.Width - pad, tl.Y + h/2 - obj.Height/2 + case "center-right": + return br.X + pad, tl.Y + h/2 - obj.Height/2 + case "bottom-left": + return tl.X - obj.Width - pad, br.Y + pad + case "bottom-center": + return br.X - w/2 - obj.Width/2, br.Y + pad + case "bottom-right": + return br.X + pad, br.Y + pad + } + return 0, 0 +} + +// WithoutConstantNears plucks out the graph objects which have "near" set to a constant value +// This is to be called before layout engines so they don't take part in regular positioning +func WithoutConstantNears(ctx context.Context, g *d2graph.Graph) (nears []*d2graph.Object) { + for i := 0; i < len(g.Objects); i++ { + obj := g.Objects[i] + if obj.Attributes.NearKey == nil { + continue + } + _, isKey := g.Root.HasChild(d2graph.Key(obj.Attributes.NearKey)) + if isKey { + continue + } + _, isConst := d2graph.NearConstants[d2graph.Key(obj.Attributes.NearKey)[0]] + if isConst { + nears = append(nears, obj) + g.Objects = append(g.Objects[:i], g.Objects[i+1:]...) + i-- + delete(obj.Parent.Children, obj.ID) + for i := 0; i < len(obj.Parent.ChildrenArray); i++ { + if obj.Parent.ChildrenArray[i] == obj { + obj.Parent.ChildrenArray = append(obj.Parent.ChildrenArray[:i], obj.Parent.ChildrenArray[i+1:]...) + break + } + } + } + } + return nears +} + +// boundingBox gets the center of the graph as defined by shapes +// The bounds taking into consideration only shapes gives more of a feeling of true center +// It differs from d2target.BoundingBox which needs to include every visible thing +func boundingBox(g *d2graph.Graph) (tl, br *geo.Point) { + if len(g.Objects) == 0 { + return geo.NewPoint(0, 0), geo.NewPoint(0, 0) + } + x1 := math.Inf(1) + y1 := math.Inf(1) + x2 := math.Inf(-1) + y2 := math.Inf(-1) + + for _, obj := range g.Objects { + if obj.Attributes.NearKey != nil { + // Top left should not be MORE top than top-center + // But it should go more left if top-center label extends beyond bounds of diagram + switch d2graph.Key(obj.Attributes.NearKey)[0] { + case "top-center", "bottom-center": + x1 = math.Min(x1, obj.TopLeft.X) + x2 = math.Max(x2, obj.TopLeft.X+obj.Width) + case "center-left", "center-right": + y1 = math.Min(y1, obj.TopLeft.Y) + y2 = math.Max(y2, obj.TopLeft.Y+obj.Height) + } + } else { + x1 = math.Min(x1, obj.TopLeft.X) + y1 = math.Min(y1, obj.TopLeft.Y) + x2 = math.Max(x2, obj.TopLeft.X+obj.Width) + y2 = math.Max(y2, obj.TopLeft.Y+obj.Height) + } + } + + return geo.NewPoint(x1, y1), geo.NewPoint(x2, y2) +} diff --git a/d2layouts/d2sequence/layout.go b/d2layouts/d2sequence/layout.go index 55192ceab..1747c859b 100644 --- a/d2layouts/d2sequence/layout.go +++ b/d2layouts/d2sequence/layout.go @@ -69,6 +69,7 @@ func Layout(ctx context.Context, g *d2graph.Graph, layout func(ctx context.Conte layoutEdges, edgeOrder := getLayoutEdges(g, edgesToRemove) g.Edges = layoutEdges layoutObjects, objectOrder := getLayoutObjects(g, objectsToRemove) + // TODO this isn't a proper deletion because the objects still appear as children of the object g.Objects = layoutObjects if g.Root.IsSequenceDiagram() { diff --git a/d2layouts/d2sequence/sequence_diagram.go b/d2layouts/d2sequence/sequence_diagram.go index 258428975..1058d6037 100644 --- a/d2layouts/d2sequence/sequence_diagram.go +++ b/d2layouts/d2sequence/sequence_diagram.go @@ -74,6 +74,7 @@ func newSequenceDiagram(objects []*d2graph.Object, messages []*d2graph.Edge) *se // Groups may have more nested groups for len(queue) > 0 { curr := queue[0] + curr.LabelPosition = go2.Pointer(string(label.InsideTopLeft)) groups = append(groups, curr) queue = queue[1:] queue = append(queue, curr.ChildrenArray...) diff --git a/d2lib/d2.go b/d2lib/d2.go index be71a1536..936124b9f 100644 --- a/d2lib/d2.go +++ b/d2lib/d2.go @@ -9,6 +9,7 @@ import ( "oss.terrastruct.com/d2/d2compiler" "oss.terrastruct.com/d2/d2exporter" "oss.terrastruct.com/d2/d2graph" + "oss.terrastruct.com/d2/d2layouts/d2near" "oss.terrastruct.com/d2/d2layouts/d2sequence" "oss.terrastruct.com/d2/d2renderers/d2fonts" "oss.terrastruct.com/d2/d2target" @@ -48,9 +49,20 @@ func Compile(ctx context.Context, input string, opts *CompileOptions) (*d2target return nil, nil, err } - if layout, err := getLayout(opts); err != nil { + coreLayout, err := getLayout(opts) + if err != nil { return nil, nil, err - } else if err := d2sequence.Layout(ctx, g, layout); err != nil { + } + + constantNears := d2near.WithoutConstantNears(ctx, g) + + err = d2sequence.Layout(ctx, g, coreLayout) + if err != nil { + return nil, nil, err + } + + err = d2near.Layout(ctx, g, constantNears) + if err != nil { return nil, nil, err } } diff --git a/d2renderers/d2sketch/sketch.go b/d2renderers/d2sketch/sketch.go index a8b6326b1..4c4913a2b 100644 --- a/d2renderers/d2sketch/sketch.go +++ b/d2renderers/d2sketch/sketch.go @@ -3,13 +3,17 @@ package d2sketch import ( "encoding/json" "fmt" + "strings" _ "embed" "github.com/dop251/goja" "oss.terrastruct.com/d2/d2target" + "oss.terrastruct.com/d2/lib/geo" + "oss.terrastruct.com/d2/lib/label" "oss.terrastruct.com/d2/lib/svg" + "oss.terrastruct.com/util-go/go2" ) //go:embed fillpattern.svg @@ -62,8 +66,13 @@ func DefineFillPattern() string { func shapeStyle(shape d2target.Shape) string { out := "" - out += fmt.Sprintf(`fill:%s;`, shape.Fill) - out += fmt.Sprintf(`stroke:%s;`, shape.Stroke) + if shape.Type == d2target.ShapeSQLTable || shape.Type == d2target.ShapeClass { + out += fmt.Sprintf(`fill:%s;`, shape.Stroke) + out += fmt.Sprintf(`stroke:%s;`, shape.Fill) + } else { + out += fmt.Sprintf(`fill:%s;`, shape.Fill) + out += fmt.Sprintf(`stroke:%s;`, shape.Stroke) + } out += fmt.Sprintf(`opacity:%f;`, shape.Opacity) out += fmt.Sprintf(`stroke-width:%d;`, shape.StrokeWidth) if shape.StrokeDash != 0 { @@ -81,10 +90,7 @@ func Rect(r *Runner, shape d2target.Shape) (string, error) { strokeWidth: %d, %s });`, shape.Width, shape.Height, shape.Fill, shape.Stroke, shape.StrokeWidth, baseRoughProps) - if _, err := r.run(js); err != nil { - return "", err - } - paths, err := extractPaths(r) + paths, err := computeRoughPaths(r, js) if err != nil { return "", err } @@ -109,10 +115,7 @@ func Oval(r *Runner, shape d2target.Shape) (string, error) { strokeWidth: %d, %s });`, shape.Width/2, shape.Height/2, shape.Width, shape.Height, shape.Fill, shape.Stroke, shape.StrokeWidth, baseRoughProps) - if _, err := r.run(js); err != nil { - return "", err - } - paths, err := extractPaths(r) + paths, err := computeRoughPaths(r, js) if err != nil { return "", err } @@ -140,10 +143,7 @@ func Paths(r *Runner, shape d2target.Shape, paths []string) (string, error) { strokeWidth: %d, %s });`, path, shape.Fill, shape.Stroke, shape.StrokeWidth, baseRoughProps) - if _, err := r.run(js); err != nil { - return "", err - } - sketchPaths, err := extractPaths(r) + sketchPaths, err := computeRoughPaths(r, js) if err != nil { return "", err } @@ -180,10 +180,7 @@ func connectionStyle(connection d2target.Connection) string { func Connection(r *Runner, connection d2target.Connection, path, attrs string) (string, error) { roughness := 1.0 js := fmt.Sprintf(`node = rc.path("%s", {roughness: %f, seed: 1});`, path, roughness) - if _, err := r.run(js); err != nil { - return "", err - } - paths, err := extractPaths(r) + paths, err := computeRoughPaths(r, js) if err != nil { return "", err } @@ -197,6 +194,280 @@ func Connection(r *Runner, connection d2target.Connection, path, attrs string) ( return output, nil } +// TODO cleanup +func Table(r *Runner, shape d2target.Shape) (string, error) { + output := "" + js := fmt.Sprintf(`node = rc.rectangle(0, 0, %d, %d, { + fill: "%s", + stroke: "%s", + strokeWidth: %d, + %s + });`, shape.Width, shape.Height, shape.Fill, shape.Stroke, shape.StrokeWidth, baseRoughProps) + paths, err := computeRoughPaths(r, js) + if err != nil { + return "", err + } + for _, p := range paths { + output += fmt.Sprintf( + ``, + shape.Pos.X, shape.Pos.Y, p, shapeStyle(shape), + ) + } + + box := geo.NewBox( + geo.NewPoint(float64(shape.Pos.X), float64(shape.Pos.Y)), + float64(shape.Width), + float64(shape.Height), + ) + rowHeight := box.Height / float64(1+len(shape.SQLTable.Columns)) + headerBox := geo.NewBox(box.TopLeft, box.Width, rowHeight) + + js = fmt.Sprintf(`node = rc.rectangle(0, 0, %d, %f, { + fill: "%s", + %s + });`, shape.Width, rowHeight, shape.Fill, baseRoughProps) + paths, err = computeRoughPaths(r, js) + if err != nil { + return "", err + } + for _, p := range paths { + output += fmt.Sprintf( + ``, + shape.Pos.X, shape.Pos.Y, p, shape.Fill, + ) + } + + if shape.Label != "" { + tl := label.InsideMiddleLeft.GetPointOnBox( + headerBox, + 20, + float64(shape.LabelWidth), + float64(shape.LabelHeight), + ) + + output += fmt.Sprintf(`%s`, + "text", + tl.X, + tl.Y+float64(shape.LabelHeight)*3/4, + fmt.Sprintf("text-anchor:%s;font-size:%vpx;fill:%s", + "start", + 4+shape.FontSize, + shape.Stroke, + ), + svg.EscapeText(shape.Label), + ) + } + + var longestNameWidth int + for _, f := range shape.Columns { + longestNameWidth = go2.Max(longestNameWidth, f.Name.LabelWidth) + } + + rowBox := geo.NewBox(box.TopLeft.Copy(), box.Width, rowHeight) + rowBox.TopLeft.Y += headerBox.Height + for _, f := range shape.Columns { + nameTL := label.InsideMiddleLeft.GetPointOnBox( + rowBox, + d2target.NamePadding, + rowBox.Width, + float64(shape.FontSize), + ) + constraintTR := label.InsideMiddleRight.GetPointOnBox( + rowBox, + d2target.TypePadding, + 0, + float64(shape.FontSize), + ) + + output += strings.Join([]string{ + fmt.Sprintf(`%s`, + nameTL.X, + nameTL.Y+float64(shape.FontSize)*3/4, + fmt.Sprintf("text-anchor:%s;font-size:%vpx;fill:%s", "start", float64(shape.FontSize), shape.PrimaryAccentColor), + svg.EscapeText(f.Name.Label), + ), + fmt.Sprintf(`%s`, + nameTL.X+float64(longestNameWidth)+2*d2target.NamePadding, + nameTL.Y+float64(shape.FontSize)*3/4, + fmt.Sprintf("text-anchor:%s;font-size:%vpx;fill:%s", "start", float64(shape.FontSize), shape.NeutralAccentColor), + svg.EscapeText(f.Type.Label), + ), + fmt.Sprintf(`%s`, + constraintTR.X, + constraintTR.Y+float64(shape.FontSize)*3/4, + fmt.Sprintf("text-anchor:%s;font-size:%vpx;fill:%s;letter-spacing:2px;", "end", float64(shape.FontSize), shape.SecondaryAccentColor), + f.ConstraintAbbr(), + ), + }, "\n") + + rowBox.TopLeft.Y += rowHeight + + js = fmt.Sprintf(`node = rc.line(%f, %f, %f, %f, { + %s + });`, rowBox.TopLeft.X, rowBox.TopLeft.Y, rowBox.TopLeft.X+rowBox.Width, rowBox.TopLeft.Y, baseRoughProps) + paths, err = computeRoughPaths(r, js) + if err != nil { + return "", err + } + for _, p := range paths { + output += fmt.Sprintf( + ``, + p, shape.Fill, + ) + } + } + output += fmt.Sprintf( + ``, + shape.Pos.X, shape.Pos.Y, shape.Width, shape.Height, + ) + return output, nil +} + +func Class(r *Runner, shape d2target.Shape) (string, error) { + output := "" + js := fmt.Sprintf(`node = rc.rectangle(0, 0, %d, %d, { + fill: "%s", + stroke: "%s", + strokeWidth: %d, + %s + });`, shape.Width, shape.Height, shape.Fill, shape.Stroke, shape.StrokeWidth, baseRoughProps) + paths, err := computeRoughPaths(r, js) + if err != nil { + return "", err + } + for _, p := range paths { + output += fmt.Sprintf( + ``, + shape.Pos.X, shape.Pos.Y, p, shapeStyle(shape), + ) + } + + box := geo.NewBox( + geo.NewPoint(float64(shape.Pos.X), float64(shape.Pos.Y)), + float64(shape.Width), + float64(shape.Height), + ) + + rowHeight := box.Height / float64(2+len(shape.Class.Fields)+len(shape.Class.Methods)) + headerBox := geo.NewBox(box.TopLeft, box.Width, 2*rowHeight) + + js = fmt.Sprintf(`node = rc.rectangle(0, 0, %d, %f, { + fill: "%s", + %s + });`, shape.Width, headerBox.Height, shape.Fill, baseRoughProps) + paths, err = computeRoughPaths(r, js) + if err != nil { + return "", err + } + for _, p := range paths { + output += fmt.Sprintf( + ``, + shape.Pos.X, shape.Pos.Y, p, shape.Fill, + ) + } + + output += fmt.Sprintf( + ``, + shape.Pos.X, shape.Pos.Y, shape.Width, headerBox.Height, + ) + + if shape.Label != "" { + tl := label.InsideMiddleCenter.GetPointOnBox( + headerBox, + 0, + float64(shape.LabelWidth), + float64(shape.LabelHeight), + ) + + output += fmt.Sprintf(`%s`, + "text-mono", + tl.X+float64(shape.LabelWidth)/2, + tl.Y+float64(shape.LabelHeight)*3/4, + fmt.Sprintf("text-anchor:%s;font-size:%vpx;fill:%s", + "middle", + 4+shape.FontSize, + shape.Stroke, + ), + svg.EscapeText(shape.Label), + ) + } + + rowBox := geo.NewBox(box.TopLeft.Copy(), box.Width, rowHeight) + rowBox.TopLeft.Y += headerBox.Height + for _, f := range shape.Fields { + output += classRow(shape, rowBox, f.VisibilityToken(), f.Name, f.Type, float64(shape.FontSize)) + rowBox.TopLeft.Y += rowHeight + } + + js = fmt.Sprintf(`node = rc.line(%f, %f, %f, %f, { +%s + });`, rowBox.TopLeft.X, rowBox.TopLeft.Y, rowBox.TopLeft.X+rowBox.Width, rowBox.TopLeft.Y, baseRoughProps) + paths, err = computeRoughPaths(r, js) + if err != nil { + return "", err + } + for _, p := range paths { + output += fmt.Sprintf( + ``, + p, shape.Fill, + ) + } + + for _, m := range shape.Methods { + output += classRow(shape, rowBox, m.VisibilityToken(), m.Name, m.Return, float64(shape.FontSize)) + rowBox.TopLeft.Y += rowHeight + } + + return output, nil +} + +func classRow(shape d2target.Shape, box *geo.Box, prefix, nameText, typeText string, fontSize float64) string { + output := "" + prefixTL := label.InsideMiddleLeft.GetPointOnBox( + box, + d2target.PrefixPadding, + box.Width, + fontSize, + ) + typeTR := label.InsideMiddleRight.GetPointOnBox( + box, + d2target.TypePadding, + 0, + fontSize, + ) + + output += strings.Join([]string{ + fmt.Sprintf(`%s`, + prefixTL.X, + prefixTL.Y+fontSize*3/4, + fmt.Sprintf("text-anchor:%s;font-size:%vpx;fill:%s", "start", fontSize, shape.PrimaryAccentColor), + prefix, + ), + + fmt.Sprintf(`%s`, + prefixTL.X+d2target.PrefixWidth, + prefixTL.Y+fontSize*3/4, + fmt.Sprintf("text-anchor:%s;font-size:%vpx;fill:%s", "start", fontSize, shape.Fill), + svg.EscapeText(nameText), + ), + + fmt.Sprintf(`%s`, + typeTR.X, + typeTR.Y+fontSize*3/4, + fmt.Sprintf("text-anchor:%s;font-size:%vpx;fill:%s;", "end", fontSize, shape.SecondaryAccentColor), + svg.EscapeText(typeText), + ), + }, "\n") + return output +} + +func computeRoughPaths(r *Runner, js string) ([]string, error) { + if _, err := r.run(js); err != nil { + return nil, err + } + return extractPaths(r) +} + type attrs struct { D string `json:"d"` } diff --git a/d2renderers/d2sketch/sketch_test.go b/d2renderers/d2sketch/sketch_test.go index cfcb5abdb..e033bedfe 100644 --- a/d2renderers/d2sketch/sketch_test.go +++ b/d2renderers/d2sketch/sketch_test.go @@ -223,6 +223,58 @@ queue -> package -> step callout -> stored_data -> person diamond -> oval -> circle hexagon -> cloud +`, + }, + { + name: "sql_tables", + script: `users: { + shape: sql_table + id: int + name: string + email: string + password: string + last_login: datetime +} + +products: { + shape: sql_table + id: int + price: decimal + sku: string + name: string +} + +orders: { + shape: sql_table + id: int + user_id: int + product_id: int +} + +shipments: { + shape: sql_table + id: int + order_id: int + tracking_number: string {constraint: primary_key} + status: string +} + +users.id <-> orders.user_id +products.id <-> orders.product_id +shipments.order_id <-> orders.id`, + }, + { + name: "class", + script: `manager: BatchManager { + shape: class + -num: int + -timeout: int + -pid + + +getStatus(): Enum + +getJobs(): "Job[]" + +setTimeout(seconds int) +} `, }, } diff --git a/d2renderers/d2sketch/testdata/class/sketch.exp.svg b/d2renderers/d2sketch/testdata/class/sketch.exp.svg new file mode 100644 index 000000000..5dd1ee1a5 --- /dev/null +++ b/d2renderers/d2sketch/testdata/class/sketch.exp.svg @@ -0,0 +1,55 @@ + + + + + + +BatchManager- +num +int- +timeout +int- +pid ++ +getStatus() +Enum+ +getJobs() +Job[]+ +setTimeout(seconds int) +void + + + \ No newline at end of file diff --git a/d2renderers/d2sketch/testdata/sql_tables/sketch.exp.svg b/d2renderers/d2sketch/testdata/sql_tables/sketch.exp.svg new file mode 100644 index 000000000..68d7a9a2a --- /dev/null +++ b/d2renderers/d2sketch/testdata/sql_tables/sketch.exp.svg @@ -0,0 +1,75 @@ + + + + + + +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 +PKstatus +string + + + + \ No newline at end of file diff --git a/d2renderers/d2sketch/testdata/twitter/sketch.exp.svg b/d2renderers/d2sketch/testdata/twitter/sketch.exp.svg index 471e8fa0a..a45b29f99 100644 --- a/d2renderers/d2sketch/testdata/twitter/sketch.exp.svg +++ b/d2renderers/d2sketch/testdata/twitter/sketch.exp.svg @@ -282,6 +282,7 @@ width="3454" height="2449" viewBox="-100 -100 3454 2449">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..b59278418 --- /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": 96, + "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": false, + "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": false, + "underline": false, + "labelWidth": 41, + "labelHeight": 24, + "zIndex": 0, + "level": 1 + }, + { + "id": "m5_desc", + "type": "text", + "pos": { + "x": 830, + "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": false, + "underline": false, + "labelWidth": 90, + "labelHeight": 24, + "zIndex": 0, + "level": 1 + }, + { + "id": "m6_desc", + "type": "text", + "pos": { + "x": 950, + "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": false, + "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..6ccb94a1b --- /dev/null +++ b/e2etests/testdata/regression/elk_order/elk/sketch.exp.svg @@ -0,0 +1,800 @@ + +

Oldest message

+

Offset

+

Last message

+

Next message will be
+inserted here

+
M0M1M2M3M4M5M6 + + +
\ No newline at end of file diff --git a/e2etests/testdata/regression/query_param_escape/dagre/board.exp.json b/e2etests/testdata/regression/query_param_escape/dagre/board.exp.json new file mode 100644 index 000000000..fb0febb97 --- /dev/null +++ b/e2etests/testdata/regression/query_param_escape/dagre/board.exp.json @@ -0,0 +1,58 @@ +{ + "name": "", + "fontFamily": "SourceSansPro", + "shapes": [ + { + "id": "my network", + "type": "", + "pos": { + "x": 0, + "y": 0 + }, + "width": 190, + "height": 152, + "opacity": 1, + "strokeDash": 0, + "strokeWidth": 2, + "borderRadius": 0, + "fill": "#F7F8FE", + "stroke": "#0D32B2", + "shadow": false, + "3d": false, + "multiple": false, + "tooltip": "", + "link": "", + "icon": { + "Scheme": "https", + "Opaque": "", + "User": null, + "Host": "icons.terrastruct.com", + "Path": "/infra/019-network.svg", + "RawPath": "", + "ForceQuery": false, + "RawQuery": "fuga=1&hoge", + "Fragment": "", + "RawFragment": "" + }, + "iconPosition": "INSIDE_MIDDLE_CENTER", + "blend": false, + "fields": null, + "methods": null, + "columns": null, + "label": "my network", + "fontSize": 16, + "fontFamily": "DEFAULT", + "language": "", + "color": "#0A0F25", + "italic": false, + "bold": true, + "underline": false, + "labelWidth": 90, + "labelHeight": 26, + "labelPosition": "INSIDE_TOP_CENTER", + "zIndex": 0, + "level": 1 + } + ], + "connections": [] +} diff --git a/e2etests/testdata/regression/query_param_escape/dagre/sketch.exp.svg b/e2etests/testdata/regression/query_param_escape/dagre/sketch.exp.svg new file mode 100644 index 000000000..f9fe5a482 --- /dev/null +++ b/e2etests/testdata/regression/query_param_escape/dagre/sketch.exp.svg @@ -0,0 +1,31 @@ + +my network + + + \ No newline at end of file diff --git a/e2etests/testdata/regression/query_param_escape/elk/board.exp.json b/e2etests/testdata/regression/query_param_escape/elk/board.exp.json new file mode 100644 index 000000000..bce062b6f --- /dev/null +++ b/e2etests/testdata/regression/query_param_escape/elk/board.exp.json @@ -0,0 +1,58 @@ +{ + "name": "", + "fontFamily": "SourceSansPro", + "shapes": [ + { + "id": "my network", + "type": "", + "pos": { + "x": 12, + "y": 12 + }, + "width": 190, + "height": 152, + "opacity": 1, + "strokeDash": 0, + "strokeWidth": 2, + "borderRadius": 0, + "fill": "#F7F8FE", + "stroke": "#0D32B2", + "shadow": false, + "3d": false, + "multiple": false, + "tooltip": "", + "link": "", + "icon": { + "Scheme": "https", + "Opaque": "", + "User": null, + "Host": "icons.terrastruct.com", + "Path": "/infra/019-network.svg", + "RawPath": "", + "ForceQuery": false, + "RawQuery": "fuga=1&hoge", + "Fragment": "", + "RawFragment": "" + }, + "iconPosition": "INSIDE_MIDDLE_CENTER", + "blend": false, + "fields": null, + "methods": null, + "columns": null, + "label": "my network", + "fontSize": 16, + "fontFamily": "DEFAULT", + "language": "", + "color": "#0A0F25", + "italic": false, + "bold": true, + "underline": false, + "labelWidth": 90, + "labelHeight": 26, + "labelPosition": "INSIDE_TOP_CENTER", + "zIndex": 0, + "level": 1 + } + ], + "connections": [] +} diff --git a/e2etests/testdata/regression/query_param_escape/elk/sketch.exp.svg b/e2etests/testdata/regression/query_param_escape/elk/sketch.exp.svg new file mode 100644 index 000000000..0a13f7b0b --- /dev/null +++ b/e2etests/testdata/regression/query_param_escape/elk/sketch.exp.svg @@ -0,0 +1,31 @@ + +my network + + + \ No newline at end of file diff --git a/e2etests/testdata/regression/sql_table_overflow/dagre/board.exp.json b/e2etests/testdata/regression/sql_table_overflow/dagre/board.exp.json index dddfded93..019dcf923 100644 --- a/e2etests/testdata/regression/sql_table_overflow/dagre/board.exp.json +++ b/e2etests/testdata/regression/sql_table_overflow/dagre/board.exp.json @@ -15,8 +15,8 @@ "strokeDash": 0, "strokeWidth": 2, "borderRadius": 0, - "fill": "#FFFFFF", - "stroke": "#0A0F25", + "fill": "#0A0F25", + "stroke": "#FFFFFF", "shadow": false, "3d": false, "multiple": false, @@ -96,7 +96,10 @@ "labelWidth": 211, "labelHeight": 36, "zIndex": 0, - "level": 1 + "level": 1, + "primaryAccentColor": "#0D32B2", + "secondaryAccentColor": "#4A6FF3", + "neutralAccentColor": "#676C7E" }, { "id": "table_constrained", @@ -111,8 +114,8 @@ "strokeDash": 0, "strokeWidth": 2, "borderRadius": 0, - "fill": "#FFFFFF", - "stroke": "#0A0F25", + "fill": "#0A0F25", + "stroke": "#FFFFFF", "shadow": false, "3d": false, "multiple": false, @@ -192,7 +195,10 @@ "labelWidth": 350, "labelHeight": 36, "zIndex": 0, - "level": 1 + "level": 1, + "primaryAccentColor": "#0D32B2", + "secondaryAccentColor": "#4A6FF3", + "neutralAccentColor": "#676C7E" } ], "connections": [] diff --git a/e2etests/testdata/regression/sql_table_overflow/dagre/sketch.exp.svg b/e2etests/testdata/regression/sql_table_overflow/dagre/sketch.exp.svg index 12c04af90..e6346bc89 100644 --- a/e2etests/testdata/regression/sql_table_overflow/dagre/sketch.exp.svg +++ b/e2etests/testdata/regression/sql_table_overflow/dagre/sketch.exp.svg @@ -18,15 +18,15 @@ width="1388" height="308" viewBox="-100 -100 1388 308">sql_table_overflowshort -loooooooooooooooooooong -loooooooooooooooooooong -short -sql_table_constrained_overflowshort -loooooooooooooooooooong -UNQloooooooooooooooooooong -short -FK +sql_table_overflowshort +loooooooooooooooooooong +loooooooooooooooooooong +short +sql_table_constrained_overflowshort +loooooooooooooooooooong +UNQloooooooooooooooooooong +short +FK sql_table_overflowshort -loooooooooooooooooooong -loooooooooooooooooooong -short -sql_table_constrained_overflowshort -loooooooooooooooooooong -UNQloooooooooooooooooooong -short -FK +sql_table_overflowshort +loooooooooooooooooooong +loooooooooooooooooooong +short +sql_table_constrained_overflowshort +loooooooooooooooooooong +UNQloooooooooooooooooooong +short +FK abc +abc acbd +acbd rectanglesquarepageparallelogramdocumentcylinderqueuepackagestepcalloutstored_datapersondiamondovalcirclehexagoncloud - +rectanglesquarepageparallelogramdocumentcylinderqueuepackagestepcalloutstored_datapersondiamondovalcirclehexagoncloud + rectanglesquarepageparallelogramdocumentcylinderqueuepackagestepcalloutstored_datapersondiamondovalcirclehexagoncloud - +rectanglesquarepageparallelogramdocumentcylinderqueuepackagestepcalloutstored_datapersondiamondovalcirclehexagoncloud + cba * +cba * abcdefghijklmno +abcdefghijklmno aabbllmm

nn

-
oocciikkdd

gg

-
hhjj

ee

-
ff1122 334455667788 - +aabbllmmnnoocciikkddgghhjjeeff1122 334455667788 + - + - + aabbllmm

nn

-
oocciikkdd

gg

-
hhjj

ee

-
ff1122 334455667788 - - - - - - - - - +aabbllmmnnoocciikkddgghhjjeeff1122 334455667788 + + + + + + + + + BatchManager- -num -int- -timeout -int- -pid -+ -getStatus() -Enum+ -getJobs() -Job[]+ -setTimeout(seconds int) -void - +BatchManager- +num +int- +timeout +int- +pid ++ +getStatus() +Enum+ +getJobs() +Job[]+ +setTimeout(seconds int) +void + \ No newline at end of file diff --git a/e2etests/testdata/stable/class/elk/board.exp.json b/e2etests/testdata/stable/class/elk/board.exp.json index 90dd60cd4..438953ee7 100644 --- a/e2etests/testdata/stable/class/elk/board.exp.json +++ b/e2etests/testdata/stable/class/elk/board.exp.json @@ -9,14 +9,14 @@ "x": 12, "y": 12 }, - "width": 339, + "width": 422, "height": 368, "opacity": 1, "strokeDash": 0, "strokeWidth": 2, "borderRadius": 0, - "fill": "#FFFFFF", - "stroke": "#0A0F25", + "fill": "#0A0F25", + "stroke": "#FFFFFF", "shadow": false, "3d": false, "multiple": false, @@ -68,10 +68,13 @@ "italic": false, "bold": false, "underline": false, - "labelWidth": 150, + "labelWidth": 175, "labelHeight": 36, "zIndex": 0, - "level": 1 + "level": 1, + "primaryAccentColor": "#0D32B2", + "secondaryAccentColor": "#4A6FF3", + "neutralAccentColor": "#676C7E" } ], "connections": [] diff --git a/e2etests/testdata/stable/class/elk/sketch.exp.svg b/e2etests/testdata/stable/class/elk/sketch.exp.svg index 45f859f36..a433f42f0 100644 --- a/e2etests/testdata/stable/class/elk/sketch.exp.svg +++ b/e2etests/testdata/stable/class/elk/sketch.exp.svg @@ -2,7 +2,7 @@ BatchManager- +num +int- +timeout +int- +pid ++ +getStatus() +Enum+ +getJobs() +Job[]+ +setTimeout(seconds int) +void + \ No newline at end of file diff --git a/e2etests/testdata/stable/code_snippet/elk/board.exp.json b/e2etests/testdata/stable/code_snippet/elk/board.exp.json index 8eac03000..290b783e6 100644 --- a/e2etests/testdata/stable/code_snippet/elk/board.exp.json +++ b/e2etests/testdata/stable/code_snippet/elk/board.exp.json @@ -85,7 +85,7 @@ "id": "y", "type": "", "pos": { - "x": 333, + "x": 332, "y": 504 }, "width": 114, diff --git a/e2etests/testdata/stable/code_snippet/elk/sketch.exp.svg b/e2etests/testdata/stable/code_snippet/elk/sketch.exp.svg index aa93f0515..db6a4f592 100644 --- a/e2etests/testdata/stable/code_snippet/elk/sketch.exp.svg +++ b/e2etests/testdata/stable/code_snippet/elk/sketch.exp.svg @@ -26,7 +26,7 @@ width="955" height="818" viewBox="-88 -88 955 818">acfbdhg +acfbdhg xyThe top of the mountainJoeDonald

Cats, no less liquid than their shadows, offer no angles to the wind.

+

If we can't fix it, it ain't broke.

+

Dieters live life in the fasting lane.

+
i am top lefti am top righti am bottom lefti am bottom right + + + \ No newline at end of file diff --git a/e2etests/testdata/stable/constant_near_stress/elk/board.exp.json b/e2etests/testdata/stable/constant_near_stress/elk/board.exp.json new file mode 100644 index 000000000..56b5e3d52 --- /dev/null +++ b/e2etests/testdata/stable/constant_near_stress/elk/board.exp.json @@ -0,0 +1,447 @@ +{ + "name": "", + "fontFamily": "SourceSansPro", + "shapes": [ + { + "id": "x", + "type": "", + "pos": { + "x": 12, + "y": 12 + }, + "width": 113, + "height": 126, + "opacity": 1, + "strokeDash": 0, + "strokeWidth": 2, + "borderRadius": 0, + "fill": "#F7F8FE", + "stroke": "#0D32B2", + "shadow": false, + "3d": false, + "multiple": false, + "tooltip": "", + "link": "", + "icon": null, + "iconPosition": "", + "blend": false, + "fields": null, + "methods": null, + "columns": null, + "label": "x", + "fontSize": 16, + "fontFamily": "DEFAULT", + "language": "", + "color": "#0A0F25", + "italic": false, + "bold": true, + "underline": false, + "labelWidth": 13, + "labelHeight": 26, + "labelPosition": "INSIDE_MIDDLE_CENTER", + "zIndex": 0, + "level": 1 + }, + { + "id": "y", + "type": "", + "pos": { + "x": 12, + "y": 238 + }, + "width": 114, + "height": 126, + "opacity": 1, + "strokeDash": 0, + "strokeWidth": 2, + "borderRadius": 0, + "fill": "#F7F8FE", + "stroke": "#0D32B2", + "shadow": false, + "3d": false, + "multiple": false, + "tooltip": "", + "link": "", + "icon": null, + "iconPosition": "", + "blend": false, + "fields": null, + "methods": null, + "columns": null, + "label": "y", + "fontSize": 16, + "fontFamily": "DEFAULT", + "language": "", + "color": "#0A0F25", + "italic": false, + "bold": true, + "underline": false, + "labelWidth": 14, + "labelHeight": 26, + "labelPosition": "INSIDE_MIDDLE_CENTER", + "zIndex": 0, + "level": 1 + }, + { + "id": "The top of the mountain", + "type": "text", + "pos": { + "x": -12, + "y": -29 + }, + "width": 162, + "height": 21, + "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": "The top of the mountain", + "fontSize": 16, + "fontFamily": "DEFAULT", + "language": "", + "color": "#0A0F25", + "italic": false, + "bold": false, + "underline": false, + "labelWidth": 162, + "labelHeight": 21, + "labelPosition": "INSIDE_MIDDLE_CENTER", + "zIndex": 0, + "level": 1 + }, + { + "id": "Joe", + "type": "person", + "pos": { + "x": -139, + "y": 125 + }, + "width": 131, + "height": 126, + "opacity": 1, + "strokeDash": 0, + "strokeWidth": 2, + "borderRadius": 0, + "fill": "#E3E9FD", + "stroke": "#0D32B2", + "shadow": false, + "3d": false, + "multiple": false, + "tooltip": "", + "link": "", + "icon": null, + "iconPosition": "", + "blend": false, + "fields": null, + "methods": null, + "columns": null, + "label": "Joe", + "fontSize": 16, + "fontFamily": "DEFAULT", + "language": "", + "color": "#0A0F25", + "italic": false, + "bold": true, + "underline": false, + "labelWidth": 31, + "labelHeight": 26, + "labelPosition": "INSIDE_MIDDLE_CENTER", + "zIndex": 0, + "level": 1 + }, + { + "id": "Donald", + "type": "person", + "pos": { + "x": 146, + "y": 125 + }, + "width": 155, + "height": 126, + "opacity": 1, + "strokeDash": 0, + "strokeWidth": 2, + "borderRadius": 0, + "fill": "#E3E9FD", + "stroke": "#0D32B2", + "shadow": false, + "3d": false, + "multiple": false, + "tooltip": "", + "link": "", + "icon": null, + "iconPosition": "", + "blend": false, + "fields": null, + "methods": null, + "columns": null, + "label": "Donald", + "fontSize": 16, + "fontFamily": "DEFAULT", + "language": "", + "color": "#0A0F25", + "italic": false, + "bold": true, + "underline": false, + "labelWidth": 55, + "labelHeight": 26, + "labelPosition": "INSIDE_MIDDLE_CENTER", + "zIndex": 0, + "level": 1 + }, + { + "id": "bottom", + "type": "text", + "pos": { + "x": -402, + "y": 384 + }, + "width": 943, + "height": 130, + "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": "# Cats, no less liquid than their shadows, offer no angles to the wind.\n\nIf we can't fix it, it ain't broke.\n\nDieters live life in the fasting lane.", + "fontSize": 16, + "fontFamily": "DEFAULT", + "language": "markdown", + "color": "#0A0F25", + "italic": false, + "bold": false, + "underline": false, + "labelWidth": 943, + "labelHeight": 130, + "labelPosition": "INSIDE_MIDDLE_CENTER", + "zIndex": 0, + "level": 1 + }, + { + "id": "i am top left", + "type": "text", + "pos": { + "x": -502, + "y": -29 + }, + "width": 80, + "height": 21, + "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": "i am top left", + "fontSize": 16, + "fontFamily": "DEFAULT", + "language": "", + "color": "#0A0F25", + "italic": false, + "bold": false, + "underline": false, + "labelWidth": 80, + "labelHeight": 21, + "labelPosition": "INSIDE_MIDDLE_CENTER", + "zIndex": 0, + "level": 1 + }, + { + "id": "i am top right", + "type": "text", + "pos": { + "x": 560, + "y": -29 + }, + "width": 90, + "height": 21, + "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": "i am top right", + "fontSize": 16, + "fontFamily": "DEFAULT", + "language": "", + "color": "#0A0F25", + "italic": false, + "bold": false, + "underline": false, + "labelWidth": 90, + "labelHeight": 21, + "labelPosition": "INSIDE_MIDDLE_CENTER", + "zIndex": 0, + "level": 1 + }, + { + "id": "i am bottom left", + "type": "text", + "pos": { + "x": -529, + "y": 384 + }, + "width": 107, + "height": 21, + "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": "i am bottom left", + "fontSize": 16, + "fontFamily": "DEFAULT", + "language": "", + "color": "#0A0F25", + "italic": false, + "bold": false, + "underline": false, + "labelWidth": 107, + "labelHeight": 21, + "labelPosition": "INSIDE_MIDDLE_CENTER", + "zIndex": 0, + "level": 1 + }, + { + "id": "i am bottom right", + "type": "text", + "pos": { + "x": 560, + "y": 384 + }, + "width": 117, + "height": 21, + "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": "i am bottom right", + "fontSize": 16, + "fontFamily": "DEFAULT", + "language": "", + "color": "#0A0F25", + "italic": false, + "bold": false, + "underline": false, + "labelWidth": 117, + "labelHeight": 21, + "labelPosition": "INSIDE_MIDDLE_CENTER", + "zIndex": 0, + "level": 1 + } + ], + "connections": [ + { + "id": "(x -> y)[0]", + "src": "x", + "srcArrow": "none", + "srcLabel": "", + "dst": "y", + "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": 69, + "y": 138 + }, + { + "x": 69, + "y": 238 + } + ], + "animated": false, + "tooltip": "", + "icon": null, + "zIndex": 0 + } + ] +} diff --git a/e2etests/testdata/stable/constant_near_stress/elk/sketch.exp.svg b/e2etests/testdata/stable/constant_near_stress/elk/sketch.exp.svg new file mode 100644 index 000000000..a7943851b --- /dev/null +++ b/e2etests/testdata/stable/constant_near_stress/elk/sketch.exp.svg @@ -0,0 +1,798 @@ + +xyThe top of the mountainJoeDonald

Cats, no less liquid than their shadows, offer no angles to the wind.

+

If we can't fix it, it ain't broke.

+

Dieters live life in the fasting lane.

+
i am top lefti am top righti am bottom lefti am bottom right + + +
\ No newline at end of file diff --git a/e2etests/testdata/stable/constant_near_title/dagre/board.exp.json b/e2etests/testdata/stable/constant_near_title/dagre/board.exp.json new file mode 100644 index 000000000..09cde3d74 --- /dev/null +++ b/e2etests/testdata/stable/constant_near_title/dagre/board.exp.json @@ -0,0 +1,500 @@ +{ + "name": "", + "fontFamily": "SourceSansPro", + "shapes": [ + { + "id": "poll the people", + "type": "", + "pos": { + "x": 112, + "y": 0 + }, + "width": 210, + "height": 126, + "opacity": 1, + "strokeDash": 0, + "strokeWidth": 2, + "borderRadius": 0, + "fill": "#F7F8FE", + "stroke": "#0D32B2", + "shadow": false, + "3d": false, + "multiple": false, + "tooltip": "", + "link": "", + "icon": null, + "iconPosition": "", + "blend": false, + "fields": null, + "methods": null, + "columns": null, + "label": "poll the people", + "fontSize": 16, + "fontFamily": "DEFAULT", + "language": "", + "color": "#0A0F25", + "italic": false, + "bold": true, + "underline": false, + "labelWidth": 110, + "labelHeight": 26, + "labelPosition": "INSIDE_MIDDLE_CENTER", + "zIndex": 0, + "level": 1 + }, + { + "id": "results", + "type": "", + "pos": { + "x": 241, + "y": 226 + }, + "width": 153, + "height": 126, + "opacity": 1, + "strokeDash": 0, + "strokeWidth": 2, + "borderRadius": 0, + "fill": "#F7F8FE", + "stroke": "#0D32B2", + "shadow": false, + "3d": false, + "multiple": false, + "tooltip": "", + "link": "", + "icon": null, + "iconPosition": "", + "blend": false, + "fields": null, + "methods": null, + "columns": null, + "label": "results", + "fontSize": 16, + "fontFamily": "DEFAULT", + "language": "", + "color": "#0A0F25", + "italic": false, + "bold": true, + "underline": false, + "labelWidth": 53, + "labelHeight": 26, + "labelPosition": "INSIDE_MIDDLE_CENTER", + "zIndex": 0, + "level": 1 + }, + { + "id": "unfavorable", + "type": "", + "pos": { + "x": 0, + "y": 452 + }, + "width": 191, + "height": 126, + "opacity": 1, + "strokeDash": 0, + "strokeWidth": 2, + "borderRadius": 0, + "fill": "#F7F8FE", + "stroke": "#0D32B2", + "shadow": false, + "3d": false, + "multiple": false, + "tooltip": "", + "link": "", + "icon": null, + "iconPosition": "", + "blend": false, + "fields": null, + "methods": null, + "columns": null, + "label": "unfavorable", + "fontSize": 16, + "fontFamily": "DEFAULT", + "language": "", + "color": "#0A0F25", + "italic": false, + "bold": true, + "underline": false, + "labelWidth": 91, + "labelHeight": 26, + "labelPosition": "INSIDE_MIDDLE_CENTER", + "zIndex": 0, + "level": 1 + }, + { + "id": "favorable", + "type": "", + "pos": { + "x": 251, + "y": 452 + }, + "width": 173, + "height": 126, + "opacity": 1, + "strokeDash": 0, + "strokeWidth": 2, + "borderRadius": 0, + "fill": "#F7F8FE", + "stroke": "#0D32B2", + "shadow": false, + "3d": false, + "multiple": false, + "tooltip": "", + "link": "", + "icon": null, + "iconPosition": "", + "blend": false, + "fields": null, + "methods": null, + "columns": null, + "label": "favorable", + "fontSize": 16, + "fontFamily": "DEFAULT", + "language": "", + "color": "#0A0F25", + "italic": false, + "bold": true, + "underline": false, + "labelWidth": 73, + "labelHeight": 26, + "labelPosition": "INSIDE_MIDDLE_CENTER", + "zIndex": 0, + "level": 1 + }, + { + "id": "will of the people", + "type": "", + "pos": { + "x": 224, + "y": 678 + }, + "width": 227, + "height": 126, + "opacity": 1, + "strokeDash": 0, + "strokeWidth": 2, + "borderRadius": 0, + "fill": "#F7F8FE", + "stroke": "#0D32B2", + "shadow": false, + "3d": false, + "multiple": false, + "tooltip": "", + "link": "", + "icon": null, + "iconPosition": "", + "blend": false, + "fields": null, + "methods": null, + "columns": null, + "label": "will of the people", + "fontSize": 16, + "fontFamily": "DEFAULT", + "language": "", + "color": "#0A0F25", + "italic": false, + "bold": true, + "underline": false, + "labelWidth": 127, + "labelHeight": 26, + "labelPosition": "INSIDE_MIDDLE_CENTER", + "zIndex": 0, + "level": 1 + }, + { + "id": "title", + "type": "text", + "pos": { + "x": 92, + "y": -70 + }, + "width": 266, + "height": 50, + "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": "# A winning strategy", + "fontSize": 16, + "fontFamily": "DEFAULT", + "language": "markdown", + "color": "#0A0F25", + "italic": false, + "bold": false, + "underline": false, + "labelWidth": 266, + "labelHeight": 50, + "labelPosition": "INSIDE_MIDDLE_CENTER", + "zIndex": 0, + "level": 1 + } + ], + "connections": [ + { + "id": "(poll the people -> results)[0]", + "src": "poll the people", + "srcArrow": "none", + "srcLabel": "", + "dst": "results", + "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": 272.80973451327435, + "y": 126 + }, + { + "x": 308.5619469026549, + "y": 166 + }, + { + "x": 317.5, + "y": 186 + }, + { + "x": 317.5, + "y": 226 + } + ], + "isCurve": true, + "animated": false, + "tooltip": "", + "icon": null, + "zIndex": 0 + }, + { + "id": "(results -> unfavorable)[0]", + "src": "results", + "srcArrow": "none", + "srcLabel": "", + "dst": "unfavorable", + "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": 250.03982300884957, + "y": 352 + }, + { + "x": 207.2079646017699, + "y": 392 + }, + { + "x": 187.5, + "y": 412 + }, + { + "x": 151.5, + "y": 452 + } + ], + "isCurve": true, + "animated": false, + "tooltip": "", + "icon": null, + "zIndex": 0 + }, + { + "id": "(unfavorable -> poll the people)[0]", + "src": "unfavorable", + "srcArrow": "none", + "srcLabel": "", + "dst": "poll the people", + "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": 84.34955752212389, + "y": 452 + }, + { + "x": 77.26991150442478, + "y": 412 + }, + { + "x": 75.5, + "y": 379.4 + }, + { + "x": 75.5, + "y": 345.5 + }, + { + "x": 75.5, + "y": 311.6 + }, + { + "x": 87.9, + "y": 166 + }, + { + "x": 137.5, + "y": 126 + } + ], + "isCurve": true, + "animated": false, + "tooltip": "", + "icon": null, + "zIndex": 0 + }, + { + "id": "(results -> favorable)[0]", + "src": "results", + "srcArrow": "none", + "srcLabel": "", + "dst": "favorable", + "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": 328.6504424778761, + "y": 352 + }, + { + "x": 335.7300884955752, + "y": 392 + }, + { + "x": 337.5, + "y": 412 + }, + { + "x": 337.5, + "y": 452 + } + ], + "isCurve": true, + "animated": false, + "tooltip": "", + "icon": null, + "zIndex": 0 + }, + { + "id": "(favorable -> will of the people)[0]", + "src": "favorable", + "srcArrow": "none", + "srcLabel": "", + "dst": "will of the people", + "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": 337.5, + "y": 578 + }, + { + "x": 337.5, + "y": 618 + }, + { + "x": 337.5, + "y": 638 + }, + { + "x": 337.5, + "y": 678 + } + ], + "isCurve": true, + "animated": false, + "tooltip": "", + "icon": null, + "zIndex": 0 + } + ] +} diff --git a/e2etests/testdata/stable/constant_near_title/dagre/sketch.exp.svg b/e2etests/testdata/stable/constant_near_title/dagre/sketch.exp.svg new file mode 100644 index 000000000..de05ea4cf --- /dev/null +++ b/e2etests/testdata/stable/constant_near_title/dagre/sketch.exp.svg @@ -0,0 +1,796 @@ + +poll the peopleresultsunfavorablefavorablewill of the people

A winning strategy

+
+ + +
\ No newline at end of file diff --git a/e2etests/testdata/stable/constant_near_title/elk/board.exp.json b/e2etests/testdata/stable/constant_near_title/elk/board.exp.json new file mode 100644 index 000000000..e4ae5bee0 --- /dev/null +++ b/e2etests/testdata/stable/constant_near_title/elk/board.exp.json @@ -0,0 +1,459 @@ +{ + "name": "", + "fontFamily": "SourceSansPro", + "shapes": [ + { + "id": "poll the people", + "type": "", + "pos": { + "x": 81, + "y": 12 + }, + "width": 210, + "height": 126, + "opacity": 1, + "strokeDash": 0, + "strokeWidth": 2, + "borderRadius": 0, + "fill": "#F7F8FE", + "stroke": "#0D32B2", + "shadow": false, + "3d": false, + "multiple": false, + "tooltip": "", + "link": "", + "icon": null, + "iconPosition": "", + "blend": false, + "fields": null, + "methods": null, + "columns": null, + "label": "poll the people", + "fontSize": 16, + "fontFamily": "DEFAULT", + "language": "", + "color": "#0A0F25", + "italic": false, + "bold": true, + "underline": false, + "labelWidth": 110, + "labelHeight": 26, + "labelPosition": "INSIDE_MIDDLE_CENTER", + "zIndex": 0, + "level": 1 + }, + { + "id": "results", + "type": "", + "pos": { + "x": 74, + "y": 238 + }, + "width": 153, + "height": 126, + "opacity": 1, + "strokeDash": 0, + "strokeWidth": 2, + "borderRadius": 0, + "fill": "#F7F8FE", + "stroke": "#0D32B2", + "shadow": false, + "3d": false, + "multiple": false, + "tooltip": "", + "link": "", + "icon": null, + "iconPosition": "", + "blend": false, + "fields": null, + "methods": null, + "columns": null, + "label": "results", + "fontSize": 16, + "fontFamily": "DEFAULT", + "language": "", + "color": "#0A0F25", + "italic": false, + "bold": true, + "underline": false, + "labelWidth": 53, + "labelHeight": 26, + "labelPosition": "INSIDE_MIDDLE_CENTER", + "zIndex": 0, + "level": 1 + }, + { + "id": "unfavorable", + "type": "", + "pos": { + "x": 232, + "y": 464 + }, + "width": 191, + "height": 126, + "opacity": 1, + "strokeDash": 0, + "strokeWidth": 2, + "borderRadius": 0, + "fill": "#F7F8FE", + "stroke": "#0D32B2", + "shadow": false, + "3d": false, + "multiple": false, + "tooltip": "", + "link": "", + "icon": null, + "iconPosition": "", + "blend": false, + "fields": null, + "methods": null, + "columns": null, + "label": "unfavorable", + "fontSize": 16, + "fontFamily": "DEFAULT", + "language": "", + "color": "#0A0F25", + "italic": false, + "bold": true, + "underline": false, + "labelWidth": 91, + "labelHeight": 26, + "labelPosition": "INSIDE_MIDDLE_CENTER", + "zIndex": 0, + "level": 1 + }, + { + "id": "favorable", + "type": "", + "pos": { + "x": 39, + "y": 464 + }, + "width": 173, + "height": 126, + "opacity": 1, + "strokeDash": 0, + "strokeWidth": 2, + "borderRadius": 0, + "fill": "#F7F8FE", + "stroke": "#0D32B2", + "shadow": false, + "3d": false, + "multiple": false, + "tooltip": "", + "link": "", + "icon": null, + "iconPosition": "", + "blend": false, + "fields": null, + "methods": null, + "columns": null, + "label": "favorable", + "fontSize": 16, + "fontFamily": "DEFAULT", + "language": "", + "color": "#0A0F25", + "italic": false, + "bold": true, + "underline": false, + "labelWidth": 73, + "labelHeight": 26, + "labelPosition": "INSIDE_MIDDLE_CENTER", + "zIndex": 0, + "level": 1 + }, + { + "id": "will of the people", + "type": "", + "pos": { + "x": 12, + "y": 690 + }, + "width": 227, + "height": 126, + "opacity": 1, + "strokeDash": 0, + "strokeWidth": 2, + "borderRadius": 0, + "fill": "#F7F8FE", + "stroke": "#0D32B2", + "shadow": false, + "3d": false, + "multiple": false, + "tooltip": "", + "link": "", + "icon": null, + "iconPosition": "", + "blend": false, + "fields": null, + "methods": null, + "columns": null, + "label": "will of the people", + "fontSize": 16, + "fontFamily": "DEFAULT", + "language": "", + "color": "#0A0F25", + "italic": false, + "bold": true, + "underline": false, + "labelWidth": 127, + "labelHeight": 26, + "labelPosition": "INSIDE_MIDDLE_CENTER", + "zIndex": 0, + "level": 1 + }, + { + "id": "title", + "type": "text", + "pos": { + "x": 84, + "y": -58 + }, + "width": 266, + "height": 50, + "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": "# A winning strategy", + "fontSize": 16, + "fontFamily": "DEFAULT", + "language": "markdown", + "color": "#0A0F25", + "italic": false, + "bold": false, + "underline": false, + "labelWidth": 266, + "labelHeight": 50, + "labelPosition": "INSIDE_MIDDLE_CENTER", + "zIndex": 0, + "level": 1 + } + ], + "connections": [ + { + "id": "(poll the people -> results)[0]", + "src": "poll the people", + "srcArrow": "none", + "srcLabel": "", + "dst": "results", + "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": 151, + "y": 138 + }, + { + "x": 151, + "y": 238 + } + ], + "animated": false, + "tooltip": "", + "icon": null, + "zIndex": 0 + }, + { + "id": "(results -> unfavorable)[0]", + "src": "results", + "srcArrow": "none", + "srcLabel": "", + "dst": "unfavorable", + "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": 176.5, + "y": 364 + }, + { + "x": 176.5, + "y": 414 + }, + { + "x": 295.6666666666667, + "y": 414 + }, + { + "x": 295.6666666666667, + "y": 464 + } + ], + "animated": false, + "tooltip": "", + "icon": null, + "zIndex": 0 + }, + { + "id": "(unfavorable -> poll the people)[0]", + "src": "unfavorable", + "srcArrow": "none", + "srcLabel": "", + "dst": "poll the people", + "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": 359.3333333333333, + "y": 464 + }, + { + "x": 359.3333333333333, + "y": 188 + }, + { + "x": 221, + "y": 188 + }, + { + "x": 221, + "y": 138 + } + ], + "animated": false, + "tooltip": "", + "icon": null, + "zIndex": 0 + }, + { + "id": "(results -> favorable)[0]", + "src": "results", + "srcArrow": "none", + "srcLabel": "", + "dst": "favorable", + "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": 125.5, + "y": 364 + }, + { + "x": 125.5, + "y": 464 + } + ], + "animated": false, + "tooltip": "", + "icon": null, + "zIndex": 0 + }, + { + "id": "(favorable -> will of the people)[0]", + "src": "favorable", + "srcArrow": "none", + "srcLabel": "", + "dst": "will of the people", + "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": 125.5, + "y": 590 + }, + { + "x": 125.5, + "y": 690 + } + ], + "animated": false, + "tooltip": "", + "icon": null, + "zIndex": 0 + } + ] +} diff --git a/e2etests/testdata/stable/constant_near_title/elk/sketch.exp.svg b/e2etests/testdata/stable/constant_near_title/elk/sketch.exp.svg new file mode 100644 index 000000000..bfc3fa64f --- /dev/null +++ b/e2etests/testdata/stable/constant_near_title/elk/sketch.exp.svg @@ -0,0 +1,796 @@ + +poll the peopleresultsunfavorablefavorablewill of the people

A winning strategy

+
+ + +
\ No newline at end of file diff --git a/e2etests/testdata/stable/dense/elk/board.exp.json b/e2etests/testdata/stable/dense/elk/board.exp.json index 45e2e0190..1574221b4 100644 --- a/e2etests/testdata/stable/dense/elk/board.exp.json +++ b/e2etests/testdata/stable/dense/elk/board.exp.json @@ -6,8 +6,8 @@ "id": "a", "type": "", "pos": { - "x": 449, - "y": 238 + "x": 537, + "y": 248 }, "width": 113, "height": 126, @@ -46,7 +46,7 @@ "id": "b", "type": "", "pos": { - "x": 420, + "x": 537, "y": 474 }, "width": 113, @@ -86,8 +86,8 @@ "id": "c", "type": "", "pos": { - "x": 316, - "y": 238 + "x": 404, + "y": 248 }, "width": 113, "height": 126, @@ -126,8 +126,8 @@ "id": "d", "type": "", "pos": { - "x": 428, - "y": 720 + "x": 443, + "y": 740 }, "width": 114, "height": 126, @@ -166,8 +166,8 @@ "id": "e", "type": "", "pos": { - "x": 533, - "y": 1202 + "x": 406, + "y": 1222 }, "width": 113, "height": 126, @@ -206,8 +206,8 @@ "id": "f", "type": "", "pos": { - "x": 73, - "y": 946 + "x": 140, + "y": 986 }, "width": 111, "height": 126, @@ -246,8 +246,8 @@ "id": "g", "type": "", "pos": { - "x": 23, - "y": 720 + "x": 157, + "y": 740 }, "width": 114, "height": 126, @@ -286,8 +286,8 @@ "id": "h", "type": "", "pos": { - "x": 562, - "y": 720 + "x": 23, + "y": 740 }, "width": 113, "height": 126, @@ -326,8 +326,8 @@ "id": "i", "type": "", "pos": { - "x": 384, - "y": 1428 + "x": 257, + "y": 1448 }, "width": 109, "height": 126, @@ -366,7 +366,7 @@ "id": "j", "type": "", "pos": { - "x": 317, + "x": 577, "y": 12 }, "width": 110, @@ -406,8 +406,8 @@ "id": "k", "type": "", "pos": { - "x": 382, - "y": 1654 + "x": 255, + "y": 1674 }, "width": 113, "height": 126, @@ -446,8 +446,8 @@ "id": "l", "type": "", "pos": { - "x": 297, - "y": 946 + "x": 474, + "y": 986 }, "width": 109, "height": 126, @@ -486,8 +486,8 @@ "id": "m", "type": "", "pos": { - "x": 158, - "y": 720 + "x": 291, + "y": 740 }, "width": 117, "height": 126, @@ -526,8 +526,8 @@ "id": "n", "type": "", "pos": { - "x": 400, - "y": 1202 + "x": 273, + "y": 1222 }, "width": 113, "height": 126, @@ -566,8 +566,8 @@ "id": "o", "type": "", "pos": { - "x": 695, - "y": 720 + "x": 577, + "y": 740 }, "width": 114, "height": 126, @@ -606,8 +606,8 @@ "id": "p", "type": "", "pos": { - "x": 295, - "y": 720 + "x": 711, + "y": 740 }, "width": 113, "height": 126, @@ -646,8 +646,8 @@ "id": "q", "type": "", "pos": { - "x": 533, - "y": 1428 + "x": 406, + "y": 1448 }, "width": 114, "height": 126, @@ -710,11 +710,11 @@ "labelPercentage": 0, "route": [ { - "x": 505.17857142857144, - "y": 364 + "x": 593.6428571428572, + "y": 374 }, { - "x": 505.17857142857144, + "x": 593.6428571428572, "y": 474 } ], @@ -749,19 +749,19 @@ "labelPercentage": 0, "route": [ { - "x": 372.17857142857144, - "y": 364 + "x": 460.6428571428572, + "y": 374 }, { - "x": 372.17857142857144, - "y": 414 + "x": 460.6428571428572, + "y": 424 }, { - "x": 476.92857142857144, - "y": 414 + "x": 565.3928571428572, + "y": 424 }, { - "x": 476.92857142857144, + "x": 565.3928571428572, "y": 474 } ], @@ -796,20 +796,20 @@ "labelPercentage": 0, "route": [ { - "x": 513.5, - "y": 846 + "x": 500.00000000000006, + "y": 866 }, { - "x": 513.5, - "y": 896 + "x": 500.00000000000006, + "y": 926 }, { - "x": 618, - "y": 896 + "x": 463.00000000000006, + "y": 926 }, { - "x": 618, - "y": 1202 + "x": 463.00000000000006, + "y": 1222 } ], "animated": false, @@ -843,20 +843,20 @@ "labelPercentage": 0, "route": [ { - "x": 147, - "y": 1072 + "x": 214, + "y": 1112 }, { - "x": 147, - "y": 1142 + "x": 214, + "y": 1162 }, { - "x": 561.5, - "y": 1142 + "x": 434.75000000000006, + "y": 1162 }, { - "x": 561.5, - "y": 1202 + "x": 434.75000000000006, + "y": 1222 } ], "animated": false, @@ -890,20 +890,28 @@ "labelPercentage": 0, "route": [ { - "x": 468.8571428571429, + "x": 585.5714285714287, "y": 600 }, { - "x": 468.8571428571429, + "x": 585.5714285714287, "y": 670 }, { - "x": 147, + "x": 146, "y": 670 }, { - "x": 147, - "y": 946 + "x": 146, + "y": 916 + }, + { + "x": 177, + "y": 916 + }, + { + "x": 177, + "y": 986 } ], "animated": false, @@ -937,20 +945,20 @@ "labelPercentage": 0, "route": [ { - "x": 452.7142857142857, + "x": 601.7142857142858, "y": 600 }, { - "x": 452.7142857142857, - "y": 660 + "x": 601.7142857142858, + "y": 680 }, { - "x": 80, - "y": 660 + "x": 214, + "y": 680 }, { - "x": 80, - "y": 720 + "x": 214, + "y": 740 } ], "animated": false, @@ -984,20 +992,12 @@ "labelPercentage": 0, "route": [ { - "x": 80, - "y": 846 + "x": 214, + "y": 866 }, { - "x": 80, - "y": 896 - }, - { - "x": 110, - "y": 896 - }, - { - "x": 110, - "y": 946 + "x": 214, + "y": 986 } ], "animated": false, @@ -1031,20 +1031,20 @@ "labelPercentage": 0, "route": [ { - "x": 501.1428571428571, + "x": 569.4285714285716, "y": 600 }, { - "x": 501.1428571428571, + "x": 569.4285714285716, "y": 660 }, { - "x": 618.5, + "x": 79.5, "y": 660 }, { - "x": 618.5, - "y": 720 + "x": 79.5, + "y": 740 } ], "animated": false, @@ -1078,11 +1078,11 @@ "labelPercentage": 0, "route": [ { - "x": 436.57142857142856, + "x": 553.2857142857143, "y": 600 }, { - "x": 436.57142857142856, + "x": 553.2857142857143, "y": 650 }, { @@ -1091,15 +1091,15 @@ }, { "x": 12, - "y": 1378 + "y": 1398 }, { - "x": 420.4166666666667, - "y": 1378 + "x": 293.6666666666667, + "y": 1398 }, { - "x": 420.4166666666667, - "y": 1428 + "x": 293.6666666666667, + "y": 1448 } ], "animated": false, @@ -1133,12 +1133,20 @@ "labelPercentage": 0, "route": [ { - "x": 485, + "x": 617.8571428571429, "y": 600 }, { - "x": 485, - "y": 720 + "x": 617.8571428571429, + "y": 690 + }, + { + "x": 500.00000000000006, + "y": 690 + }, + { + "x": 500.00000000000006, + "y": 740 } ], "animated": false, @@ -1172,12 +1180,20 @@ "labelPercentage": 0, "route": [ { - "x": 372.17857142857144, + "x": 605.1428571428572, "y": 138 }, { - "x": 372.17857142857144, - "y": 238 + "x": 605.1428571428572, + "y": 188 + }, + { + "x": 460.6428571428572, + "y": 188 + }, + { + "x": 460.6428571428572, + "y": 248 } ], "animated": false, @@ -1211,20 +1227,20 @@ "labelPercentage": 0, "route": [ { - "x": 399.67857142857144, + "x": 632.6428571428572, "y": 138 }, { - "x": 399.67857142857144, - "y": 188 + "x": 632.6428571428572, + "y": 198 }, { - "x": 505.17857142857144, - "y": 188 + "x": 593.6428571428572, + "y": 198 }, { - "x": 505.17857142857144, - "y": 238 + "x": 593.6428571428572, + "y": 248 } ], "animated": false, @@ -1258,27 +1274,19 @@ "labelPercentage": 0, "route": [ { - "x": 448.67857142857144, + "x": 621.8928571428572, "y": 474 }, { - "x": 448.67857142857144, + "x": 621.8928571428572, "y": 424 }, { - "x": 304.67857142857144, + "x": 660.1428571428572, "y": 424 }, { - "x": 304.67857142857144, - "y": 188 - }, - { - "x": 344.67857142857144, - "y": 188 - }, - { - "x": 344.67857142857144, + "x": 660.1428571428572, "y": 138 } ], @@ -1313,12 +1321,12 @@ "labelPercentage": 0, "route": [ { - "x": 438.58333333333337, - "y": 1554 + "x": 311.83333333333337, + "y": 1574 }, { - "x": 438.58333333333337, - "y": 1654 + "x": 311.83333333333337, + "y": 1674 } ], "animated": false, @@ -1352,20 +1360,12 @@ "labelPercentage": 0, "route": [ { - "x": 456.5, - "y": 846 + "x": 528.5, + "y": 866 }, { - "x": 456.5, - "y": 896 - }, - { - "x": 378.75, - "y": 896 - }, - { - "x": 378.75, - "y": 946 + "x": 528.5, + "y": 986 } ], "animated": false, @@ -1399,20 +1399,20 @@ "labelPercentage": 0, "route": [ { - "x": 351.5, - "y": 1072 + "x": 528.5, + "y": 1112 }, { - "x": 351.5, - "y": 1122 + "x": 528.5, + "y": 1162 }, { - "x": 589.75, - "y": 1122 + "x": 491.25000000000006, + "y": 1162 }, { - "x": 589.75, - "y": 1202 + "x": 491.25000000000006, + "y": 1222 } ], "animated": false, @@ -1446,20 +1446,20 @@ "labelPercentage": 0, "route": [ { - "x": 236, - "y": 846 + "x": 369, + "y": 866 }, { - "x": 236, - "y": 896 + "x": 369, + "y": 936 }, { - "x": 324.25, - "y": 896 + "x": 501.25000000000006, + "y": 936 }, { - "x": 324.25, - "y": 946 + "x": 501.25000000000006, + "y": 986 } ], "animated": false, @@ -1493,20 +1493,12 @@ "labelPercentage": 0, "route": [ { - "x": 197, - "y": 846 + "x": 330, + "y": 866 }, { - "x": 197, - "y": 1132 - }, - { - "x": 456.75, - "y": 1132 - }, - { - "x": 456.75, - "y": 1202 + "x": 330, + "y": 1222 } ], "animated": false, @@ -1540,12 +1532,12 @@ "labelPercentage": 0, "route": [ { - "x": 456.75, - "y": 1328 + "x": 330, + "y": 1348 }, { - "x": 456.75, - "y": 1428 + "x": 330, + "y": 1448 } ], "animated": false, @@ -1579,12 +1571,28 @@ "labelPercentage": 0, "route": [ { - "x": 485, - "y": 846 + "x": 471.50000000000006, + "y": 866 }, { - "x": 485, - "y": 1202 + "x": 471.50000000000006, + "y": 916 + }, + { + "x": 452.00000000000006, + "y": 916 + }, + { + "x": 452.00000000000006, + "y": 1172 + }, + { + "x": 358.25, + "y": 1172 + }, + { + "x": 358.25, + "y": 1222 } ], "animated": false, @@ -1618,20 +1626,20 @@ "labelPercentage": 0, "route": [ { - "x": 110, - "y": 1072 + "x": 177, + "y": 1112 }, { - "x": 110, - "y": 1152 + "x": 177, + "y": 1172 }, { - "x": 428.5, - "y": 1152 + "x": 301.75, + "y": 1172 }, { - "x": 428.5, - "y": 1202 + "x": 301.75, + "y": 1222 } ], "animated": false, @@ -1665,20 +1673,12 @@ "labelPercentage": 0, "route": [ { - "x": 517.2857142857142, + "x": 634.0000000000001, "y": 600 }, { - "x": 517.2857142857142, - "y": 650 - }, - { - "x": 752, - "y": 650 - }, - { - "x": 752, - "y": 720 + "x": 634.0000000000001, + "y": 740 } ], "animated": false, @@ -1712,12 +1712,20 @@ "labelPercentage": 0, "route": [ { - "x": 351.5, - "y": 846 + "x": 767.5, + "y": 866 }, { - "x": 351.5, - "y": 946 + "x": 767.5, + "y": 916 + }, + { + "x": 555.75, + "y": 916 + }, + { + "x": 555.75, + "y": 986 } ], "animated": false, @@ -1751,12 +1759,12 @@ "labelPercentage": 0, "route": [ { - "x": 589.75, - "y": 1328 + "x": 463.00000000000006, + "y": 1348 }, { - "x": 589.75, - "y": 1428 + "x": 463.00000000000006, + "y": 1448 } ], "animated": false, diff --git a/e2etests/testdata/stable/dense/elk/sketch.exp.svg b/e2etests/testdata/stable/dense/elk/sketch.exp.svg index 792d8ea74..292905735 100644 --- a/e2etests/testdata/stable/dense/elk/sketch.exp.svg +++ b/e2etests/testdata/stable/dense/elk/sketch.exp.svg @@ -2,7 +2,7 @@ abcdefghijklmnopq + finallyatreeandnodessomemoremanythenhereyouhavehierarchyanotherofnestingtreesatreeinsidehierarchyroot - +finallyatreeandnodessomemoremanythenhereyouhavehierarchyanotherofnestingtreesatreeinsidehierarchyroot + bacde21345abcde +bacde21345abcde alphabeta gamma +alphabeta gamma 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 + + + + aabbccddllffwwyynniijjkkssuurmeemmmmgghhzzooppqqrrttvvxxabac 123456 - - - - - - - +aabbccddllffwwyynniijjkkssuurmeemmmmgghhzzooppqqrrttvvxxabac 123456 + + + + + + + abcdefghiqrjmnoszaabbeeffggklptuwxyccddv - +abcdefghiqrjmnoszaabbeeffggklptuwxyccddv + abcdefghijklmnopqrstuvw - +abcdefghijklmnopqrstuvw + abcdefghijklmnopqrstu - +abcdefghijklmnopqrstu + Foo Baz12hello - +Foo Baz12hello + acdefgbh +acdefgbh topabcbottomstartend - +topabcbottomstartend + rootcontainerrootleftrightrootinnerrootinnerleftrightleftright to inner leftto inner rightto inner leftto inner rightto left container rootto right container root +rootcontainerrootleftrightrootinnerrootinnerleftrightleftright to inner leftto inner rightto inner leftto inner rightto left container rootto right container root diff --git a/e2etests/testdata/stable/p/dagre/board.exp.json b/e2etests/testdata/stable/p/dagre/board.exp.json index bb254d64c..a4742e0b8 100644 --- a/e2etests/testdata/stable/p/dagre/board.exp.json +++ b/e2etests/testdata/stable/p/dagre/board.exp.json @@ -34,7 +34,7 @@ "language": "markdown", "color": "#0A0F25", "italic": false, - "bold": true, + "bold": false, "underline": false, "labelWidth": 1857, "labelHeight": 24, diff --git a/e2etests/testdata/stable/p/dagre/sketch.exp.svg b/e2etests/testdata/stable/p/dagre/sketch.exp.svg index 840c8a89b..6aba7026c 100644 --- a/e2etests/testdata/stable/p/dagre/sketch.exp.svg +++ b/e2etests/testdata/stable/p/dagre/sketch.exp.svg @@ -277,6 +277,7 @@ width="2057" height="676" viewBox="-100 -100 2057 676">a labelblabelsa class+ +public() bool +void- +private() int +voidcloudyyyy:= 5 := a + 7 -fmt.Printf("%d", b)cyldiadocssix cornersa random iconoverpackdocs pagetoohard o saysinglepersona queuea squarea step at a timedatausersid -int -name -varchar - result := callThisFunction(obj, 5) midthis sideother side - +fmt.Printf("%d", b)cyldiadocssix cornersa random iconoverpackdocs pagetoohard o saysinglepersona queuea squarea step at a timedatausersid +int +name +varchar + result := callThisFunction(obj, 5) midthis sideother side + - + a labelblabelsa class+ -public() bool -void- -private() int -voidcloudyyyy:= 5 +a labelblabelsa class+ +public() bool +void- +private() int +voidcloudyyyy:= 5 := a + 7 -fmt.Printf("%d", b)cyldiadocssix cornersa random iconoverpackdocs pagetoohard o saysinglepersona queuea squarea step at a timedatausersid -int -name -varchar - result := callThisFunction(obj, 5) midthis sideother side - +fmt.Printf("%d", b)cyldiadocssix cornersa random iconoverpackdocs pagetoohard o saysinglepersona queuea squarea step at a timedatausersid +int +name +varchar + result := callThisFunction(obj, 5) midthis sideother side + - + abcdggggroup 1group bchoonested guy lalaeyokayokaywhat would arnold saythis note +abcdggggroup 1group bchoonested guy lalaeyokayokaywhat would arnold saythis note - - - - - + + + + + diff --git a/e2etests/testdata/stable/sequence_diagram_groups/elk/board.exp.json b/e2etests/testdata/stable/sequence_diagram_groups/elk/board.exp.json index 270198f16..776b8ddfb 100644 --- a/e2etests/testdata/stable/sequence_diagram_groups/elk/board.exp.json +++ b/e2etests/testdata/stable/sequence_diagram_groups/elk/board.exp.json @@ -198,6 +198,7 @@ "underline": false, "labelWidth": 30, "labelHeight": 26, + "labelPosition": "INSIDE_TOP_LEFT", "zIndex": 3, "level": 1 }, @@ -237,6 +238,7 @@ "underline": false, "labelWidth": 57, "labelHeight": 26, + "labelPosition": "INSIDE_TOP_LEFT", "zIndex": 3, "level": 1 }, @@ -276,6 +278,7 @@ "underline": false, "labelWidth": 78, "labelHeight": 26, + "labelPosition": "INSIDE_TOP_LEFT", "zIndex": 3, "level": 2 }, @@ -315,6 +318,7 @@ "underline": false, "labelWidth": 58, "labelHeight": 26, + "labelPosition": "INSIDE_TOP_LEFT", "zIndex": 3, "level": 1 }, @@ -394,6 +398,7 @@ "underline": false, "labelWidth": 38, "labelHeight": 26, + "labelPosition": "INSIDE_TOP_LEFT", "zIndex": 3, "level": 1 }, diff --git a/e2etests/testdata/stable/sequence_diagram_groups/elk/sketch.exp.svg b/e2etests/testdata/stable/sequence_diagram_groups/elk/sketch.exp.svg index 0afcfd18a..d3ed45a1a 100644 --- a/e2etests/testdata/stable/sequence_diagram_groups/elk/sketch.exp.svg +++ b/e2etests/testdata/stable/sequence_diagram_groups/elk/sketch.exp.svg @@ -18,13 +18,13 @@ width="1147" height="2268" viewBox="-76 -26 1147 2268">abcdggggroup 1group bchoonested guy lalaeyokayokaywhat would arnold saythis note +abcdggggroup 1group bchoonested guy lalaeyokayokaywhat would arnold saythis note - - - - - + + + + + diff --git a/e2etests/testdata/stable/sequence_diagram_nested_groups/dagre/board.exp.json b/e2etests/testdata/stable/sequence_diagram_nested_groups/dagre/board.exp.json index 21f56fb8a..772cc63c2 100644 --- a/e2etests/testdata/stable/sequence_diagram_nested_groups/dagre/board.exp.json +++ b/e2etests/testdata/stable/sequence_diagram_nested_groups/dagre/board.exp.json @@ -158,6 +158,7 @@ "underline": false, "labelWidth": 160, "labelHeight": 26, + "labelPosition": "INSIDE_TOP_LEFT", "zIndex": 3, "level": 1 }, @@ -197,6 +198,7 @@ "underline": false, "labelWidth": 238, "labelHeight": 26, + "labelPosition": "INSIDE_TOP_LEFT", "zIndex": 3, "level": 2 }, @@ -236,6 +238,7 @@ "underline": false, "labelWidth": 173, "labelHeight": 26, + "labelPosition": "INSIDE_TOP_LEFT", "zIndex": 3, "level": 3 }, @@ -275,6 +278,7 @@ "underline": false, "labelWidth": 77, "labelHeight": 26, + "labelPosition": "INSIDE_TOP_LEFT", "zIndex": 3, "level": 4 }, @@ -354,6 +358,7 @@ "underline": false, "labelWidth": 41, "labelHeight": 26, + "labelPosition": "INSIDE_TOP_LEFT", "zIndex": 3, "level": 5 }, @@ -393,6 +398,7 @@ "underline": false, "labelWidth": 24, "labelHeight": 26, + "labelPosition": "INSIDE_TOP_LEFT", "zIndex": 3, "level": 1 }, @@ -432,6 +438,7 @@ "underline": false, "labelWidth": 47, "labelHeight": 26, + "labelPosition": "INSIDE_TOP_LEFT", "zIndex": 3, "level": 2 }, @@ -471,6 +478,7 @@ "underline": false, "labelWidth": 47, "labelHeight": 26, + "labelPosition": "INSIDE_TOP_LEFT", "zIndex": 3, "level": 2 }, @@ -510,6 +518,7 @@ "underline": false, "labelWidth": 47, "labelHeight": 26, + "labelPosition": "INSIDE_TOP_LEFT", "zIndex": 3, "level": 2 }, @@ -549,6 +558,7 @@ "underline": false, "labelWidth": 47, "labelHeight": 26, + "labelPosition": "INSIDE_TOP_LEFT", "zIndex": 3, "level": 2 }, diff --git a/e2etests/testdata/stable/sequence_diagram_nested_groups/dagre/sketch.exp.svg b/e2etests/testdata/stable/sequence_diagram_nested_groups/dagre/sketch.exp.svg index 0dbb0afaa..48b328e86 100644 --- a/e2etests/testdata/stable/sequence_diagram_nested_groups/dagre/sketch.exp.svg +++ b/e2etests/testdata/stable/sequence_diagram_nested_groups/dagre/sketch.exp.svg @@ -18,18 +18,18 @@ width="1116" height="2458" viewBox="-197 -26 1116 2458">abjust an actorthis is a message groupaltand this is a nested message groupcase 1case 2case 3case 4what about more nestingcrazy townwhoa a notea note here to remember that padding must consider notes toojustalongnotehere +abjust an actorthis is a message groupaltand this is a nested message groupcase 1case 2case 3case 4what about more nestingcrazy townwhoa a notea note here to remember that padding must consider notes toojustalongnotehere - - - - - - - - - - + + + + + + + + + + abjust an actorthis is a message groupaltand this is a nested message groupcase 1case 2case 3case 4what about more nestingcrazy townwhoa a notea note here to remember that padding must consider notes toojustalongnotehere +abjust an actorthis is a message groupaltand this is a nested message groupcase 1case 2case 3case 4what about more nestingcrazy townwhoa a notea note here to remember that padding must consider notes toojustalongnotehere - - - - - - - - - - + + + + + + + + + + How this is renderedCLId2astd2compilerd2layoutd2exporterd2themesd2rendererd2sequencelayoutd2dagrelayoutonly if root is not sequence 'How this is rendered: {...}'tokenized ASTcompile ASTobjects and edgesrun layout enginesrun engine on shape: sequence_diagram, temporarily removerun core engine on rest add back in sequence diagramsdiagram with correct positions and dimensionsexport diagram with chosen theme and rendererget theme stylesrender to SVGresulting SVGmeasurements also take place +How this is renderedCLId2astd2compilerd2layoutd2exporterd2themesd2rendererd2sequencelayoutd2dagrelayoutonly if root is not sequence 'How this is rendered: {...}'tokenized ASTcompile ASTobjects and edgesrun layout enginesrun engine on shape: sequence_diagram, temporarily removerun core engine on rest add back in sequence diagramsdiagram with correct positions and dimensionsexport diagram with chosen theme and rendererget theme stylesrender to SVGresulting SVGmeasurements also take place - + diff --git a/e2etests/testdata/stable/sequence_diagram_real/elk/board.exp.json b/e2etests/testdata/stable/sequence_diagram_real/elk/board.exp.json index d20a6d846..3945edf3f 100644 --- a/e2etests/testdata/stable/sequence_diagram_real/elk/board.exp.json +++ b/e2etests/testdata/stable/sequence_diagram_real/elk/board.exp.json @@ -478,6 +478,7 @@ "underline": false, "labelWidth": 185, "labelHeight": 26, + "labelPosition": "INSIDE_TOP_LEFT", "zIndex": 3, "level": 2 }, diff --git a/e2etests/testdata/stable/sequence_diagram_real/elk/sketch.exp.svg b/e2etests/testdata/stable/sequence_diagram_real/elk/sketch.exp.svg index 364fb5549..5f4dd359a 100644 --- a/e2etests/testdata/stable/sequence_diagram_real/elk/sketch.exp.svg +++ b/e2etests/testdata/stable/sequence_diagram_real/elk/sketch.exp.svg @@ -18,9 +18,9 @@ width="2447" height="2536" viewBox="-88 -88 2447 2536">How this is renderedCLId2astd2compilerd2layoutd2exporterd2themesd2rendererd2sequencelayoutd2dagrelayoutonly if root is not sequence 'How this is rendered: {...}'tokenized ASTcompile ASTobjects and edgesrun layout enginesrun engine on shape: sequence_diagram, temporarily removerun core engine on rest add back in sequence diagramsdiagram with correct positions and dimensionsexport diagram with chosen theme and rendererget theme stylesrender to SVGresulting SVGmeasurements also take place +How this is renderedCLId2astd2compilerd2layoutd2exporterd2themesd2rendererd2sequencelayoutd2dagrelayoutonly if root is not sequence 'How this is rendered: {...}'tokenized ASTcompile ASTobjects and edgesrun layout enginesrun engine on shape: sequence_diagram, temporarily removerun core engine on rest add back in sequence diagramsdiagram with correct positions and dimensionsexport diagram with chosen theme and rendererget theme stylesrender to SVGresulting SVGmeasurements also take place - + diff --git a/e2etests/testdata/stable/sequence_diagrams/elk/board.exp.json b/e2etests/testdata/stable/sequence_diagrams/elk/board.exp.json index 69ec36ed6..1f4879ef4 100644 --- a/e2etests/testdata/stable/sequence_diagrams/elk/board.exp.json +++ b/e2etests/testdata/stable/sequence_diagrams/elk/board.exp.json @@ -47,7 +47,7 @@ "type": "sequence_diagram", "pos": { "x": 12, - "y": 364 + "y": 363 }, "width": 1472, "height": 2080, @@ -166,7 +166,7 @@ "id": "finally", "type": "queue", "pos": { - "x": 1504, + "x": 1503, "y": 2626 }, "width": 1623, @@ -206,7 +206,7 @@ "id": "finally.sequence", "type": "sequence_diagram", "pos": { - "x": 1579, + "x": 1578, "y": 2701 }, "width": 1473, @@ -246,7 +246,7 @@ "id": "finally.sequence.scorer", "type": "", "pos": { - "x": 1603, + "x": 1602, "y": 2806 }, "width": 150, @@ -286,7 +286,7 @@ "id": "finally.sequence.concept", "type": "", "pos": { - "x": 1848, + "x": 1847, "y": 2806 }, "width": 160, @@ -326,7 +326,7 @@ "id": "finally.sequence.essayRubric", "type": "", "pos": { - "x": 2085, + "x": 2084, "y": 2806 }, "width": 186, @@ -366,7 +366,7 @@ "id": "finally.sequence.item", "type": "", "pos": { - "x": 2353, + "x": 2352, "y": 2806 }, "width": 150, @@ -406,7 +406,7 @@ "id": "finally.sequence.itemOutcome", "type": "", "pos": { - "x": 2580, + "x": 2579, "y": 2806 }, "width": 197, @@ -446,7 +446,7 @@ "id": "finally.sequence.itemResponse", "type": "", "pos": { - "x": 2828, + "x": 2827, "y": 2806 }, "width": 200, @@ -487,7 +487,7 @@ "type": "", "pos": { "x": 36, - "y": 474 + "y": 473 }, "width": 150, "height": 126, @@ -527,7 +527,7 @@ "type": "rectangle", "pos": { "x": 105, - "y": 714 + "y": 713 }, "width": 12, "height": 1592, @@ -566,7 +566,7 @@ "type": "", "pos": { "x": 261, - "y": 474 + "y": 473 }, "width": 200, "height": 126, @@ -606,7 +606,7 @@ "type": "rectangle", "pos": { "x": 355, - "y": 714 + "y": 713 }, "width": 12, "height": 162, @@ -645,7 +645,7 @@ "type": "", "pos": { "x": 536, - "y": 474 + "y": 473 }, "width": 150, "height": 126, @@ -685,7 +685,7 @@ "type": "rectangle", "pos": { "x": 605, - "y": 974 + "y": 973 }, "width": 12, "height": 162, @@ -724,7 +724,7 @@ "type": "", "pos": { "x": 768, - "y": 474 + "y": 473 }, "width": 186, "height": 126, @@ -764,7 +764,7 @@ "type": "rectangle", "pos": { "x": 855, - "y": 1234 + "y": 1233 }, "width": 12, "height": 422, @@ -803,7 +803,7 @@ "type": "rectangle", "pos": { "x": 851, - "y": 1364 + "y": 1363 }, "width": 20, "height": 162, @@ -842,7 +842,7 @@ "type": "", "pos": { "x": 1031, - "y": 474 + "y": 473 }, "width": 160, "height": 126, @@ -882,7 +882,7 @@ "type": "rectangle", "pos": { "x": 1105, - "y": 1494 + "y": 1493 }, "width": 12, "height": 80, @@ -921,7 +921,7 @@ "type": "", "pos": { "x": 1263, - "y": 474 + "y": 473 }, "width": 197, "height": 126, @@ -961,7 +961,7 @@ "type": "rectangle", "pos": { "x": 1355, - "y": 1754 + "y": 1753 }, "width": 12, "height": 80, @@ -1000,7 +1000,7 @@ "type": "rectangle", "pos": { "x": 605, - "y": 1884 + "y": 1883 }, "width": 12, "height": 80, @@ -1039,7 +1039,7 @@ "type": "rectangle", "pos": { "x": 605, - "y": 2014 + "y": 2013 }, "width": 12, "height": 80, @@ -1078,7 +1078,7 @@ "type": "rectangle", "pos": { "x": 1355, - "y": 2144 + "y": 2143 }, "width": 12, "height": 80, @@ -1117,7 +1117,7 @@ "type": "rectangle", "pos": { "x": 1355, - "y": 2274 + "y": 2273 }, "width": 12, "height": 80, @@ -1864,7 +1864,7 @@ "id": "finally.sequence.itemResponse.a", "type": "rectangle", "pos": { - "x": 2922, + "x": 2921, "y": 3046 }, "width": 12, @@ -1903,7 +1903,7 @@ "id": "finally.sequence.item.a", "type": "rectangle", "pos": { - "x": 2422, + "x": 2421, "y": 3030 }, "width": 12, @@ -1942,7 +1942,7 @@ "id": "finally.sequence.item.a.b", "type": "rectangle", "pos": { - "x": 2418, + "x": 2417, "y": 3046 }, "width": 20, @@ -1981,7 +1981,7 @@ "id": "finally.sequence.essayRubric.a", "type": "rectangle", "pos": { - "x": 2172, + "x": 2171, "y": 3144 }, "width": 12, @@ -2020,7 +2020,7 @@ "id": "finally.sequence.essayRubric.a.b", "type": "rectangle", "pos": { - "x": 2168, + "x": 2167, "y": 3160 }, "width": 20, @@ -2059,7 +2059,7 @@ "id": "finally.sequence.essayRubric.a.b.c", "type": "rectangle", "pos": { - "x": 2164, + "x": 2163, "y": 3176 }, "width": 28, @@ -2098,7 +2098,7 @@ "id": "finally.sequence.concept.a", "type": "rectangle", "pos": { - "x": 1922, + "x": 1921, "y": 3258 }, "width": 12, @@ -2137,7 +2137,7 @@ "id": "finally.sequence.concept.a.b", "type": "rectangle", "pos": { - "x": 1918, + "x": 1917, "y": 3274 }, "width": 20, @@ -2176,7 +2176,7 @@ "id": "finally.sequence.concept.a.b.c", "type": "rectangle", "pos": { - "x": 1914, + "x": 1913, "y": 3290 }, "width": 28, @@ -2215,7 +2215,7 @@ "id": "finally.sequence.concept.a.b.c.d", "type": "rectangle", "pos": { - "x": 1910, + "x": 1909, "y": 3306 }, "width": 36, @@ -2449,7 +2449,7 @@ "id": "finally.sequence.scorer.abc", "type": "rectangle", "pos": { - "x": 1672, + "x": 1671, "y": 3696 }, "width": 12, @@ -2488,7 +2488,7 @@ "id": "finally.sequence.itemResponse.c", "type": "rectangle", "pos": { - "x": 2922, + "x": 2921, "y": 3956 }, "width": 12, @@ -2552,11 +2552,11 @@ "route": [ { "x": 117, - "y": 730 + "y": 729.5 }, { "x": 355, - "y": 730 + "y": 729.5 } ], "animated": false, @@ -2591,11 +2591,11 @@ "route": [ { "x": 117, - "y": 860 + "y": 859.5 }, { "x": 355, - "y": 860 + "y": 859.5 } ], "animated": false, @@ -2630,11 +2630,11 @@ "route": [ { "x": 117, - "y": 990 + "y": 989.5 }, { "x": 605, - "y": 990 + "y": 989.5 } ], "animated": false, @@ -2669,11 +2669,11 @@ "route": [ { "x": 117, - "y": 1120 + "y": 1119.5 }, { "x": 605, - "y": 1120 + "y": 1119.5 } ], "animated": false, @@ -2708,11 +2708,11 @@ "route": [ { "x": 117, - "y": 1250 + "y": 1249.5 }, { "x": 855, - "y": 1250 + "y": 1249.5 } ], "animated": false, @@ -2747,11 +2747,11 @@ "route": [ { "x": 361, - "y": 1380 + "y": 1379.5 }, { "x": 851, - "y": 1380 + "y": 1379.5 } ], "animated": false, @@ -2786,11 +2786,11 @@ "route": [ { "x": 871, - "y": 1510 + "y": 1509.5 }, { "x": 1105, - "y": 1510 + "y": 1509.5 } ], "animated": false, @@ -2825,11 +2825,11 @@ "route": [ { "x": 111, - "y": 1640 + "y": 1639.5 }, { "x": 855, - "y": 1640 + "y": 1639.5 } ], "animated": false, @@ -2864,11 +2864,11 @@ "route": [ { "x": 117, - "y": 1770 + "y": 1769.5 }, { "x": 1355.5, - "y": 1770 + "y": 1769.5 } ], "animated": false, @@ -2903,11 +2903,11 @@ "route": [ { "x": 117, - "y": 1900 + "y": 1899.5 }, { "x": 605, - "y": 1900 + "y": 1899.5 } ], "animated": false, @@ -2942,11 +2942,11 @@ "route": [ { "x": 117, - "y": 2030 + "y": 2029.5 }, { "x": 605, - "y": 2030 + "y": 2029.5 } ], "animated": false, @@ -2981,11 +2981,11 @@ "route": [ { "x": 117, - "y": 2160 + "y": 2159.5 }, { "x": 1355.5, - "y": 2160 + "y": 2159.5 } ], "animated": false, @@ -3020,11 +3020,11 @@ "route": [ { "x": 117, - "y": 2290 + "y": 2289.5 }, { "x": 1355.5, - "y": 2290 + "y": 2289.5 } ], "animated": false, @@ -3749,7 +3749,7 @@ "y": 2571 }, { - "x": 2325, + "x": 2326, "y": 2626 } ], @@ -3784,11 +3784,11 @@ "labelPercentage": 0, "route": [ { - "x": 2922, + "x": 2921.5, "y": 3062 }, { - "x": 2438, + "x": 2437.5, "y": 3062 } ], @@ -3823,11 +3823,11 @@ "labelPercentage": 0, "route": [ { - "x": 2418, + "x": 2417.5, "y": 3192 }, { - "x": 2192, + "x": 2191.5, "y": 3192 } ], @@ -3862,11 +3862,11 @@ "labelPercentage": 0, "route": [ { - "x": 2164, + "x": 2163.5, "y": 3322 }, { - "x": 1946, + "x": 1945.5, "y": 3322 } ], @@ -3901,11 +3901,11 @@ "labelPercentage": 0, "route": [ { - "x": 2422, + "x": 2421.5, "y": 3452 }, { - "x": 2188, + "x": 2187.5, "y": 3452 } ], @@ -3940,11 +3940,11 @@ "labelPercentage": 0, "route": [ { - "x": 1946, + "x": 1945.5, "y": 3582 }, { - "x": 2656.5, + "x": 2656, "y": 3582 } ], @@ -3979,11 +3979,11 @@ "labelPercentage": 0, "route": [ { - "x": 1684, + "x": 1683.5, "y": 3712 }, { - "x": 2422, + "x": 2421.5, "y": 3712 } ], @@ -4018,11 +4018,11 @@ "labelPercentage": 0, "route": [ { - "x": 2656.5, + "x": 2656, "y": 3842 }, { - "x": 1678, + "x": 1677.5, "y": 3842 } ], @@ -4057,11 +4057,11 @@ "labelPercentage": 0, "route": [ { - "x": 1678, + "x": 1677.5, "y": 3972 }, { - "x": 2922, + "x": 2921.5, "y": 3972 } ], @@ -4097,11 +4097,11 @@ "route": [ { "x": 111, - "y": 600 + "y": 599.5 }, { "x": 111, - "y": 2420 + "y": 2419.5 } ], "animated": false, @@ -4136,11 +4136,11 @@ "route": [ { "x": 361, - "y": 600 + "y": 599.5 }, { "x": 361, - "y": 2420 + "y": 2419.5 } ], "animated": false, @@ -4175,11 +4175,11 @@ "route": [ { "x": 611, - "y": 600 + "y": 599.5 }, { "x": 611, - "y": 2420 + "y": 2419.5 } ], "animated": false, @@ -4214,11 +4214,11 @@ "route": [ { "x": 861, - "y": 600 + "y": 599.5 }, { "x": 861, - "y": 2420 + "y": 2419.5 } ], "animated": false, @@ -4253,11 +4253,11 @@ "route": [ { "x": 1111, - "y": 600 + "y": 599.5 }, { "x": 1111, - "y": 2420 + "y": 2419.5 } ], "animated": false, @@ -4292,11 +4292,11 @@ "route": [ { "x": 1361.5, - "y": 600 + "y": 599.5 }, { "x": 1361.5, - "y": 2420 + "y": 2419.5 } ], "animated": false, @@ -4564,11 +4564,11 @@ "labelPercentage": 0, "route": [ { - "x": 1678, + "x": 1677.5, "y": 2932 }, { - "x": 1678, + "x": 1677.5, "y": 4102 } ], @@ -4603,11 +4603,11 @@ "labelPercentage": 0, "route": [ { - "x": 1928, + "x": 1927.5, "y": 2932 }, { - "x": 1928, + "x": 1927.5, "y": 4102 } ], @@ -4642,11 +4642,11 @@ "labelPercentage": 0, "route": [ { - "x": 2178, + "x": 2177.5, "y": 2932 }, { - "x": 2178, + "x": 2177.5, "y": 4102 } ], @@ -4681,11 +4681,11 @@ "labelPercentage": 0, "route": [ { - "x": 2428, + "x": 2427.5, "y": 2932 }, { - "x": 2428, + "x": 2427.5, "y": 4102 } ], @@ -4720,11 +4720,11 @@ "labelPercentage": 0, "route": [ { - "x": 2678.5, + "x": 2678, "y": 2932 }, { - "x": 2678.5, + "x": 2678, "y": 4102 } ], @@ -4759,11 +4759,11 @@ "labelPercentage": 0, "route": [ { - "x": 2928, + "x": 2927.5, "y": 2932 }, { - "x": 2928, + "x": 2927.5, "y": 4102 } ], diff --git a/e2etests/testdata/stable/sequence_diagrams/elk/sketch.exp.svg b/e2etests/testdata/stable/sequence_diagrams/elk/sketch.exp.svg index 8aaa9c058..7d5445201 100644 --- a/e2etests/testdata/stable/sequence_diagrams/elk/sketch.exp.svg +++ b/e2etests/testdata/stable/sequence_diagrams/elk/sketch.exp.svg @@ -18,20 +18,20 @@ width="3324" height="4389" viewBox="-88 -88 3324 4389">a_shapea_sequenceanotherfinallysequencesequencesequencescoreritemResponseitemessayRubricconceptitemOutcomescorerconceptessayRubricitemitemOutcomeitemResponsescoreritemResponseitemessayRubricconceptitemOutcome getItem()itemgetRubric()rubricapplyTo(essayResp)match(essayResponse)scorenewgetNormalMinimum()getNormalMaximum()setScore(score)setFeedback(missingConcepts)getItem()itemgetRubric()rubricapplyTo(essayResp)match(essayResponse)scorenewgetNormalMinimum()getNormalMaximum()setScore(score)setFeedback(missingConcepts) +a_shapea_sequenceanotherfinallysequencesequencesequencescoreritemResponseitemessayRubricconceptitemOutcomescorerconceptessayRubricitemitemOutcomeitemResponsescoreritemResponseitemessayRubricconceptitemOutcome getItem()itemgetRubric()rubricapplyTo(essayResp)match(essayResponse)scorenewgetNormalMinimum()getNormalMaximum()setScore(score)setFeedback(missingConcepts)getItem()itemgetRubric()rubricapplyTo(essayResp)match(essayResponse)scorenewgetNormalMinimum()getNormalMaximum()setScore(score)setFeedback(missingConcepts) - - - - - - - - - - - - + + + + + + + + + + + + diff --git a/e2etests/testdata/stable/sql_tables/dagre/board.exp.json b/e2etests/testdata/stable/sql_tables/dagre/board.exp.json index a3b85c40e..0fd37e978 100644 --- a/e2etests/testdata/stable/sql_tables/dagre/board.exp.json +++ b/e2etests/testdata/stable/sql_tables/dagre/board.exp.json @@ -9,14 +9,14 @@ "x": 0, "y": 0 }, - "width": 208, + "width": 268, "height": 216, "opacity": 1, "strokeDash": 0, "strokeWidth": 2, "borderRadius": 0, - "fill": "#FFFFFF", - "stroke": "#0A0F25", + "fill": "#0A0F25", + "stroke": "#FFFFFF", "shadow": false, "3d": false, "multiple": false, @@ -165,7 +165,7 @@ "labelWidth": 77, "labelHeight": 26 }, - "constraint": "", + "constraint": "primary_key", "reference": "" } ], @@ -180,13 +180,16 @@ "labelWidth": 61, "labelHeight": 36, "zIndex": 0, - "level": 1 + "level": 1, + "primaryAccentColor": "#0D32B2", + "secondaryAccentColor": "#4A6FF3", + "neutralAccentColor": "#676C7E" }, { "id": "products", "type": "sql_table", "pos": { - "x": 268, + "x": 328, "y": 18 }, "width": 164, @@ -195,8 +198,8 @@ "strokeDash": 0, "strokeWidth": 2, "borderRadius": 0, - "fill": "#FFFFFF", - "stroke": "#0A0F25", + "fill": "#0A0F25", + "stroke": "#FFFFFF", "shadow": false, "3d": false, "multiple": false, @@ -332,13 +335,16 @@ "labelWidth": 99, "labelHeight": 36, "zIndex": 0, - "level": 1 + "level": 1, + "primaryAccentColor": "#0D32B2", + "secondaryAccentColor": "#4A6FF3", + "neutralAccentColor": "#676C7E" }, { "id": "orders", "type": "sql_table", "pos": { - "x": 268, + "x": 328, "y": 316 }, "width": 164, @@ -347,8 +353,8 @@ "strokeDash": 0, "strokeWidth": 2, "borderRadius": 0, - "fill": "#FFFFFF", - "stroke": "#0A0F25", + "fill": "#0A0F25", + "stroke": "#FFFFFF", "shadow": false, "3d": false, "multiple": false, @@ -456,13 +462,16 @@ "labelWidth": 74, "labelHeight": 36, "zIndex": 0, - "level": 1 + "level": 1, + "primaryAccentColor": "#0D32B2", + "secondaryAccentColor": "#4A6FF3", + "neutralAccentColor": "#676C7E" }, { "id": "shipments", "type": "sql_table", "pos": { - "x": 492, + "x": 552, "y": 18 }, "width": 244, @@ -471,8 +480,8 @@ "strokeDash": 0, "strokeWidth": 2, "borderRadius": 0, - "fill": "#FFFFFF", - "stroke": "#0A0F25", + "fill": "#0A0F25", + "stroke": "#FFFFFF", "shadow": false, "3d": false, "multiple": false, @@ -608,7 +617,10 @@ "labelWidth": 116, "labelHeight": 36, "zIndex": 0, - "level": 1 + "level": 1, + "primaryAccentColor": "#0D32B2", + "secondaryAccentColor": "#4A6FF3", + "neutralAccentColor": "#676C7E" } ], "connections": [ @@ -638,20 +650,20 @@ "labelPercentage": 0, "route": [ { - "x": 104, + "x": 134, "y": 216 }, { - "x": 104, + "x": 134, "y": 256 }, { - "x": 136.8, - "y": 282.2 + "x": 172.8, + "y": 283.2 }, { - "x": 268, - "y": 347 + "x": 328, + "y": 352 } ], "isCurve": true, @@ -686,19 +698,19 @@ "labelPercentage": 0, "route": [ { - "x": 350, + "x": 410, "y": 198 }, { - "x": 350, + "x": 410, "y": 252.4 }, { - "x": 350, + "x": 410, "y": 276 }, { - "x": 350, + "x": 410, "y": 316 } ], @@ -734,19 +746,19 @@ "labelPercentage": 0, "route": [ { - "x": 614, + "x": 674, "y": 198 }, { - "x": 614, + "x": 674, "y": 252.4 }, { - "x": 577.6, + "x": 637.6, "y": 282.8 }, { - "x": 432, + "x": 492, "y": 350 } ], diff --git a/e2etests/testdata/stable/sql_tables/dagre/sketch.exp.svg b/e2etests/testdata/stable/sql_tables/dagre/sketch.exp.svg index d6087ea8a..8b78b0f66 100644 --- a/e2etests/testdata/stable/sql_tables/dagre/sketch.exp.svg +++ b/e2etests/testdata/stable/sql_tables/dagre/sketch.exp.svg @@ -2,7 +2,7 @@ usersid +int +name +string +email +string +password +string +last_login +datetime +PKproductsid +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 - - +usersid +int +name +string +email +string +password +string +last_login +datetime +PKproductsid +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 + + -rectangle - -square +rectangle + +square acbl1l2c1l2c3l2c2l3c1l3c2l4bacacbabcc1c2c3abc - +acbl1l2c1l2c3l2c2l3c1l3c2l4bacacbabcc1c2c3abc + bearmama bearpapa bear + + + \ No newline at end of file diff --git a/e2etests/testdata/stable/text_font_sizes/elk/board.exp.json b/e2etests/testdata/stable/text_font_sizes/elk/board.exp.json new file mode 100644 index 000000000..ae4e7c84e --- /dev/null +++ b/e2etests/testdata/stable/text_font_sizes/elk/board.exp.json @@ -0,0 +1,211 @@ +{ + "name": "", + "fontFamily": "SourceSansPro", + "shapes": [ + { + "id": "bear", + "type": "text", + "pos": { + "x": 64, + "y": 153 + }, + "width": 44, + "height": 28, + "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": "bear", + "fontSize": 22, + "fontFamily": "DEFAULT", + "language": "", + "color": "#0A0F25", + "italic": false, + "bold": true, + "underline": false, + "labelWidth": 44, + "labelHeight": 28, + "zIndex": 0, + "level": 1 + }, + { + "id": "mama bear", + "type": "text", + "pos": { + "x": 12, + "y": 17 + }, + "width": 135, + "height": 36, + "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": "mama bear", + "fontSize": 28, + "fontFamily": "DEFAULT", + "language": "", + "color": "#676C7E", + "italic": true, + "bold": false, + "underline": false, + "labelWidth": 135, + "labelHeight": 36, + "zIndex": 0, + "level": 1 + }, + { + "id": "papa bear", + "type": "text", + "pos": { + "x": 167, + "y": 12 + }, + "width": 134, + "height": 41, + "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": "papa bear", + "fontSize": 32, + "fontFamily": "DEFAULT", + "language": "", + "color": "#0A0F25", + "italic": false, + "bold": false, + "underline": true, + "labelWidth": 134, + "labelHeight": 41, + "zIndex": 0, + "level": 1 + } + ], + "connections": [ + { + "id": "(mama bear -> bear)[0]", + "src": "mama bear", + "srcArrow": "none", + "srcLabel": "", + "dst": "bear", + "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": 79.5, + "y": 53 + }, + { + "x": 79.5, + "y": 153 + } + ], + "animated": false, + "tooltip": "", + "icon": null, + "zIndex": 0 + }, + { + "id": "(papa bear -> bear)[0]", + "src": "papa bear", + "srcArrow": "none", + "srcLabel": "", + "dst": "bear", + "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": 234, + "y": 53 + }, + { + "x": 234, + "y": 103 + }, + { + "x": 94.16666666666666, + "y": 103 + }, + { + "x": 94.16666666666666, + "y": 153 + } + ], + "animated": false, + "tooltip": "", + "icon": null, + "zIndex": 0 + } + ] +} diff --git a/e2etests/testdata/stable/text_font_sizes/elk/sketch.exp.svg b/e2etests/testdata/stable/text_font_sizes/elk/sketch.exp.svg new file mode 100644 index 000000000..506609593 --- /dev/null +++ b/e2etests/testdata/stable/text_font_sizes/elk/sketch.exp.svg @@ -0,0 +1,805 @@ + +bearmama bearpapa bear + + + \ No newline at end of file diff --git a/e2etests/testdata/stable/us_map/elk/board.exp.json b/e2etests/testdata/stable/us_map/elk/board.exp.json index e3aa25c1f..4fae0bd94 100644 --- a/e2etests/testdata/stable/us_map/elk/board.exp.json +++ b/e2etests/testdata/stable/us_map/elk/board.exp.json @@ -6,7 +6,7 @@ "id": "AK", "type": "", "pos": { - "x": 283, + "x": 1237, "y": 12 }, "width": 126, @@ -46,7 +46,7 @@ "id": "HI", "type": "", "pos": { - "x": 429, + "x": 1098, "y": 12 }, "width": 119, @@ -86,7 +86,7 @@ "id": "AL", "type": "", "pos": { - "x": 825, + "x": 549, "y": 238 }, "width": 124, @@ -126,7 +126,7 @@ "id": "FL", "type": "", "pos": { - "x": 827, + "x": 550, "y": 464 }, "width": 121, @@ -166,8 +166,8 @@ "id": "GA", "type": "", "pos": { - "x": 823, - "y": 700 + "x": 549, + "y": 730 }, "width": 126, "height": 126, @@ -206,8 +206,8 @@ "id": "MS", "type": "", "pos": { - "x": 834, - "y": 946 + "x": 415, + "y": 956 }, "width": 126, "height": 126, @@ -246,8 +246,8 @@ "id": "TN", "type": "", "pos": { - "x": 700, - "y": 2276 + "x": 566, + "y": 2336 }, "width": 124, "height": 126, @@ -286,8 +286,8 @@ "id": "AZ", "type": "", "pos": { - "x": 49, - "y": 946 + "x": 1517, + "y": 956 }, "width": 125, "height": 126, @@ -326,8 +326,8 @@ "id": "CA", "type": "", "pos": { - "x": 49, - "y": 1212 + "x": 1517, + "y": 1222 }, "width": 125, "height": 126, @@ -366,8 +366,8 @@ "id": "NV", "type": "", "pos": { - "x": 70, - "y": 1478 + "x": 1497, + "y": 1488 }, "width": 125, "height": 126, @@ -406,8 +406,8 @@ "id": "NM", "type": "", "pos": { - "x": 432, - "y": 1734 + "x": 1005, + "y": 1744 }, "width": 126, "height": 126, @@ -446,8 +446,8 @@ "id": "UT", "type": "", "pos": { - "x": 89, - "y": 2276 + "x": 1451, + "y": 2336 }, "width": 124, "height": 126, @@ -486,7 +486,7 @@ "id": "AR", "type": "", "pos": { - "x": 968, + "x": 404, "y": 464 }, "width": 126, @@ -526,8 +526,8 @@ "id": "LA", "type": "", "pos": { - "x": 969, - "y": 700 + "x": 406, + "y": 730 }, "width": 123, "height": 126, @@ -566,8 +566,8 @@ "id": "MO", "type": "", "pos": { - "x": 530, - "y": 1212 + "x": 1032, + "y": 1222 }, "width": 128, "height": 126, @@ -606,8 +606,8 @@ "id": "OK", "type": "", "pos": { - "x": 485, - "y": 2010 + "x": 714, + "y": 2050 }, "width": 126, "height": 126, @@ -646,8 +646,8 @@ "id": "TX", "type": "", "pos": { - "x": 342, - "y": 2522 + "x": 422, + "y": 2572 }, "width": 123, "height": 126, @@ -686,8 +686,8 @@ "id": "OR", "type": "", "pos": { - "x": 51, - "y": 1734 + "x": 1515, + "y": 1744 }, "width": 126, "height": 126, @@ -726,8 +726,8 @@ "id": "CO", "type": "", "pos": { - "x": 437, - "y": 700 + "x": 819, + "y": 730 }, "width": 126, "height": 126, @@ -766,8 +766,8 @@ "id": "KS", "type": "", "pos": { - "x": 438, - "y": 946 + "x": 820, + "y": 956 }, "width": 123, "height": 126, @@ -806,8 +806,8 @@ "id": "NE", "type": "", "pos": { - "x": 455, - "y": 1478 + "x": 986, + "y": 1488 }, "width": 123, "height": 126, @@ -846,8 +846,8 @@ "id": "WY", "type": "", "pos": { - "x": 58, - "y": 2788 + "x": 1408, + "y": 2818 }, "width": 128, "height": 126, @@ -886,8 +886,8 @@ "id": "CT", "type": "", "pos": { - "x": 1181, - "y": 1212 + "x": 158, + "y": 1222 }, "width": 124, "height": 126, @@ -926,8 +926,8 @@ "id": "MA", "type": "", "pos": { - "x": 1180, - "y": 1478 + "x": 157, + "y": 1488 }, "width": 127, "height": 126, @@ -966,8 +966,8 @@ "id": "NY", "type": "", "pos": { - "x": 1160, - "y": 2010 + "x": 179, + "y": 2050 }, "width": 124, "height": 126, @@ -1006,8 +1006,8 @@ "id": "RI", "type": "", "pos": { - "x": 1463, - "y": 2522 + "x": 170, + "y": 2572 }, "width": 118, "height": 126, @@ -1046,8 +1046,8 @@ "id": "DE", "type": "", "pos": { - "x": 1035, - "y": 1212 + "x": 306, + "y": 1222 }, "width": 123, "height": 126, @@ -1086,8 +1086,8 @@ "id": "MD", "type": "", "pos": { - "x": 1033, - "y": 1478 + "x": 304, + "y": 1488 }, "width": 127, "height": 126, @@ -1126,8 +1126,8 @@ "id": "NJ", "type": "", "pos": { - "x": 1014, - "y": 1734 + "x": 256, + "y": 1744 }, "width": 122, "height": 126, @@ -1166,8 +1166,8 @@ "id": "PA", "type": "", "pos": { - "x": 982, - "y": 2276 + "x": 276, + "y": 2336 }, "width": 124, "height": 126, @@ -1206,8 +1206,8 @@ "id": "NC", "type": "", "pos": { - "x": 679, - "y": 1734 + "x": 571, + "y": 1744 }, "width": 124, "height": 126, @@ -1246,8 +1246,8 @@ "id": "SC", "type": "", "pos": { - "x": 680, - "y": 2010 + "x": 571, + "y": 2050 }, "width": 123, "height": 126, @@ -1286,8 +1286,8 @@ "id": "ID", "type": "", "pos": { - "x": 198, - "y": 946 + "x": 1378, + "y": 956 }, "width": 119, "height": 126, @@ -1326,8 +1326,8 @@ "id": "MT", "type": "", "pos": { - "x": 194, - "y": 1212 + "x": 1180, + "y": 1222 }, "width": 126, "height": 126, @@ -1366,8 +1366,8 @@ "id": "WA", "type": "", "pos": { - "x": 12, - "y": 2522 + "x": 1524, + "y": 2572 }, "width": 129, "height": 126, @@ -1406,7 +1406,7 @@ "id": "IL", "type": "", "pos": { - "x": 568, + "x": 1383, "y": 12 }, "width": 117, @@ -1446,7 +1446,7 @@ "id": "IN", "type": "", "pos": { - "x": 567, + "x": 1382, "y": 238 }, "width": 119, @@ -1486,7 +1486,7 @@ "id": "IA", "type": "", "pos": { - "x": 688, + "x": 1402, "y": 464 }, "width": 119, @@ -1526,8 +1526,8 @@ "id": "MI", "type": "", "pos": { - "x": 637, - "y": 700 + "x": 965, + "y": 730 }, "width": 121, "height": 126, @@ -1566,7 +1566,7 @@ "id": "KY", "type": "", "pos": { - "x": 545, + "x": 1259, "y": 464 }, "width": 123, @@ -1606,8 +1606,8 @@ "id": "WI", "type": "", "pos": { - "x": 342, - "y": 2010 + "x": 956, + "y": 2050 }, "width": 123, "height": 126, @@ -1646,8 +1646,8 @@ "id": "OH", "type": "", "pos": { - "x": 750, - "y": 1478 + "x": 787, + "y": 1488 }, "width": 126, "height": 126, @@ -1686,8 +1686,8 @@ "id": "MN", "type": "", "pos": { - "x": 635, - "y": 946 + "x": 1220, + "y": 956 }, "width": 127, "height": 126, @@ -1726,8 +1726,8 @@ "id": "SD", "type": "", "pos": { - "x": 269, - "y": 1734 + "x": 1202, + "y": 1744 }, "width": 124, "height": 126, @@ -1766,8 +1766,8 @@ "id": "VA", "type": "", "pos": { - "x": 724, - "y": 2522 + "x": 565, + "y": 2572 }, "width": 125, "height": 126, @@ -1806,8 +1806,8 @@ "id": "WV", "type": "", "pos": { - "x": 753, - "y": 2788 + "x": 532, + "y": 2818 }, "width": 129, "height": 126, @@ -1846,8 +1846,8 @@ "id": "ME", "type": "", "pos": { - "x": 1327, - "y": 1478 + "x": 12, + "y": 1488 }, "width": 125, "height": 126, @@ -1886,8 +1886,8 @@ "id": "NH", "type": "", "pos": { - "x": 1306, - "y": 1734 + "x": 32, + "y": 1744 }, "width": 125, "height": 126, @@ -1926,8 +1926,8 @@ "id": "VT", "type": "", "pos": { - "x": 1421, - "y": 2788 + "x": 147, + "y": 2818 }, "width": 124, "height": 126, @@ -1966,8 +1966,8 @@ "id": "ND", "type": "", "pos": { - "x": 237, - "y": 1478 + "x": 1232, + "y": 1488 }, "width": 125, "height": 126, @@ -2030,11 +2030,11 @@ "labelPercentage": 0, "route": [ { - "x": 887.2833333333333, + "x": 611.4666666666666, "y": 364 }, { - "x": 887.2833333333333, + "x": 611.4666666666666, "y": 464 } ], @@ -2069,12 +2069,12 @@ "labelPercentage": 0, "route": [ { - "x": 907.4499999999999, + "x": 591.3, "y": 590 }, { - "x": 907.4499999999999, - "y": 700 + "x": 591.3, + "y": 730 } ], "animated": false, @@ -2108,12 +2108,20 @@ "labelPercentage": 0, "route": [ { - "x": 865.4499999999999, - "y": 826 + "x": 591.3, + "y": 856 }, { - "x": 865.4499999999999, - "y": 946 + "x": 591.3, + "y": 906 + }, + { + "x": 510.29999999999995, + "y": 906 + }, + { + "x": 510.29999999999995, + "y": 956 } ], "animated": false, @@ -2147,28 +2155,20 @@ "labelPercentage": 0, "route": [ { - "x": 909.55, - "y": 1072 + "x": 466.19999999999993, + "y": 1082 }, { - "x": 909.55, - "y": 1132 + "x": 466.19999999999993, + "y": 2256 }, { - "x": 980.9499999999999, - "y": 1132 + "x": 581.6333333333332, + "y": 2256 }, { - "x": 980.9499999999999, - "y": 2196 - }, - { - "x": 792.65, - "y": 2196 - }, - { - "x": 792.65, - "y": 2276 + "x": 581.6333333333332, + "y": 2336 } ], "animated": false, @@ -2202,12 +2202,12 @@ "labelPercentage": 0, "route": [ { - "x": 111.96666666666665, - "y": 1072 + "x": 1580.3833333333332, + "y": 1082 }, { - "x": 111.96666666666665, - "y": 1212 + "x": 1580.3833333333332, + "y": 1222 } ], "animated": false, @@ -2241,12 +2241,12 @@ "labelPercentage": 0, "route": [ { - "x": 132.8, - "y": 1338 + "x": 1559.55, + "y": 1348 }, { - "x": 132.8, - "y": 1478 + "x": 1559.55, + "y": 1488 } ], "animated": false, @@ -2280,20 +2280,20 @@ "labelPercentage": 0, "route": [ { - "x": 170.3, - "y": 1604 + "x": 1522.05, + "y": 1614 }, { - "x": 170.3, + "x": 1522.05, "y": 1674 }, { - "x": 474.04999999999995, + "x": 1089.847619047619, "y": 1674 }, { - "x": 474.04999999999995, - "y": 1734 + "x": 1089.847619047619, + "y": 1744 } ], "animated": false, @@ -2327,20 +2327,20 @@ "labelPercentage": 0, "route": [ { - "x": 463.54999999999995, - "y": 1860 + "x": 1100.347619047619, + "y": 1870 }, { - "x": 463.54999999999995, - "y": 1920 + "x": 1100.347619047619, + "y": 2226 }, { - "x": 163.4, - "y": 1920 + "x": 1500.6499999999999, + "y": 2226 }, { - "x": 163.4, - "y": 2276 + "x": 1500.6499999999999, + "y": 2336 } ], "animated": false, @@ -2374,12 +2374,12 @@ "labelPercentage": 0, "route": [ { - "x": 1030.9499999999998, + "x": 467.79999999999995, "y": 590 }, { - "x": 1030.9499999999998, - "y": 700 + "x": 467.79999999999995, + "y": 730 } ], "animated": false, @@ -2413,20 +2413,12 @@ "labelPercentage": 0, "route": [ { - "x": 1051.4499999999998, - "y": 826 + "x": 447.29999999999995, + "y": 856 }, { - "x": 1051.4499999999998, - "y": 886 - }, - { - "x": 928.4499999999999, - "y": 886 - }, - { - "x": 928.4499999999999, - "y": 946 + "x": 447.29999999999995, + "y": 956 } ], "animated": false, @@ -2460,20 +2452,20 @@ "labelPercentage": 0, "route": [ { - "x": 859.15, - "y": 1072 + "x": 516.5999999999999, + "y": 1082 }, { - "x": 859.15, - "y": 1142 + "x": 516.5999999999999, + "y": 1152 }, { - "x": 636.6500000000001, - "y": 1142 + "x": 1053.4666666666665, + "y": 1152 }, { - "x": 636.6500000000001, - "y": 1212 + "x": 1053.4666666666665, + "y": 1222 } ], "animated": false, @@ -2507,28 +2499,28 @@ "labelPercentage": 0, "route": [ { - "x": 621.4119047619048, - "y": 1338 + "x": 1050.4190476190474, + "y": 1348 }, { - "x": 621.4119047619048, - "y": 1428 + "x": 1050.4190476190474, + "y": 1398 }, { - "x": 601.05, - "y": 1428 + "x": 755.6333333333332, + "y": 1398 }, { - "x": 601.05, - "y": 1960 + "x": 755.6333333333332, + "y": 1920 }, { - "x": 589.55, - "y": 1960 + "x": 735.6333333333332, + "y": 1920 }, { - "x": 589.55, - "y": 2010 + "x": 735.6333333333332, + "y": 2050 } ], "animated": false, @@ -2562,20 +2554,20 @@ "labelPercentage": 0, "route": [ { - "x": 568.55, - "y": 2136 + "x": 777.6333333333332, + "y": 2176 }, { - "x": 568.55, - "y": 2206 + "x": 777.6333333333332, + "y": 2256 }, { - "x": 715.15, - "y": 2206 + "x": 643.6333333333332, + "y": 2256 }, { - "x": 715.15, - "y": 2276 + "x": 643.6333333333332, + "y": 2336 } ], "animated": false, @@ -2609,20 +2601,20 @@ "labelPercentage": 0, "route": [ { - "x": 724.4499999999999, - "y": 2402 + "x": 590.9333333333332, + "y": 2462 }, { - "x": 724.4499999999999, - "y": 2472 + "x": 590.9333333333332, + "y": 2512 }, { - "x": 439.94999999999993, - "y": 2472 + "x": 521.1333333333332, + "y": 2512 }, { - "x": 439.94999999999993, - "y": 2522 + "x": 521.1333333333332, + "y": 2572 } ], "animated": false, @@ -2656,20 +2648,20 @@ "labelPercentage": 0, "route": [ { - "x": 91.13333333333333, - "y": 1338 + "x": 1601.2166666666665, + "y": 1348 }, { - "x": 91.13333333333333, - "y": 1388 + "x": 1601.2166666666665, + "y": 1398 }, { - "x": 101.55, - "y": 1388 + "x": 1590.8, + "y": 1398 }, { - "x": 101.55, - "y": 1478 + "x": 1590.8, + "y": 1488 } ], "animated": false, @@ -2703,12 +2695,12 @@ "labelPercentage": 0, "route": [ { - "x": 145.3, - "y": 1604 + "x": 1547.05, + "y": 1614 }, { - "x": 145.3, - "y": 1734 + "x": 1547.05, + "y": 1744 } ], "animated": false, @@ -2742,12 +2734,12 @@ "labelPercentage": 0, "route": [ { - "x": 499.65, - "y": 826 + "x": 882.1333333333332, + "y": 856 }, { - "x": 499.65, - "y": 946 + "x": 882.1333333333332, + "y": 956 } ], "animated": false, @@ -2781,12 +2773,20 @@ "labelPercentage": 0, "route": [ { - "x": 479.15, - "y": 1072 + "x": 861.6333333333332, + "y": 1082 }, { - "x": 479.15, - "y": 1478 + "x": 861.6333333333332, + "y": 1418 + }, + { + "x": 1010.9476190476189, + "y": 1418 + }, + { + "x": 1010.9476190476189, + "y": 1488 } ], "animated": false, @@ -2820,12 +2820,12 @@ "labelPercentage": 0, "route": [ { - "x": 516.05, - "y": 1604 + "x": 1047.847619047619, + "y": 1614 }, { - "x": 516.05, - "y": 1734 + "x": 1047.847619047619, + "y": 1744 } ], "animated": false, @@ -2859,12 +2859,20 @@ "labelPercentage": 0, "route": [ { - "x": 526.55, - "y": 1860 + "x": 1037.347619047619, + "y": 1870 }, { - "x": 526.55, - "y": 2010 + "x": 1037.347619047619, + "y": 1920 + }, + { + "x": 798.6333333333332, + "y": 1920 + }, + { + "x": 798.6333333333332, + "y": 2050 } ], "animated": false, @@ -2898,20 +2906,20 @@ "labelPercentage": 0, "route": [ { - "x": 505.54999999999995, - "y": 2136 + "x": 819.6333333333332, + "y": 2176 }, { - "x": 505.54999999999995, - "y": 2186 + "x": 819.6333333333332, + "y": 2286 }, { - "x": 188.2, - "y": 2186 + "x": 1475.85, + "y": 2286 }, { - "x": 188.2, - "y": 2276 + "x": 1475.85, + "y": 2336 } ], "animated": false, @@ -2945,28 +2953,12 @@ "labelPercentage": 0, "route": [ { - "x": 182, - "y": 2402 + "x": 1482.05, + "y": 2462 }, { - "x": 182, - "y": 2452 - }, - { - "x": 162, - "y": 2452 - }, - { - "x": 162, - "y": 2708 - }, - { - "x": 113.07142857142857, - "y": 2708 - }, - { - "x": 113.07142857142857, - "y": 2788 + "x": 1482.05, + "y": 2818 } ], "animated": false, @@ -3000,12 +2992,12 @@ "labelPercentage": 0, "route": [ { - "x": 1243.1166666666666, - "y": 1338 + "x": 220.5, + "y": 1348 }, { - "x": 1243.1166666666666, - "y": 1478 + "x": 220.5, + "y": 1488 } ], "animated": false, @@ -3039,12 +3031,12 @@ "labelPercentage": 0, "route": [ { - "x": 1221.9499999999998, - "y": 1604 + "x": 241.66666666666674, + "y": 1614 }, { - "x": 1221.9499999999998, - "y": 2010 + "x": 241.66666666666652, + "y": 2050 } ], "animated": false, @@ -3078,20 +3070,20 @@ "labelPercentage": 0, "route": [ { - "x": 1259.1499999999999, - "y": 2136 + "x": 204.46666666666647, + "y": 2176 }, { - "x": 1259.1499999999999, - "y": 2186 + "x": 204.46666666666647, + "y": 2512 }, { - "x": 1551.2833333333333, - "y": 2186 + "x": 199.76666666666665, + "y": 2512 }, { - "x": 1551.2833333333333, - "y": 2522 + "x": 199.76666666666665, + "y": 2572 } ], "animated": false, @@ -3125,12 +3117,12 @@ "labelPercentage": 0, "route": [ { - "x": 1096.1166666666666, - "y": 1338 + "x": 367.5, + "y": 1348 }, { - "x": 1096.1166666666666, - "y": 1478 + "x": 367.5, + "y": 1488 } ], "animated": false, @@ -3164,12 +3156,20 @@ "labelPercentage": 0, "route": [ { - "x": 1074.9499999999998, - "y": 1604 + "x": 346.33333333333326, + "y": 1614 }, { - "x": 1074.9499999999998, - "y": 1734 + "x": 346.33333333333326, + "y": 1664 + }, + { + "x": 317.66666666666674, + "y": 1664 + }, + { + "x": 317.66666666666674, + "y": 1744 } ], "animated": false, @@ -3203,20 +3203,12 @@ "labelPercentage": 0, "route": [ { - "x": 1054.6166666666666, - "y": 1860 + "x": 338, + "y": 1870 }, { - "x": 1054.6166666666666, - "y": 2186 - }, - { - "x": 1023.6166666666667, - "y": 2186 - }, - { - "x": 1023.6166666666667, - "y": 2276 + "x": 338, + "y": 2336 } ], "animated": false, @@ -3250,20 +3242,20 @@ "labelPercentage": 0, "route": [ { - "x": 867.1166666666667, + "x": 631.6333333333332, "y": 590 }, { - "x": 867.1166666666667, + "x": 631.6333333333332, "y": 640 }, { - "x": 865.4499999999999, + "x": 633.3, "y": 640 }, { - "x": 865.4499999999999, - "y": 700 + "x": 633.3, + "y": 730 } ], "animated": false, @@ -3297,28 +3289,12 @@ "labelPercentage": 0, "route": [ { - "x": 907.4499999999999, - "y": 826 + "x": 633.3, + "y": 856 }, { - "x": 907.4499999999999, - "y": 896 - }, - { - "x": 969.9499999999999, - "y": 896 - }, - { - "x": 969.9499999999999, - "y": 1674 - }, - { - "x": 740.9833333333333, - "y": 1674 - }, - { - "x": 740.9833333333333, - "y": 1734 + "x": 633.3, + "y": 1744 } ], "animated": false, @@ -3352,12 +3328,12 @@ "labelPercentage": 0, "route": [ { - "x": 761.65, - "y": 1860 + "x": 612.6333333333333, + "y": 1870 }, { - "x": 761.65, - "y": 2010 + "x": 612.6333333333332, + "y": 2050 } ], "animated": false, @@ -3391,12 +3367,12 @@ "labelPercentage": 0, "route": [ { - "x": 761.65, - "y": 2136 + "x": 612.6333333333332, + "y": 2176 }, { - "x": 761.65, - "y": 2276 + "x": 612.6333333333332, + "y": 2336 } ], "animated": false, @@ -3430,12 +3406,20 @@ "labelPercentage": 0, "route": [ { - "x": 257.46666666666664, - "y": 1072 + "x": 1438.3833333333332, + "y": 1082 }, { - "x": 257.46666666666664, - "y": 1212 + "x": 1438.3833333333332, + "y": 1172 + }, + { + "x": 1243.1333333333332, + "y": 1172 + }, + { + "x": 1243.1333333333332, + "y": 1222 } ], "animated": false, @@ -3469,20 +3453,20 @@ "labelPercentage": 0, "route": [ { - "x": 236.46666666666664, - "y": 1338 + "x": 1264.1333333333332, + "y": 1348 }, { - "x": 236.46666666666664, - "y": 1388 + "x": 1264.1333333333332, + "y": 1398 }, { - "x": 164.05, - "y": 1388 + "x": 1528.3, + "y": 1398 }, { - "x": 164.05, - "y": 1478 + "x": 1528.3, + "y": 1488 } ], "animated": false, @@ -3516,20 +3500,20 @@ "labelPercentage": 0, "route": [ { - "x": 120.3, - "y": 1604 + "x": 1572.05, + "y": 1614 }, { - "x": 120.3, - "y": 1654 + "x": 1572.05, + "y": 1664 }, { - "x": 113.8, - "y": 1654 + "x": 1578.55, + "y": 1664 }, { - "x": 113.8, - "y": 1734 + "x": 1578.55, + "y": 1744 } ], "animated": false, @@ -3563,20 +3547,20 @@ "labelPercentage": 0, "route": [ { - "x": 145.3, - "y": 1860 + "x": 1547.05, + "y": 1870 }, { - "x": 145.3, - "y": 1910 + "x": 1547.05, + "y": 1920 }, { - "x": 138.6, - "y": 1910 + "x": 1525.4499999999998, + "y": 1920 }, { - "x": 138.6, - "y": 2276 + "x": 1525.4499999999998, + "y": 2336 } ], "animated": false, @@ -3610,20 +3594,20 @@ "labelPercentage": 0, "route": [ { - "x": 120, - "y": 2402 + "x": 1544.05, + "y": 2462 }, { - "x": 120, - "y": 2452 + "x": 1544.05, + "y": 2512 }, { - "x": 98, - "y": 2452 + "x": 1567.05, + "y": 2512 }, { - "x": 98, - "y": 2522 + "x": 1567.05, + "y": 2572 } ], "animated": false, @@ -3657,12 +3641,20 @@ "labelPercentage": 0, "route": [ { - "x": 76.5, - "y": 2648 + "x": 1588.55, + "y": 2698 }, { - "x": 76.5, - "y": 2788 + "x": 1588.55, + "y": 2748 + }, + { + "x": 1518.6214285714284, + "y": 2748 + }, + { + "x": 1518.6214285714284, + "y": 2818 } ], "animated": false, @@ -3696,11 +3688,11 @@ "labelPercentage": 0, "route": [ { - "x": 626.1166666666667, + "x": 1442.1499999999999, "y": 138 }, { - "x": 626.1166666666667, + "x": 1442.1499999999999, "y": 238 } ], @@ -3735,19 +3727,11 @@ "labelPercentage": 0, "route": [ { - "x": 645.95, + "x": 1461.9833333333331, "y": 364 }, { - "x": 645.95, - "y": 414 - }, - { - "x": 747.2833333333333, - "y": 414 - }, - { - "x": 747.2833333333333, + "x": 1461.9833333333331, "y": 464 } ], @@ -3782,12 +3766,20 @@ "labelPercentage": 0, "route": [ { - "x": 727.4499999999999, + "x": 1442.1499999999999, "y": 590 }, { - "x": 727.4499999999999, - "y": 700 + "x": 1442.1499999999999, + "y": 660 + }, + { + "x": 1055.8833333333332, + "y": 660 + }, + { + "x": 1055.8833333333332, + "y": 730 } ], "animated": false, @@ -3821,19 +3813,19 @@ "labelPercentage": 0, "route": [ { - "x": 697.1999999999999, - "y": 700 + "x": 1025.6333333333332, + "y": 730 }, { - "x": 697.1999999999999, - "y": 640 + "x": 1025.6333333333332, + "y": 650 }, { - "x": 643.1833333333333, - "y": 640 + "x": 1308.6833333333332, + "y": 650 }, { - "x": 643.1833333333333, + "x": 1308.6833333333332, "y": 590 } ], @@ -3868,12 +3860,20 @@ "labelPercentage": 0, "route": [ { - "x": 593.9833333333333, + "x": 1333.2833333333333, "y": 590 }, { - "x": 593.9833333333333, - "y": 1212 + "x": 1333.2833333333333, + "y": 670 + }, + { + "x": 1096.1333333333332, + "y": 670 + }, + { + "x": 1096.1333333333332, + "y": 1222 } ], "animated": false, @@ -3907,20 +3907,20 @@ "labelPercentage": 0, "route": [ { - "x": 548.2690476190477, - "y": 1338 + "x": 1141.847619047619, + "y": 1348 }, { - "x": 548.2690476190477, - "y": 1388 + "x": 1141.847619047619, + "y": 1960 }, { - "x": 415.34999999999997, - "y": 1388 + "x": 980.9476190476189, + "y": 1960 }, { - "x": 415.34999999999997, - "y": 2010 + "x": 980.9476190476189, + "y": 2050 } ], "animated": false, @@ -3954,11 +3954,19 @@ "labelPercentage": 0, "route": [ { - "x": 606.2833333333333, + "x": 1422.3166666666666, "y": 364 }, { - "x": 606.2833333333333, + "x": 1422.3166666666666, + "y": 414 + }, + { + "x": 1320.9833333333331, + "y": 414 + }, + { + "x": 1320.9833333333331, "y": 464 } ], @@ -3993,20 +4001,20 @@ "labelPercentage": 0, "route": [ { - "x": 618.5833333333333, + "x": 1284.0833333333333, "y": 590 }, { - "x": 618.5833333333333, - "y": 650 + "x": 1284.0833333333333, + "y": 640 }, { - "x": 666.9499999999999, - "y": 650 + "x": 995.3833333333332, + "y": 640 }, { - "x": 666.9499999999999, - "y": 700 + "x": 995.3833333333332, + "y": 730 } ], "animated": false, @@ -4040,20 +4048,28 @@ "labelPercentage": 0, "route": [ { - "x": 717.3666666666666, - "y": 826 + "x": 1005.4666666666665, + "y": 856 }, { - "x": 717.3666666666666, - "y": 876 + "x": 1005.4666666666665, + "y": 906 }, { - "x": 812.9833333333333, - "y": 876 + "x": 809.6333333333332, + "y": 906 }, { - "x": 812.9833333333333, - "y": 1478 + "x": 809.6333333333332, + "y": 1408 + }, + { + "x": 819.1333333333332, + "y": 1408 + }, + { + "x": 819.1333333333332, + "y": 1488 } ], "animated": false, @@ -4087,28 +4103,20 @@ "labelPercentage": 0, "route": [ { - "x": 767.1166666666667, + "x": 1481.8166666666666, "y": 590 }, { - "x": 767.1166666666667, - "y": 640 + "x": 1481.8166666666666, + "y": 680 }, { - "x": 767.6999999999999, - "y": 640 + "x": 1305.55, + "y": 680 }, { - "x": 767.6999999999999, - "y": 886 - }, - { - "x": 719.3666666666666, - "y": 886 - }, - { - "x": 719.3666666666666, - "y": 946 + "x": 1305.55, + "y": 956 } ], "animated": false, @@ -4142,20 +4150,20 @@ "labelPercentage": 0, "route": [ { - "x": 698.1999999999999, - "y": 1072 + "x": 1284.3833333333332, + "y": 1082 }, { - "x": 698.1999999999999, - "y": 1132 + "x": 1284.3833333333332, + "y": 1152 }, { - "x": 615.3166666666667, - "y": 1132 + "x": 1117.4666666666667, + "y": 1152 }, { - "x": 615.3166666666667, - "y": 1212 + "x": 1117.4666666666667, + "y": 1222 } ], "animated": false, @@ -4189,20 +4197,20 @@ "labelPercentage": 0, "route": [ { - "x": 584.8404761904762, - "y": 1338 + "x": 1086.990476190476, + "y": 1348 }, { - "x": 584.8404761904762, - "y": 1408 + "x": 1086.990476190476, + "y": 1418 }, { - "x": 528.3499999999999, - "y": 1408 + "x": 1035.5476190476188, + "y": 1418 }, { - "x": 528.3499999999999, - "y": 1478 + "x": 1035.5476190476188, + "y": 1488 } ], "animated": false, @@ -4236,20 +4244,20 @@ "labelPercentage": 0, "route": [ { - "x": 475.04999999999995, - "y": 1604 + "x": 1068.347619047619, + "y": 1614 }, { - "x": 475.04999999999995, - "y": 1654 + "x": 1068.347619047619, + "y": 1684 }, { - "x": 351.2166666666666, - "y": 1654 + "x": 1222.7166666666665, + "y": 1684 }, { - "x": 351.2166666666666, - "y": 1734 + "x": 1222.7166666666665, + "y": 1744 } ], "animated": false, @@ -4283,20 +4291,20 @@ "labelPercentage": 0, "route": [ { - "x": 371.88333333333327, - "y": 1860 + "x": 1264.05, + "y": 1870 }, { - "x": 371.88333333333327, - "y": 1930 + "x": 1264.05, + "y": 1970 }, { - "x": 390.74999999999994, - "y": 1930 + "x": 1005.5476190476188, + "y": 1970 }, { - "x": 390.74999999999994, - "y": 2010 + "x": 1005.5476190476188, + "y": 2050 } ], "animated": false, @@ -4330,20 +4338,20 @@ "labelPercentage": 0, "route": [ { - "x": 520.15, - "y": 1072 + "x": 902.6333333333332, + "y": 1082 }, { - "x": 520.15, + "x": 902.6333333333332, "y": 1132 }, { - "x": 551.3166666666667, + "x": 1074.8, "y": 1132 }, { - "x": 551.3166666666667, - "y": 1212 + "x": 1074.8, + "y": 1222 } ], "animated": false, @@ -4377,20 +4385,20 @@ "labelPercentage": 0, "route": [ { - "x": 603.1261904761905, - "y": 1338 + "x": 1105.2761904761903, + "y": 1348 }, { - "x": 603.1261904761905, - "y": 1418 + "x": 1105.2761904761903, + "y": 1428 }, { - "x": 552.9499999999999, - "y": 1418 + "x": 1060.147619047619, + "y": 1428 }, { - "x": 552.9499999999999, - "y": 1478 + "x": 1060.147619047619, + "y": 1488 } ], "animated": false, @@ -4424,28 +4432,28 @@ "labelPercentage": 0, "route": [ { - "x": 536.55, - "y": 1604 + "x": 1006.8476190476189, + "y": 1614 }, { - "x": 536.55, + "x": 1006.8476190476189, "y": 1674 }, { - "x": 579.05, + "x": 766.6333333333332, "y": 1674 }, { - "x": 579.05, - "y": 1940 + "x": 766.6333333333332, + "y": 1930 }, { - "x": 547.55, - "y": 1940 + "x": 756.6333333333332, + "y": 1930 }, { - "x": 547.55, - "y": 2010 + "x": 756.6333333333332, + "y": 2050 } ], "animated": false, @@ -4479,20 +4487,20 @@ "labelPercentage": 0, "route": [ { - "x": 569.3833333333333, + "x": 1357.8833333333332, "y": 590 }, { - "x": 569.3833333333333, - "y": 640 + "x": 1357.8833333333332, + "y": 1162 }, { - "x": 572.65, - "y": 640 + "x": 1138.8, + "y": 1162 }, { - "x": 572.65, - "y": 1212 + "x": 1138.8, + "y": 1222 } ], "animated": false, @@ -4526,20 +4534,20 @@ "labelPercentage": 0, "route": [ { - "x": 639.697619047619, - "y": 1338 + "x": 1068.7047619047617, + "y": 1348 }, { - "x": 639.697619047619, - "y": 1388 + "x": 1068.7047619047617, + "y": 1408 }, { - "x": 781.4833333333333, - "y": 1388 + "x": 882.1333333333332, + "y": 1408 }, { - "x": 781.4833333333333, - "y": 1478 + "x": 882.1333333333332, + "y": 1488 } ], "animated": false, @@ -4573,20 +4581,20 @@ "labelPercentage": 0, "route": [ { - "x": 812.9833333333333, - "y": 1604 + "x": 850.6333333333332, + "y": 1614 }, { - "x": 812.9833333333333, - "y": 2186 - }, - { - "x": 777.15, - "y": 2186 - }, - { - "x": 777.15, + "x": 850.6333333333332, "y": 2276 + }, + { + "x": 674.6333333333332, + "y": 2276 + }, + { + "x": 674.6333333333332, + "y": 2336 } ], "animated": false, @@ -4620,20 +4628,12 @@ "labelPercentage": 0, "route": [ { - "x": 774.05, - "y": 2402 + "x": 615.7333333333332, + "y": 2462 }, { - "x": 774.05, - "y": 2452 - }, - { - "x": 773.85, - "y": 2452 - }, - { - "x": 773.85, - "y": 2522 + "x": 615.7333333333332, + "y": 2572 } ], "animated": false, @@ -4667,20 +4667,12 @@ "labelPercentage": 0, "route": [ { - "x": 786.35, - "y": 2648 - }, - { - "x": 786.35, + "x": 596.9833333333332, "y": 2698 }, { - "x": 796.1, - "y": 2698 - }, - { - "x": 796.1, - "y": 2788 + "x": 596.9833333333332, + "y": 2818 } ], "animated": false, @@ -4714,20 +4706,20 @@ "labelPercentage": 0, "route": [ { - "x": 1010.4499999999999, - "y": 826 + "x": 488.29999999999995, + "y": 856 }, { - "x": 1010.4499999999999, - "y": 876 + "x": 488.29999999999995, + "y": 906 }, { - "x": 896.9499999999999, - "y": 876 + "x": 478.79999999999995, + "y": 906 }, { - "x": 896.9499999999999, - "y": 946 + "x": 478.79999999999995, + "y": 956 } ], "animated": false, @@ -4761,28 +4753,20 @@ "labelPercentage": 0, "route": [ { - "x": 884.3499999999999, - "y": 1072 + "x": 441, + "y": 1082 }, { - "x": 884.3499999999999, - "y": 1152 + "x": 441, + "y": 2512 }, { - "x": 667.9833333333333, - "y": 1152 + "x": 447.33333333333326, + "y": 2512 }, { - "x": 667.9833333333333, - "y": 2462 - }, - { - "x": 415.34999999999997, - "y": 2462 - }, - { - "x": 415.34999999999997, - "y": 2522 + "x": 447.33333333333326, + "y": 2572 } ], "animated": false, @@ -4816,12 +4800,12 @@ "labelPercentage": 0, "route": [ { - "x": 1389.1166666666666, - "y": 1604 + "x": 74.5, + "y": 1614 }, { - "x": 1389.1166666666666, - "y": 1734 + "x": 74.5, + "y": 1744 } ], "animated": false, @@ -4855,28 +4839,20 @@ "labelPercentage": 0, "route": [ { - "x": 1117.2833333333333, - "y": 1604 + "x": 388.66666666666663, + "y": 1614 }, { - "x": 1117.2833333333333, - "y": 1664 + "x": 388.66666666666663, + "y": 2226 }, { - "x": 1440.7833333333333, - "y": 1664 + "x": 358.66666666666663, + "y": 2226 }, { - "x": 1440.7833333333333, - "y": 2216 - }, - { - "x": 1085.6166666666666, - "y": 2216 - }, - { - "x": 1085.6166666666666, - "y": 2276 + "x": 358.66666666666663, + "y": 2336 } ], "animated": false, @@ -4910,20 +4886,20 @@ "labelPercentage": 0, "route": [ { - "x": 1007.0833333333333, - "y": 2402 + "x": 375.20000000000005, + "y": 2462 }, { - "x": 1007.0833333333333, - "y": 2452 - }, - { - "x": 823.85, - "y": 2452 - }, - { - "x": 823.85, + "x": 375.20000000000005, "y": 2522 + }, + { + "x": 590.7333333333332, + "y": 2522 + }, + { + "x": 590.7333333333332, + "y": 2572 } ], "animated": false, @@ -4957,12 +4933,20 @@ "labelPercentage": 0, "route": [ { - "x": 817.6, - "y": 2648 + "x": 628.2333333333332, + "y": 2698 }, { - "x": 817.6, - "y": 2788 + "x": 628.2333333333332, + "y": 2748 + }, + { + "x": 618.4833333333332, + "y": 2748 + }, + { + "x": 618.4833333333332, + "y": 2818 } ], "animated": false, @@ -4996,20 +4980,20 @@ "labelPercentage": 0, "route": [ { - "x": 1264.2833333333333, - "y": 1604 + "x": 199.33333333333326, + "y": 1614 }, { - "x": 1264.2833333333333, - "y": 1654 + "x": 199.33333333333326, + "y": 1664 }, { - "x": 1347.45, - "y": 1654 + "x": 116.16666666666652, + "y": 1664 }, { - "x": 1347.45, - "y": 1734 + "x": 116.16666666666652, + "y": 1744 } ], "animated": false, @@ -5043,20 +5027,20 @@ "labelPercentage": 0, "route": [ { - "x": 1347.45, - "y": 1860 + "x": 116.16666666666652, + "y": 1870 }, { - "x": 1347.45, - "y": 1910 + "x": 116.16666666666652, + "y": 1920 }, { - "x": 1252.9499999999998, - "y": 1910 + "x": 210.66666666666652, + "y": 1920 }, { - "x": 1252.9499999999998, - "y": 2010 + "x": 210.66666666666652, + "y": 2050 } ], "animated": false, @@ -5090,20 +5074,12 @@ "labelPercentage": 0, "route": [ { - "x": 1234.35, - "y": 2136 + "x": 229.26666666666642, + "y": 2176 }, { - "x": 1234.35, - "y": 2226 - }, - { - "x": 1521.7833333333333, - "y": 2226 - }, - { - "x": 1521.7833333333333, - "y": 2522 + "x": 229.26666666666665, + "y": 2572 } ], "animated": false, @@ -5137,20 +5113,12 @@ "labelPercentage": 0, "route": [ { - "x": 1541.45, - "y": 2648 - }, - { - "x": 1541.45, + "x": 209.5999999999999, "y": 2698 }, { - "x": 1513.7833333333333, - "y": 2698 - }, - { - "x": 1513.7833333333333, - "y": 2788 + "x": 209.5999999999999, + "y": 2818 } ], "animated": false, @@ -5184,12 +5152,20 @@ "labelPercentage": 0, "route": [ { - "x": 677.0333333333333, - "y": 826 + "x": 1045.7999999999997, + "y": 856 }, { - "x": 677.0333333333333, - "y": 946 + "x": 1045.7999999999997, + "y": 906 + }, + { + "x": 1263.2166666666665, + "y": 906 + }, + { + "x": 1263.2166666666665, + "y": 956 } ], "animated": false, @@ -5223,20 +5199,20 @@ "labelPercentage": 0, "route": [ { - "x": 729.9499999999999, - "y": 1072 + "x": 1252.6333333333332, + "y": 1082 }, { - "x": 729.9499999999999, - "y": 1162 + "x": 1252.6333333333332, + "y": 1142 }, { - "x": 844.4833333333333, - "y": 1162 + "x": 850.6333333333332, + "y": 1142 }, { - "x": 844.4833333333333, - "y": 1478 + "x": 850.6333333333332, + "y": 1488 } ], "animated": false, @@ -5270,28 +5246,28 @@ "labelPercentage": 0, "route": [ { - "x": 781.4833333333333, - "y": 1604 + "x": 882.1333333333332, + "y": 1614 }, { - "x": 781.4833333333333, - "y": 1664 + "x": 882.1333333333332, + "y": 1694 }, { - "x": 568.05, - "y": 1664 + "x": 1504.55, + "y": 1694 }, { - "x": 568.05, - "y": 1930 + "x": 1504.55, + "y": 1990 }, { - "x": 439.94999999999993, - "y": 1930 + "x": 1054.7476190476189, + "y": 1990 }, { - "x": 439.94999999999993, - "y": 2010 + "x": 1054.7476190476189, + "y": 2050 } ], "animated": false, @@ -5325,28 +5301,12 @@ "labelPercentage": 0, "route": [ { - "x": 666.4499999999999, - "y": 1072 + "x": 1316.1333333333332, + "y": 1082 }, { - "x": 666.4499999999999, - "y": 1122 - }, - { - "x": 330.46666666666664, - "y": 1122 - }, - { - "x": 330.46666666666664, - "y": 1388 - }, - { - "x": 320.1333333333333, - "y": 1388 - }, - { - "x": 320.1333333333333, - "y": 1478 + "x": 1316.1333333333332, + "y": 1488 } ], "animated": false, @@ -5380,20 +5340,12 @@ "labelPercentage": 0, "route": [ { - "x": 299.29999999999995, - "y": 1604 + "x": 1264.05, + "y": 1614 }, { - "x": 299.29999999999995, - "y": 1654 - }, - { - "x": 309.88333333333327, - "y": 1654 - }, - { - "x": 309.88333333333327, - "y": 1734 + "x": 1264.05, + "y": 1744 } ], "animated": false, @@ -5427,20 +5379,20 @@ "labelPercentage": 0, "route": [ { - "x": 351.2166666666666, - "y": 1860 + "x": 1284.7166666666665, + "y": 1870 }, { - "x": 351.2166666666666, - "y": 1930 + "x": 1284.7166666666665, + "y": 1980 }, { - "x": 366.15, - "y": 1930 + "x": 1030.147619047619, + "y": 1980 }, { - "x": 366.15, - "y": 2010 + "x": 1030.147619047619, + "y": 2050 } ], "animated": false, @@ -5474,28 +5426,20 @@ "labelPercentage": 0, "route": [ { - "x": 934.7499999999999, - "y": 1072 + "x": 491.4, + "y": 1082 }, { - "x": 934.7499999999999, - "y": 1122 + "x": 491.4, + "y": 2226 }, { - "x": 991.9499999999999, - "y": 1122 + "x": 597.1333333333332, + "y": 2226 }, { - "x": 991.9499999999999, - "y": 2206 - }, - { - "x": 808.15, - "y": 2206 - }, - { - "x": 808.15, - "y": 2276 + "x": 597.1333333333332, + "y": 2336 } ], "animated": false, @@ -5529,20 +5473,20 @@ "labelPercentage": 0, "route": [ { - "x": 566.5547619047619, - "y": 1338 + "x": 1123.5619047619048, + "y": 1348 }, { - "x": 566.5547619047619, - "y": 1398 + "x": 1123.5619047619048, + "y": 1438 }, { - "x": 503.74999999999994, - "y": 1398 + "x": 1084.7476190476189, + "y": 1438 }, { - "x": 503.74999999999994, - "y": 1478 + "x": 1084.7476190476189, + "y": 1488 } ], "animated": false, @@ -5576,28 +5520,20 @@ "labelPercentage": 0, "route": [ { - "x": 557.05, - "y": 1604 + "x": 1027.347619047619, + "y": 1614 }, { - "x": 557.05, - "y": 1654 + "x": 1027.347619047619, + "y": 1684 }, { - "x": 590.05, - "y": 1654 + "x": 777.6333333333332, + "y": 1684 }, { - "x": 590.05, - "y": 1950 - }, - { - "x": 568.55, - "y": 1950 - }, - { - "x": 568.55, - "y": 2010 + "x": 777.6333333333332, + "y": 2050 } ], "animated": false, @@ -5631,20 +5567,20 @@ "labelPercentage": 0, "route": [ { - "x": 589.55, - "y": 2136 + "x": 798.6333333333332, + "y": 2176 }, { - "x": 589.55, - "y": 2196 + "x": 798.6333333333332, + "y": 2266 }, { - "x": 730.65, - "y": 2196 + "x": 659.1333333333332, + "y": 2266 }, { - "x": 730.65, - "y": 2276 + "x": 659.1333333333332, + "y": 2336 } ], "animated": false, @@ -5678,12 +5614,20 @@ "labelPercentage": 0, "route": [ { - "x": 278.46666666666664, - "y": 1338 + "x": 1222.1333333333332, + "y": 1348 }, { - "x": 278.46666666666664, - "y": 1478 + "x": 1222.1333333333332, + "y": 1408 + }, + { + "x": 1274.4666666666665, + "y": 1408 + }, + { + "x": 1274.4666666666665, + "y": 1488 } ], "animated": false, @@ -5717,12 +5661,20 @@ "labelPercentage": 0, "route": [ { - "x": 330.54999999999995, - "y": 1604 + "x": 1295.3, + "y": 1614 }, { - "x": 330.54999999999995, - "y": 1734 + "x": 1295.3, + "y": 1684 + }, + { + "x": 1284.7166666666665, + "y": 1684 + }, + { + "x": 1284.7166666666665, + "y": 1744 } ], "animated": false, @@ -5756,28 +5708,28 @@ "labelPercentage": 0, "route": [ { - "x": 289.21666666666664, - "y": 1860 + "x": 1222.7166666666665, + "y": 1870 }, { - "x": 289.21666666666664, - "y": 1910 + "x": 1222.7166666666665, + "y": 1940 }, { - "x": 223, - "y": 1910 + "x": 934.3476190476189, + "y": 1940 }, { - "x": 223, - "y": 2718 + "x": 934.3476190476189, + "y": 2768 }, { - "x": 131.35714285714286, - "y": 2718 + "x": 1427.192857142857, + "y": 2768 }, { - "x": 131.35714285714286, - "y": 2788 + "x": 1427.192857142857, + "y": 2818 } ], "animated": false, @@ -5811,20 +5763,20 @@ "labelPercentage": 0, "route": [ { - "x": 495.54999999999995, - "y": 1604 + "x": 1088.847619047619, + "y": 1614 }, { - "x": 495.54999999999995, + "x": 1088.847619047619, "y": 1664 }, { - "x": 371.88333333333327, + "x": 1243.3833333333332, "y": 1664 }, { - "x": 371.88333333333327, - "y": 1734 + "x": 1243.3833333333332, + "y": 1744 } ], "animated": false, @@ -5858,28 +5810,28 @@ "labelPercentage": 0, "route": [ { - "x": 309.88333333333327, - "y": 1860 + "x": 1243.3833333333332, + "y": 1870 }, { - "x": 309.88333333333327, - "y": 1930 + "x": 1243.3833333333332, + "y": 1950 }, { - "x": 234, - "y": 1930 + "x": 945.3476190476189, + "y": 1950 }, { - "x": 234, - "y": 2728 + "x": 945.3476190476189, + "y": 2758 }, { - "x": 149.64285714285714, - "y": 2728 + "x": 1445.4785714285713, + "y": 2758 }, { - "x": 149.64285714285714, - "y": 2788 + "x": 1445.4785714285713, + "y": 2818 } ], "animated": false, @@ -5913,20 +5865,20 @@ "labelPercentage": 0, "route": [ { - "x": 95.3, - "y": 1604 + "x": 1597.05, + "y": 1614 }, { - "x": 95.3, - "y": 1654 + "x": 1597.05, + "y": 1664 }, { - "x": 82.3, - "y": 1654 + "x": 1610.05, + "y": 1664 }, { - "x": 82.3, - "y": 1734 + "x": 1610.05, + "y": 1744 } ], "animated": false, @@ -5960,12 +5912,20 @@ "labelPercentage": 0, "route": [ { - "x": 113.8, - "y": 1860 + "x": 1578.55, + "y": 1870 }, { - "x": 113.8, - "y": 2276 + "x": 1578.55, + "y": 2226 + }, + { + "x": 1550.25, + "y": 2226 + }, + { + "x": 1550.25, + "y": 2336 } ], "animated": false, @@ -5999,20 +5959,20 @@ "labelPercentage": 0, "route": [ { - "x": 1389.1166666666666, - "y": 1860 + "x": 74.5, + "y": 1870 }, { - "x": 1389.1166666666666, - "y": 1910 + "x": 74.5, + "y": 2748 }, { - "x": 1451.7833333333333, - "y": 1910 + "x": 178.5999999999999, + "y": 2748 }, { - "x": 1451.7833333333333, - "y": 2788 + "x": 178.5999999999999, + "y": 2818 } ], "animated": false, @@ -6046,20 +6006,20 @@ "labelPercentage": 0, "route": [ { - "x": 1095.2833333333333, - "y": 1860 + "x": 297.3333333333335, + "y": 1870 }, { - "x": 1095.2833333333333, - "y": 1910 + "x": 297.3333333333335, + "y": 1920 }, { - "x": 1190.9499999999998, - "y": 1910 + "x": 272.6666666666665, + "y": 1920 }, { - "x": 1190.9499999999998, - "y": 2010 + "x": 272.6666666666665, + "y": 2050 } ], "animated": false, @@ -6093,20 +6053,20 @@ "labelPercentage": 0, "route": [ { - "x": 1184.7499999999998, - "y": 2136 + "x": 254.0666666666666, + "y": 2176 }, { - "x": 1184.7499999999998, - "y": 2196 + "x": 254.0666666666666, + "y": 2236 }, { - "x": 1044.2833333333333, - "y": 2196 + "x": 296.66666666666674, + "y": 2236 }, { - "x": 1044.2833333333333, - "y": 2276 + "x": 296.66666666666674, + "y": 2336 } ], "animated": false, @@ -6140,20 +6100,20 @@ "labelPercentage": 0, "route": [ { - "x": 495.04999999999995, - "y": 1860 + "x": 1068.847619047619, + "y": 1870 }, { - "x": 495.04999999999995, - "y": 1940 + "x": 1068.847619047619, + "y": 1930 }, { - "x": 505.54999999999995, - "y": 1940 + "x": 819.6333333333332, + "y": 1930 }, { - "x": 505.54999999999995, - "y": 2010 + "x": 819.6333333333332, + "y": 2050 } ], "animated": false, @@ -6187,20 +6147,28 @@ "labelPercentage": 0, "route": [ { - "x": 547.55, - "y": 2136 + "x": 735.6333333333332, + "y": 2176 }, { - "x": 547.55, - "y": 2452 + "x": 735.6333333333332, + "y": 2236 }, { - "x": 390.74999999999994, - "y": 2452 + "x": 485.5333333333333, + "y": 2236 }, { - "x": 390.74999999999994, - "y": 2522 + "x": 485.5333333333333, + "y": 2512 + }, + { + "x": 471.9333333333333, + "y": 2512 + }, + { + "x": 471.9333333333333, + "y": 2572 } ], "animated": false, @@ -6234,20 +6202,20 @@ "labelPercentage": 0, "route": [ { - "x": 1209.5499999999997, - "y": 2136 + "x": 278.86666666666656, + "y": 2176 }, { - "x": 1209.5499999999997, - "y": 2206 + "x": 278.86666666666656, + "y": 2226 }, { - "x": 1064.95, - "y": 2206 + "x": 317.33333333333326, + "y": 2226 }, { - "x": 1064.95, - "y": 2276 + "x": 317.33333333333326, + "y": 2336 } ], "animated": false, @@ -6281,20 +6249,20 @@ "labelPercentage": 0, "route": [ { - "x": 1081.4833333333333, - "y": 2402 + "x": 300.79999999999995, + "y": 2462 }, { - "x": 1081.4833333333333, - "y": 2452 + "x": 300.79999999999995, + "y": 2512 }, { - "x": 1492.2833333333333, - "y": 2452 + "x": 258.76666666666665, + "y": 2512 }, { - "x": 1492.2833333333333, - "y": 2522 + "x": 258.76666666666665, + "y": 2572 } ], "animated": false, @@ -6328,20 +6296,20 @@ "labelPercentage": 0, "route": [ { - "x": 1502.1166666666666, - "y": 2648 - }, - { - "x": 1502.1166666666666, + "x": 248.9333333333334, "y": 2698 }, { - "x": 1482.7833333333333, - "y": 2698 + "x": 248.9333333333334, + "y": 2748 }, { - "x": 1482.7833333333333, - "y": 2788 + "x": 240.5999999999999, + "y": 2748 + }, + { + "x": 240.5999999999999, + "y": 2818 } ], "animated": false, @@ -6375,20 +6343,20 @@ "labelPercentage": 0, "route": [ { - "x": 720.3166666666667, - "y": 1860 + "x": 653.9666666666666, + "y": 1870 }, { - "x": 720.3166666666667, - "y": 1910 + "x": 653.9666666666666, + "y": 1920 }, { - "x": 720.65, - "y": 1910 + "x": 653.6333333333332, + "y": 1920 }, { - "x": 720.65, - "y": 2010 + "x": 653.6333333333332, + "y": 2050 } ], "animated": false, @@ -6422,20 +6390,20 @@ "labelPercentage": 0, "route": [ { - "x": 720.65, - "y": 2136 + "x": 653.6333333333332, + "y": 2176 }, { - "x": 720.65, - "y": 2186 + "x": 653.6333333333332, + "y": 2226 }, { - "x": 746.15, - "y": 2186 + "x": 628.1333333333332, + "y": 2226 }, { - "x": 746.15, - "y": 2276 + "x": 628.1333333333332, + "y": 2336 } ], "animated": false, @@ -6469,12 +6437,20 @@ "labelPercentage": 0, "route": [ { - "x": 798.85, - "y": 2402 + "x": 640.5333333333332, + "y": 2462 }, { - "x": 798.85, - "y": 2522 + "x": 640.5333333333332, + "y": 2512 + }, + { + "x": 640.7333333333332, + "y": 2512 + }, + { + "x": 640.7333333333332, + "y": 2572 } ], "animated": false, @@ -6508,20 +6484,20 @@ "labelPercentage": 0, "route": [ { - "x": 268.04999999999995, - "y": 1604 + "x": 1326.55, + "y": 1614 }, { - "x": 268.04999999999995, - "y": 1654 + "x": 1326.55, + "y": 1684 }, { - "x": 289.21666666666664, - "y": 1654 + "x": 1305.3833333333332, + "y": 1684 }, { - "x": 289.21666666666664, - "y": 1734 + "x": 1305.3833333333332, + "y": 1744 } ], "animated": false, @@ -6555,20 +6531,28 @@ "labelPercentage": 0, "route": [ { - "x": 844.4833333333333, - "y": 1604 + "x": 819.1333333333332, + "y": 1614 }, { - "x": 844.4833333333333, - "y": 1684 + "x": 819.1333333333332, + "y": 1664 }, { - "x": 1002.9499999999999, - "y": 1684 + "x": 430, + "y": 1664 }, { - "x": 1002.9499999999999, - "y": 2276 + "x": 430, + "y": 2236 + }, + { + "x": 379.33333333333326, + "y": 2236 + }, + { + "x": 379.33333333333326, + "y": 2336 } ], "animated": false, @@ -6602,20 +6586,20 @@ "labelPercentage": 0, "route": [ { - "x": 1031.8833333333332, - "y": 2402 + "x": 325.5999999999999, + "y": 2462 }, { - "x": 1031.8833333333332, - "y": 2698 + "x": 325.5999999999999, + "y": 2758 }, { - "x": 839.1, - "y": 2698 + "x": 553.9833333333332, + "y": 2758 }, { - "x": 839.1, - "y": 2788 + "x": 553.9833333333332, + "y": 2818 } ], "animated": false, @@ -6649,20 +6633,20 @@ "labelPercentage": 0, "route": [ { - "x": 526.55, - "y": 2136 + "x": 756.6333333333332, + "y": 2176 }, { - "x": 526.55, - "y": 2196 + "x": 756.6333333333332, + "y": 2246 }, { - "x": 366.15, - "y": 2196 + "x": 496.5333333333333, + "y": 2246 }, { - "x": 366.15, - "y": 2522 + "x": 496.5333333333333, + "y": 2572 } ], "animated": false, @@ -6696,20 +6680,12 @@ "labelPercentage": 0, "route": [ { - "x": 82.3, - "y": 1860 + "x": 1610.05, + "y": 1870 }, { - "x": 82.3, - "y": 1910 - }, - { - "x": 55, - "y": 1910 - }, - { - "x": 55, - "y": 2522 + "x": 1610.05, + "y": 2572 } ], "animated": false, @@ -6743,28 +6719,20 @@ "labelPercentage": 0, "route": [ { - "x": 1056.6833333333334, - "y": 2402 + "x": 350.4000000000001, + "y": 2462 }, { - "x": 1056.6833333333334, - "y": 2452 + "x": 350.4000000000001, + "y": 2748 }, { - "x": 1042.8833333333332, - "y": 2452 + "x": 575.4833333333332, + "y": 2748 }, { - "x": 1042.8833333333332, - "y": 2708 - }, - { - "x": 860.6, - "y": 2708 - }, - { - "x": 860.6, - "y": 2788 + "x": 575.4833333333332, + "y": 2818 } ], "animated": false, @@ -6798,20 +6766,28 @@ "labelPercentage": 0, "route": [ { - "x": 330.54999999999995, - "y": 1860 + "x": 1305.3833333333332, + "y": 1870 }, { - "x": 330.54999999999995, - "y": 2738 + "x": 1305.3833333333332, + "y": 2000 }, { - "x": 167.92857142857142, - "y": 2738 + "x": 1089.347619047619, + "y": 2000 }, { - "x": 167.92857142857142, - "y": 2788 + "x": 1089.347619047619, + "y": 2748 + }, + { + "x": 1463.7642857142855, + "y": 2748 + }, + { + "x": 1463.7642857142855, + "y": 2818 } ], "animated": false, @@ -6845,20 +6821,20 @@ "labelPercentage": 0, "route": [ { - "x": 749.25, - "y": 2402 + "x": 665.3333333333333, + "y": 2462 }, { - "x": 749.25, - "y": 2452 + "x": 665.3333333333333, + "y": 2512 }, { - "x": 748.85, - "y": 2452 + "x": 665.7333333333332, + "y": 2512 }, { - "x": 748.85, - "y": 2522 + "x": 665.7333333333332, + "y": 2572 } ], "animated": false, @@ -6892,20 +6868,20 @@ "labelPercentage": 0, "route": [ { - "x": 151, - "y": 2402 + "x": 1513.05, + "y": 2462 }, { - "x": 151, - "y": 2698 + "x": 1513.05, + "y": 2748 }, { - "x": 94.78571428571428, - "y": 2698 + "x": 1500.3357142857142, + "y": 2748 }, { - "x": 94.78571428571428, - "y": 2788 + "x": 1500.3357142857142, + "y": 2818 } ], "animated": false, @@ -6939,20 +6915,20 @@ "labelPercentage": 0, "route": [ { - "x": 755.1, - "y": 2648 - }, - { - "x": 755.1, + "x": 659.4833333333332, "y": 2698 }, { - "x": 774.6, - "y": 2698 + "x": 659.4833333333332, + "y": 2748 }, { - "x": 774.6, - "y": 2788 + "x": 639.9833333333332, + "y": 2748 + }, + { + "x": 639.9833333333332, + "y": 2818 } ], "animated": false, diff --git a/e2etests/testdata/stable/us_map/elk/sketch.exp.svg b/e2etests/testdata/stable/us_map/elk/sketch.exp.svg index 3e84ac882..01eb1f442 100644 --- a/e2etests/testdata/stable/us_map/elk/sketch.exp.svg +++ b/e2etests/testdata/stable/us_map/elk/sketch.exp.svg @@ -2,7 +2,7 @@ AKHIALFLGAMSTNAZCANVNMUTARLAMOOKTXORCOKSNEWYCTMANYRIDEMDNJPANCSCIDMTWAILINIAMIKYWIOHMNSDVAWVMENHVTND + eightsixteenthirty twosixty fourninety nine twelvetwenty fourforty eighteighty one +eightsixteenthirty twosixty fourninety nine twelvetwenty fourforty eighteighty one diff --git a/e2etests/testdata/todo/sequence_diagram_actor_padding_nested_groups/dagre/board.exp.json b/e2etests/testdata/todo/sequence_diagram_actor_padding_nested_groups/dagre/board.exp.json index c0f384c07..d20401f87 100644 --- a/e2etests/testdata/todo/sequence_diagram_actor_padding_nested_groups/dagre/board.exp.json +++ b/e2etests/testdata/todo/sequence_diagram_actor_padding_nested_groups/dagre/board.exp.json @@ -158,6 +158,7 @@ "underline": false, "labelWidth": 160, "labelHeight": 26, + "labelPosition": "INSIDE_TOP_LEFT", "zIndex": 3, "level": 1 }, @@ -197,6 +198,7 @@ "underline": false, "labelWidth": 238, "labelHeight": 26, + "labelPosition": "INSIDE_TOP_LEFT", "zIndex": 3, "level": 2 }, @@ -236,6 +238,7 @@ "underline": false, "labelWidth": 173, "labelHeight": 26, + "labelPosition": "INSIDE_TOP_LEFT", "zIndex": 3, "level": 3 }, @@ -275,6 +278,7 @@ "underline": false, "labelWidth": 21, "labelHeight": 26, + "labelPosition": "INSIDE_TOP_LEFT", "zIndex": 3, "level": 4 }, @@ -314,6 +318,7 @@ "underline": false, "labelWidth": 21, "labelHeight": 26, + "labelPosition": "INSIDE_TOP_LEFT", "zIndex": 3, "level": 5 } diff --git a/e2etests/testdata/todo/sequence_diagram_actor_padding_nested_groups/dagre/sketch.exp.svg b/e2etests/testdata/todo/sequence_diagram_actor_padding_nested_groups/dagre/sketch.exp.svg index 288cab1f2..5bcd47f78 100644 --- a/e2etests/testdata/todo/sequence_diagram_actor_padding_nested_groups/dagre/sketch.exp.svg +++ b/e2etests/testdata/todo/sequence_diagram_actor_padding_nested_groups/dagre/sketch.exp.svg @@ -18,13 +18,13 @@ width="921" height="1242" viewBox="-147 -26 921 1242">bacthis is a message groupand this is a nested message groupwhat about more nestingyoyo +bacthis is a message groupand this is a nested message groupwhat about more nestingyoyo - - - - - + + + + + bacthis is a message groupand this is a nested message groupwhat about more nestingyoyo +bacthis is a message groupand this is a nested message groupwhat about more nestingyoyo - - - - - + + + + +