diff --git a/d2graph/d2graph.go b/d2graph/d2graph.go index e916c9b37..72b48a4ea 100644 --- a/d2graph/d2graph.go +++ b/d2graph/d2graph.go @@ -1037,7 +1037,7 @@ func (obj *Object) GetDefaultSize(mtexts []*d2target.MText, ruler *textmeasure.R maxTypeWidth = go2.Max(maxTypeWidth, typeDims.Width) if l := len(c.Constraint); l > 0 { - // 60 covers UNQ constraint with padding, 40 for further constraints covers UNQ + space + // 60 covers UNQ constraint with padding, 40 for further constraints covers UNQ + comma + space if newWidth := 60 + 40*(l-1); newWidth > constraintWidth { constraintWidth = newWidth } diff --git a/d2target/sqltable.go b/d2target/sqltable.go index f5bc1ee4e..bfb1e45d9 100644 --- a/d2target/sqltable.go +++ b/d2target/sqltable.go @@ -60,5 +60,5 @@ func (c SQLColumn) ConstraintAbbr() string { abbrs = append(abbrs, abbr) } - return strings.Join(abbrs, " ") + return strings.Join(abbrs, ", ") } diff --git a/e2etests/testdata/stable/sql_table_constraints_width/dagre/sketch.exp.svg b/e2etests/testdata/stable/sql_table_constraints_width/dagre/sketch.exp.svg index d294404e2..296755423 100644 --- a/e2etests/testdata/stable/sql_table_constraints_width/dagre/sketch.exp.svg +++ b/e2etests/testdata/stable/sql_table_constraints_width/dagre/sketch.exp.svg @@ -4,7 +4,7 @@ } @font-face { font-family: d2-645322524-font-regular; - src: url("data:application/font-woff;base64,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"); + src: url("data:application/font-woff;base64,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"); }]]>axINTUNQbxINTPK FKcxINTFK UNQdxINTPK FK UNQ + .d2-645322524 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]>axINTUNQbxINTPK, FKcxINTFK, UNQdxINTPK, FK, UNQ \ No newline at end of file diff --git a/e2etests/testdata/stable/sql_table_constraints_width/elk/sketch.exp.svg b/e2etests/testdata/stable/sql_table_constraints_width/elk/sketch.exp.svg index f15db75c8..4ebc2069c 100644 --- a/e2etests/testdata/stable/sql_table_constraints_width/elk/sketch.exp.svg +++ b/e2etests/testdata/stable/sql_table_constraints_width/elk/sketch.exp.svg @@ -4,7 +4,7 @@ } @font-face { font-family: d2-619706631-font-regular; - src: url("data:application/font-woff;base64,d09GRgABAAAAAAmIAAoAAAAADtgAAguFAAAAAAAAAAAAAAAAAAAAAAAAAABPUy8yAAAA9AAAAGAAAABgXd/Vo2NtYXAAAAFUAAAAbgAAAIoBtQJnZ2x5ZgAAAcQAAAOoAAAENJy9nFNoZWFkAAAFbAAAADYAAAA2G4Ue32hoZWEAAAWkAAAAJAAAACQKhAXRaG10eAAABcgAAAA8AAAAPB5RA7Nsb2NhAAAGBAAAACAAAAAgBooHqm1heHAAAAYkAAAAIAAAACAAJwD2bmFtZQAABkQAAAMjAAAIFAbDVU1wb3N0AAAJaAAAAB0AAAAg/9EAMgADAgkBkAAFAAACigJYAAAASwKKAlgAAAFeADIBIwAAAgsFAwMEAwICBGAAAvcAAAADAAAAAAAAAABBREJPAEAAIP//Au7/BgAAA9gBESAAAZ8AAAAAAeYClAAAACAAA3icZMxPCgEBAEfhb8z4P2ThAE6jpERxAOUAlk7iDvYichkn+cmslLd8iw+FUoFa5YipiVJlZm5haWVj5+CU8HPXtvbfm3deeeaRe2655pJz4/1XaDVyW0dXT9/AUG1kzAcAAP//AQAA//9SbBoNAAB4nDyST0zb5hvHn/d1sMWPAD83sQ0oKYlfsJvAgNqxDSQLkDQJoEoJuAn5o9G1VAoQVpVWWgXtiqat7S7rrLVSD/t33mHadtkOvVVb1cumHaZJnaZq2qFCmjppVSZNrHGmOGW3V4+e5/t9vp/nhQ4oAWAN3wEKOqEXjgAHoLJBdjgoy4QxVMMgAmXIiGVK6BfbQmgh4tJ11/HE74mdvT1UvIbvNLam365Wv129fNl+98m+raDv9wFBGQD9iC3odPS4IKdyhC2jXfvRwQG20o/T9s8A7T74DFtAtfpUtmxiq3GhXccz2AJ3u64ilfEQiuHKJoXY1e+evvLNNrbsr9HCgb2J8td/eKGFX8IWeJwZj6BKksaqLKFkwvMcWy48zbgoJlv4I+NyMdiyz72j1CLIbFxAH908vh6xPwXsaHRhC7rA66goPM95aUJYVlV0LSIRUr63eD5+Y2vrbMFcKaxiayg/Xz1nP0fzc+mMAQAYIs0KvoQ/hG4IAwwrujMn0pyX5ztESR7DWkTXXyjTDM+rim4INI1ORlcmNovFzYkioiq7/sxWLLO3bF6bn15PC3mNF7v/36tMJa+c2r11a/fUleTjUvJ/xfdf3bi7tHR3Y9UquUdGO1yzdKfD1QeAnmMLmFYKogU5wv72AP36AC+m042vwOlZadbxGLZaN+8Q26y8zja686RplEzW4mYoNTKaDuXim2796gZ6034jW5GkSha9Ze9tXNWdvHX0JXoGAzAEIIiSFtGNiNSKzMhOUI4lMqFpWdENjW5xuP/y0nsfsCPHwov+gLg2XcqdYChxiSdxsnNGcS/M5fLs4CQJeKf40GsV+6dpXzghDt7sjY2HhgHDcrOO/sEPwQMBZ3OZMIRVOabt5XWM2sgZjudRSFwIUExiGQezx06fjZ5Ox7LR1OAsCcy4g34FP7xf9Ms3ts3X46lqObcmBpo+oc1nrFlHn6NnLZYOn/bVBMaJ1opxeLgjs+uxuVp8ItUf5sb9oynZTIrT/FAw545dzC1fjImC7ukbz0+aVb/X8Adbf2S8WUePDjO0mTnisqYewjK0/4z+rpyPnjHC8YDLPMFQvpP9s7HBqaPyjJR2X9/JXoofHTDvNSanfKFU0vYJ4+bkyhog6AFAX6An0A+gGrIq8Lyg6rphqIxAZElquTBMzye3S3Ndfd2uLr4rWrj9cSnTPdDj6u5zJ+z9mifs9YY9tT//2uZHOW5E2Ab4FwAA//8BAAD//7i28pAAAQAAAAILhQm0cblfDzz1AAMD6AAAAADYXaChAAAAAN1mLzb+Ov7bCG8DyAAAAAMAAgAAAAAAAAABAAAD2P7vAAAImP46/joIbwABAAAAAAAAAAAAAAAAAAAADwKNAFkAyAAAAe4AWgEHAFoCQwBaAocAWgI2AFoCmAA0AhgAHAKFAFcB+AA0AikAUgHIAC4CKwAvAb4ADgAAACwALABAAEwAZgCIAKoA7AD+ASIBWgGOAbwB7gIaAAEAAAAPAIwADABmAAcAAQAAAAAAAAAAAAAAAAAEAAN4nJyU3U4bVxSFPwfbbVQ1FxWKyA06l22VjN0IogSuTAmKVYRTj9Mfqao0eMY/Yjwz8gxQqj5Ar/sWfYtc9Tn6EFWvq7O8DTaqFIEQsM6cvfdZZ6+1D7DJv2xQqz8E/mr+YLjGdnPP8AMeNZ8a3uC48bfh+kpMg7jxm+EmXzb6hj/iff0Pwx+zU//Z8EO26keGP+F5fdPwpxuOfww/Yof3C1yDl/xuuMYWheEHbPKT4Q0eYzVrdR7TNtzgM7YNN9kGBkypSJmSMcYxYsqYc+YklIQkzJkyIiHG0aVDSqWvGZGQY/y/XyNCKuZEqjihwpESkhJRMrGKvyor561OHGk1t70OFRMiTpVxRkSGI2dMTkbCmepUVBTs0aJFyVB8CypKAkqmpATkzBnToscRxwyYMKXEcaRKnllIzoiKSyKd7yzCd2ZIQkZprM7JiMXTiV+i7C7HOHoUil2tfLxW4SmO75TtueWK/YpAv26F2fq5SzYRF+pnqq6k2rmUghPt+nM7fCtcsYe7V3/WmXy4R7H+V6p8yrn0j6VUJiYZzm3RIZSDQvcEx4HWXUJ15Hu6DHhDj3cMtO7Qp0+HEwZ0ea3cHn0cX9PjhENldIUXe0dyzAk/4viGrmJ87cT6s1As4RcKc3cpjnPdY0ahnnvmge6a6IZ3V9jPUL7mjlI5Q82Rj3TSL9OcRYzNFYUYztTLpTdK619sjpjpLl7bm30/DRc2e8spviLXDHu3Ljh55RaMPqRqcMszl/oJiIjJOVXEkJwZLSquxPstEeekOA7VvTeakorOdY4/50ouSZiJQZdMdeYU+huZb0LjPlzzvbO3JFa+Z3p2fav7nOLUqxuN3ql7y73QupysKNAyVfMVNw3FNTPvJ5qpVf6hcku9bjnP6JNI9VQ3uP0OPCegzQ677DPROUPtXNgb0dY70eYV++rBGYmiRnJ1YhV2CXjBLru84sVazQ6HHNBj/w4cF1k9Dnh9a2ddp2UVZ3X+FJu2+DqeXa9e3luvz+/gyy80UTcvY1/a+G5fWLUb/58QMfNc3NbqndwTgv8AAAD//wEAAP//B1tMMAB4nGJgZgCD/+cYjBiwAAAAAAD//wEAAP//LwECAwAAAA=="); + src: url("data:application/font-woff;base64,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"); }]]>axINTUNQbxINTPK FKcxINTFK UNQdxINTPK FK UNQ + .d2-619706631 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]>axINTUNQbxINTPK, FKcxINTFK, UNQdxINTPK, FK, UNQ \ No newline at end of file