Skip to content

Commit

Permalink
#2035 Growing composite state width with title
Browse files Browse the repository at this point in the history
  • Loading branch information
knsv committed May 2, 2021
1 parent 6dc7112 commit aa39dcc
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 13 deletions.
13 changes: 13 additions & 0 deletions cypress/integration/rendering/stateDiagram-v2.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -347,6 +347,19 @@ describe('State diagram', () => {
}
);
});
it('v2 width of compond state should grow with title if title is wider', () => {
imgSnapshotTest(
`
stateDiagram-v2
state "Long state name" as NotShooting {
a-->b
}
`,
{
logLevel: 0,
}
);
});
it('v2 Simplest composite state', () => {
imgSnapshotTest(
`
Expand Down
13 changes: 4 additions & 9 deletions cypress/platform/knsv.html
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@
class T TestSub
linkStyle 0,1 color:orange, stroke: orange;
</div>
<div class="mermaid" style="width: 100%; height: 20%;">
<div class="mermaid2" style="width: 100%; height: 20%;">
%% The width of composite states does not grow with the title
stateDiagram-v2
[*] --> Off
Expand All @@ -67,15 +67,10 @@
Washing --> Finished
Finished --> [*]
</div>
<div class="mermaid2" style="width: 100%; height: 20%;">
<div class="mermaid" style="width: 100%; height: 20%;">
stateDiagram-v2
state "Not Shooting State" as NotShooting {
state "Configuring mode" as Configuring
[*] --> Idle
Idle : this is a string
Idle : this is another string
Idle --> Configuring : EvConfig
Configuring --> Idle : EvConfig
state "Long state name" as NotShooting {
a-->b
}

</div>
Expand Down
10 changes: 6 additions & 4 deletions src/dagre-wrapper/clusters.js
Original file line number Diff line number Diff line change
Expand Up @@ -136,18 +136,20 @@ const roundedWithTitle = (parent, node) => {
const padding = 0 * node.padding;
const halfPadding = padding / 2;

const width = node.width > bbox.width ? node.width : bbox.width + node.padding;

// center the rect around its coordinate
rect
.attr('class', 'outer')
.attr('x', node.x - node.width / 2 - halfPadding)
.attr('x', node.x - width / 2 - halfPadding)
.attr('y', node.y - node.height / 2 - halfPadding)
.attr('width', node.width + padding)
.attr('width', width + padding)
.attr('height', node.height + padding);
innerRect
.attr('class', 'inner')
.attr('x', node.x - node.width / 2 - halfPadding)
.attr('x', node.x - width / 2 - halfPadding)
.attr('y', node.y - node.height / 2 - halfPadding + bbox.height - 1)
.attr('width', node.width + padding)
.attr('width', width + padding)
.attr('height', node.height + padding - bbox.height - 3);

// Center the label
Expand Down

0 comments on commit aa39dcc

Please sign in to comment.