diff --git a/README.md b/README.md
index 781cee7e1..83fe09ec7 100644
--- a/README.md
+++ b/README.md
@@ -20,7 +20,7 @@ For more information and help in getting started, please view our [documentation
With version 8.4 class diagrams have got some new features, bug fixes and documentation. Another new feature in 8.4 is the new diagram type, state diagrams.
-
+
## Special note regarding version 8.2
diff --git a/cypress/platform/current.html b/cypress/platform/current.html
index f854ddcb0..3ed964921 100644
--- a/cypress/platform/current.html
+++ b/cypress/platform/current.html
@@ -20,15 +20,10 @@
info below
- sequenceDiagram
- Alice->>John: Hello John, how are you?
- loop Healthcheck
- John->>John: Fight against hypochondria
- end
- Note right of John: Rational thoughts!
- John-->>Alice: Great!
- John->>Bob: How about you?
- Bob-->>John: Jolly good!
+ stateDiagram
+ O --> A : ong line using
should work
should work
should work
+ A --> B : ong line using
should work
+ B --> C : Sing line
diff --git a/src/diagrams/class/parser/classDiagram.jison b/src/diagrams/class/parser/classDiagram.jison
index f3da76a6d..12e9a2564 100644
--- a/src/diagrams/class/parser/classDiagram.jison
+++ b/src/diagrams/class/parser/classDiagram.jison
@@ -9,8 +9,7 @@
%x string generic struct
%%
-\%\%[^\n]*\n* /* skip comments */
-\%\%\*((.|\n)*)\*\%\% /* multiline skip comments */
+\%\%[^\n]*\n* /* do nothing */
\n+ return 'NEWLINE';
\s+ /* skip whitespace */
"classDiagram" return 'CLASS_DIAGRAM';
diff --git a/src/diagrams/flowchart/parser/flow.jison b/src/diagrams/flowchart/parser/flow.jison
index f5e184800..f867e5713 100644
--- a/src/diagrams/flowchart/parser/flow.jison
+++ b/src/diagrams/flowchart/parser/flow.jison
@@ -10,8 +10,7 @@
%x dir
%x vertex
%%
-\%\%[^\n]*\n* /* skip comments */
-\%\%\*((.|\n)*)\*\%\% /* multiline skip comments */
+\%\%[^\n]*\n* /* do nothing */
["] this.begin("string");
["] this.popState();
[^"]* return "STR";
diff --git a/src/diagrams/gantt/parser/gantt.jison b/src/diagrams/gantt/parser/gantt.jison
index 24c6bf00f..ea76b59a1 100644
--- a/src/diagrams/gantt/parser/gantt.jison
+++ b/src/diagrams/gantt/parser/gantt.jison
@@ -17,7 +17,6 @@
\s+ /* skip whitespace */
\#[^\n]* /* skip comments */
\%%[^\n]* /* skip comments */
-\%\%\*((.|\n)*)\*\%\% /* multiline skip comments */
/*
---interactivity command---
diff --git a/src/diagrams/git/parser/gitGraph.jison b/src/diagrams/git/parser/gitGraph.jison
index 3958f4e57..e675a56e4 100644
--- a/src/diagrams/git/parser/gitGraph.jison
+++ b/src/diagrams/git/parser/gitGraph.jison
@@ -18,7 +18,6 @@
\s+ /* skip all whitespace */
\#[^\n]* /* skip comments */
\%%[^\n]* /* skip comments */
-\%\%\*((.|\n)*)\*\%\% /* multiline skip comments */
"gitGraph" return 'GG';
"commit" return 'COMMIT';
"branch" return 'BRANCH';
diff --git a/src/diagrams/pie/parser/pie.jison b/src/diagrams/pie/parser/pie.jison
index 96a555fbc..2cc4045ff 100644
--- a/src/diagrams/pie/parser/pie.jison
+++ b/src/diagrams/pie/parser/pie.jison
@@ -12,8 +12,7 @@
%}
%%
-\%\%[^\n]* /* skip comments */
-\%\%\*((.|\n)*)\*\%\% /* multiline skip comments */
+\%\%[^\n]* /* do nothing */
\s+ /* skip whitespace */
"pie" return 'pie' ;
[\s\n\r]+ return 'NL' ;
diff --git a/src/diagrams/sequence/parser/sequenceDiagram.jison b/src/diagrams/sequence/parser/sequenceDiagram.jison
index 497a45bb6..520978c05 100644
--- a/src/diagrams/sequence/parser/sequenceDiagram.jison
+++ b/src/diagrams/sequence/parser/sequenceDiagram.jison
@@ -26,7 +26,6 @@
((?!\n)\s)+ /* skip same-line whitespace */
\#[^\n]* /* skip comments */
\%%[^\n]* /* skip comments */
-\%\%\*((.|\n)*)\*\%\% /* multiline skip comments */
"participant" { this.begin('ID'); return 'participant'; }
[^\->:\n,;]+?(?=((?!\n)\s)+"as"(?!\n)\s|[#\n;]|$) { yytext = yytext.trim(); this.begin('ALIAS'); return 'ACTOR'; }
"as" { this.popState(); this.popState(); this.begin('LINE'); return 'AS'; }
diff --git a/src/diagrams/state/parser/stateDiagram.jison b/src/diagrams/state/parser/stateDiagram.jison
index 0afb0f9fa..49d1200c8 100644
--- a/src/diagrams/state/parser/stateDiagram.jison
+++ b/src/diagrams/state/parser/stateDiagram.jison
@@ -33,11 +33,10 @@
%%
[\n]+ return 'NL';
-\s+ /* skip all whitespace */
+\s+ /* skip all whitespace */
((?!\n)\s)+ /* skip same-line whitespace */
\#[^\n]* /* skip comments */
-\%%[^\n]* /* skip comments */
-\%\%\*((.|\n)*)\*\%\% /* multiline skip comments */
+\%%[^\n]* /* skip comments */
"scale"\s+ { this.pushState('SCALE'); /* console.log('Got scale', yytext);*/ return 'scale'; }
\d+ return 'WIDTH';
diff --git a/src/diagrams/state/shapes.js b/src/diagrams/state/shapes.js
index dcd5cf21f..a436e23b3 100644
--- a/src/diagrams/state/shapes.js
+++ b/src/diagrams/state/shapes.js
@@ -4,6 +4,7 @@ import stateDb from './stateDb';
import utils from '../../utils';
import common from '../common/common';
import { getConfig } from '../../config';
+import { logger } from '../../logger';
// let conf;
@@ -456,6 +457,9 @@ export const drawEdge = function(elem, path, relation) {
let titleHeight = 0;
const titleRows = [];
+ let maxWidth = 0;
+ let minX = 0;
+
for (let i = 0; i <= rows.length; i++) {
const title = label
.append('text')
@@ -464,27 +468,39 @@ export const drawEdge = function(elem, path, relation) {
.attr('x', x)
.attr('y', y + titleHeight);
+ const boundstmp = title.node().getBBox();
+ maxWidth = Math.max(maxWidth, boundstmp.width);
+ minX = Math.min(minX, boundstmp.x);
+
+ logger.info(boundstmp.x, x, y + titleHeight);
+
if (titleHeight === 0) {
const titleBox = title.node().getBBox();
titleHeight = titleBox.height;
+ logger.info('Title height', titleHeight, y);
}
titleRows.push(title);
}
+ let boxHeight = titleHeight * rows.length;
if (rows.length > 1) {
- const heightAdj = rows.length * titleHeight * 0.25;
+ const heightAdj = (rows.length - 1) * titleHeight * 0.5;
titleRows.forEach((title, i) => title.attr('y', y + i * titleHeight - heightAdj));
+ boxHeight = titleHeight * rows.length;
}
const bounds = label.node().getBBox();
+
label
.insert('rect', ':first-child')
.attr('class', 'box')
- .attr('x', bounds.x - getConfig().state.padding / 2)
- .attr('y', bounds.y - getConfig().state.padding / 2)
- .attr('width', bounds.width + getConfig().state.padding)
- .attr('height', bounds.height + getConfig().state.padding);
+ .attr('x', x - maxWidth / 2 - getConfig().state.padding / 2)
+ .attr('y', y - boxHeight / 2 - getConfig().state.padding / 2 - 3.5)
+ .attr('width', maxWidth + getConfig().state.padding)
+ .attr('height', boxHeight + getConfig().state.padding);
+
+ logger.info(bounds);
//label.attr('transform', '0 -' + (bounds.y / 2));