diff --git a/cypress/integration/rendering/sequencediagram.spec.js b/cypress/integration/rendering/sequencediagram.spec.js index aaf5e94ce..f1def3391 100644 --- a/cypress/integration/rendering/sequencediagram.spec.js +++ b/cypress/integration/rendering/sequencediagram.spec.js @@ -126,6 +126,17 @@ context('Sequence diagram', () => { { sequence: { noteAlign: 'left' } } ); }); + it('should render multi-line notes aligned to the left when configured', () => { + imgSnapshotTest( + ` + sequenceDiagram + Alice->>Bob: I'm short + note left of Alice: I am left aligned
but also
multiline + Bob->>Alice: Short as well + `, + { sequence: { noteAlign: 'left' } } + ); + }); it('should render notes aligned to the right when configured', () => { imgSnapshotTest( ` @@ -137,6 +148,37 @@ context('Sequence diagram', () => { { sequence: { noteAlign: 'right' } } ); }); + it('should render multi-line notes aligned to the right when configured', () => { + imgSnapshotTest( + ` + sequenceDiagram + Alice->>Bob: I'm short + note left of Alice: I am right aligned
but also
multiline + Bob->>Alice: Short as well + `, + { sequence: { noteAlign: 'right' } } + ); + }); + it('should render multi-line messages aligned to the left when configured', () => { + imgSnapshotTest( + ` + sequenceDiagram + Alice->>Bob: I'm short
but also
multiline + Bob->>Alice: Short as well
and also
multiline + `, + { sequence: { messageAlign: 'left' } } + ); + }); + it('should render multi-line messages aligned to the right when configured', () => { + imgSnapshotTest( + ` + sequenceDiagram + Alice->>Bob: I'm short
but also
multiline + Bob->>Alice: Short as well
and also
multiline + `, + { sequence: { messageAlign: 'right' } } + ); + }); }); context('auth width scaling', () => { it('should render long actor descriptions', () => { diff --git a/src/diagrams/mindmap/mindmap.spec.js b/src/diagrams/mindmap/mindmap.spec.js index 55fc570d9..3b674e980 100644 --- a/src/diagrams/mindmap/mindmap.spec.js +++ b/src/diagrams/mindmap/mindmap.spec.js @@ -197,5 +197,24 @@ root((the root)) expect(mm.children.length).toEqual(1); expect(mm.children[0].descr).toEqual('String containing ()'); }); + it('should be possible to have a child after a class assignment', function () { + var str = `mindmap + root(Root) + Child(Child) + :::hot + a(a) + b[New Stuff]`; + mindmap.parse(str); + const mm = mindmap.yy.getMindmap(); + expect(mm.nodeId).toEqual('root'); + expect(mm.descr).toEqual('Root'); + expect(mm.children.length).toEqual(1); + + const child = mm.children[0]; + expect(child.nodeId).toEqual('Child'); + expect(child.children[0].nodeId).toEqual('a'); + expect(child.children.length).toEqual(2); + expect(child.children[1].nodeId).toEqual('b'); + }); }); }); diff --git a/src/diagrams/mindmap/mindmapRenderer.js b/src/diagrams/mindmap/mindmapRenderer.js index bafbcfddc..93ac573f9 100644 --- a/src/diagrams/mindmap/mindmapRenderer.js +++ b/src/diagrams/mindmap/mindmapRenderer.js @@ -54,9 +54,7 @@ function eachNode(mindmap, callback) { } /** @param {object} mindmap */ function transpose(mindmap) { - console.log('transpose', mindmap); eachNode(mindmap, (node) => { - // node.y = node.y - (node.y - bb.top) * 2 - node.height; const orgWidth = node.width; const orgX = node.x; node.width = node.height; @@ -91,7 +89,7 @@ function rightToLeft(mindmap) { * @param conf */ function layout(mindmap, dir, conf) { - const bb = new BoundingBox(40, 40); + const bb = new BoundingBox(60, 60); const layout = new Layout(bb); switch (dir) { diff --git a/src/diagrams/mindmap/parser/mindmap.jison b/src/diagrams/mindmap/parser/mindmap.jison index 7ebb8b570..f5fbed4fd 100644 --- a/src/diagrams/mindmap/parser/mindmap.jison +++ b/src/diagrams/mindmap/parser/mindmap.jison @@ -17,9 +17,11 @@ %% +\%\%.*\n {console.log('Found comment',yytext);} /* skip comments */ +// \%\%[^\n]*\n /* skip comments */ "mindmap" return 'MINDMAP'; ":::" { this.begin('CLASS'); } -.+ { return 'CLASS';this.popState(); } +.+ { this.popState();return 'CLASS'; } \n { this.popState();} [\n\s]*"::icon(" { this.begin('ICON'); } [^\)]+ { return 'ICON'; } @@ -50,6 +52,7 @@ start // %{ : info document 'EOF' { return yy; } } : MINDMAP document { return yy; } + | SPACELIST MINDMAP document { return yy; } ; document diff --git a/src/diagrams/sequence/sequenceRenderer.js b/src/diagrams/sequence/sequenceRenderer.js index 46d48b058..ee9c5c87e 100644 --- a/src/diagrams/sequence/sequenceRenderer.js +++ b/src/diagrams/sequence/sequenceRenderer.js @@ -229,7 +229,7 @@ const drawNote = function (elem, noteModel) { textObj.fontWeight = conf.noteFontWeight; textObj.anchor = conf.noteAlign; textObj.textMargin = conf.noteMargin; - textObj.valign = conf.noteAlign; + textObj.valign = 'center'; let textElem = drawText(g, textObj); @@ -342,7 +342,7 @@ const drawMessage = function (diagram, msgModel, lineStarty, diagObj) { textObj.fontSize = conf.messageFontSize; textObj.fontWeight = conf.messageFontWeight; textObj.anchor = conf.messageAlign; - textObj.valign = conf.messageAlign; + textObj.valign = 'center'; textObj.textMargin = conf.wrapPadding; textObj.tspan = false; diff --git a/src/diagrams/sequence/svgDraw.js b/src/diagrams/sequence/svgDraw.js index cbd4244a5..864037c2b 100644 --- a/src/diagrams/sequence/svgDraw.js +++ b/src/diagrams/sequence/svgDraw.js @@ -193,7 +193,7 @@ export const drawText = function (elem, textData) { case 'start': textData.x = Math.round(textData.x + textData.textMargin); textData.anchor = 'start'; - textData.dominantBaseline = 'text-after-edge'; + textData.dominantBaseline = 'middle'; textData.alignmentBaseline = 'middle'; break; case 'middle': @@ -207,7 +207,7 @@ export const drawText = function (elem, textData) { case 'end': textData.x = Math.round(textData.x + textData.width - textData.textMargin); textData.anchor = 'end'; - textData.dominantBaseline = 'text-before-edge'; + textData.dominantBaseline = 'middle'; textData.alignmentBaseline = 'middle'; break; }