diff --git a/src/diagrams/sequenceDiagram/sequenceDiagram.spec.js b/src/diagrams/sequenceDiagram/sequenceDiagram.spec.js index 5a72298b0..8a5bca8b4 100644 --- a/src/diagrams/sequenceDiagram/sequenceDiagram.spec.js +++ b/src/diagrams/sequenceDiagram/sequenceDiagram.spec.js @@ -363,7 +363,7 @@ describe('when rendering a sequenceDiagram',function() { // 10 comes from mock of text height expect(bounds.stopy ).toBe( conf.height + conf.boxMargin + 2*conf.noteMargin +10); }); - iit('it should handle one actor and a note to the right', function () { + it('it should handle one actor and a note to the right', function () { sd.bounds.init(); var str = 'sequenceDiagram\n' + 'participant Alice\n' + @@ -388,10 +388,10 @@ describe('when rendering a sequenceDiagram',function() { sd.draw(str,'tst'); var bounds = sd.bounds.getBounds(); - expect(bounds.startx).toBe(conf.diagramMarginX); - expect(bounds.starty).toBe(conf.diagramMarginY); - expect(bounds.stopx ).toBe(conf.diagramMarginX + conf.width*2 + conf.actorMargin); - expect(bounds.stopy ).toBe(conf.diagramMarginY + conf.messageMargin + conf.height); + expect(bounds.startx).toBe(0); + expect(bounds.starty).toBe(0); + expect(bounds.stopx ).toBe(conf.width*2 + conf.actorMargin); + expect(bounds.stopy ).toBe(0 + conf.messageMargin + conf.height); }); @@ -405,10 +405,10 @@ describe('when rendering a sequenceDiagram',function() { sd.draw(str,'tst'); var bounds = sd.bounds.getBounds(); - expect(bounds.startx).toBe(conf.diagramMarginX); - expect(bounds.starty).toBe(conf.diagramMarginY); - expect(bounds.stopx ).toBe(conf.diagramMarginX + conf.width*2 + conf.actorMargin); - expect(bounds.stopy ).toBe(conf.diagramMarginY + 2*conf.messageMargin + conf.height); + expect(bounds.startx).toBe(0); + expect(bounds.starty).toBe(0); + expect(bounds.stopx ).toBe(0 + conf.width*2 + conf.actorMargin); + expect(bounds.stopy ).toBe(0 + 2*conf.messageMargin + conf.height); }); @@ -424,13 +424,13 @@ describe('when rendering a sequenceDiagram',function() { sd.draw(str,'tst'); var bounds = sd.bounds.getBounds(); - expect(bounds.startx).toBe(conf.diagramMarginX); - expect(bounds.starty).toBe(conf.diagramMarginY); + expect(bounds.startx).toBe(0); + expect(bounds.starty).toBe(0); - var expStopX = conf.diagramMarginX + conf.messageMargin +conf.width+ (conf.width/2) + conf.noteMargin + conf.width; + var expStopX = conf.actorMargin +conf.width+ (conf.width/2) + conf.noteMargin + conf.width; expect(bounds.stopx ).toBe(expStopX); - expect(bounds.stopy ).toBe(conf.diagramMarginY + 3*conf.messageMargin + conf.height); + expect(bounds.stopy ).toBe(2*conf.messageMargin + conf.height + conf.boxMargin); }); it('it should draw two actors notes to the left', function () { @@ -444,11 +444,11 @@ describe('when rendering a sequenceDiagram',function() { sd.draw(str,'tst'); var bounds = sd.bounds.getBounds(); - expect(bounds.startx).toBe(conf.diagramMarginX - conf.width + conf.actorMargin); - expect(bounds.starty).toBe(conf.diagramMarginY); + expect(bounds.startx).toBe( -(conf.width/2)-(conf.actorMargin/2)); + expect(bounds.starty).toBe(0); - expect(bounds.stopx ).toBe(conf.diagramMarginX + conf.width*2 + conf.actorMargin); - expect(bounds.stopy ).toBe(conf.diagramMarginY + 3*conf.messageMargin + conf.height); + expect(bounds.stopx ).toBe( conf.width*2 + conf.actorMargin); + expect(bounds.stopy ).toBe( 2*conf.messageMargin + conf.height + conf.boxMargin); }); @@ -464,11 +464,11 @@ describe('when rendering a sequenceDiagram',function() { sd.draw(str,'tst'); var bounds = sd.bounds.getBounds(); - expect(bounds.startx).toBe(conf.diagramMarginX); - expect(bounds.starty).toBe(conf.diagramMarginY); + expect(bounds.startx).toBe(0); + expect(bounds.starty).toBe(0); - expect(bounds.stopx ).toBe(conf.diagramMarginX + conf.width*2 + conf.actorMargin); - expect(bounds.stopy ).toBe(conf.diagramMarginY + 3*conf.messageMargin + conf.height + conf.boxMargin); + expect(bounds.stopx ).toBe(0 + conf.width*2 + conf.actorMargin); + expect(bounds.stopy ).toBe(0 + 2*conf.messageMargin + conf.height + conf.boxMargin); }); }); \ No newline at end of file diff --git a/src/diagrams/sequenceDiagram/sequenceRenderer.js b/src/diagrams/sequenceDiagram/sequenceRenderer.js index 11a954e85..f5ae09eb4 100644 --- a/src/diagrams/sequenceDiagram/sequenceRenderer.js +++ b/src/diagrams/sequenceDiagram/sequenceRenderer.js @@ -46,7 +46,6 @@ exports.bounds = { }, updateVal : function (obj,key,val,fun){ if(typeof obj[key] === 'undefined'){ - //console.log('Setting startx',startx); obj[key] = val; }else{ obj[key] = fun(val,obj[key]); @@ -112,32 +111,17 @@ var drawNote = function(elem, startx, verticalPos, msg){ rect.y = verticalPos; rect.width = conf.width; - //svgDraw.drawRect(elem, rect); - var g = elem.append("g"); - //svgDraw.drawRect(g, rect); + var rectElem = svgDraw.drawRect(g, rect); - var rectElem = g.append("rect"); - rectElem.attr("x", startx); - rectElem.attr("y", verticalPos); - rectElem.attr("fill", '#EDF2AE'); - rectElem.attr("stroke", '#666'); - rectElem.attr("width", conf.width); - rectElem.attr("height", 100); - rectElem.attr("rx", 0); - rectElem.attr("ry", 0); + var textObj = svgDraw.getTextObj(); + textObj.x = startx; + textObj.y = verticalPos+conf.noteMargin; + textObj.textMargin = conf.noteMargin; + textObj.dy = '1em'; + textObj.text = msg.message; - var textElem = g.append("text"); - textElem.attr("x", startx); - textElem.attr("y", verticalPos+conf.noteMargin); - textElem.style("text-anchor", "start"); - - msg.message.split('
').forEach(function(rowText){ - var span = textElem.append("tspan"); - span.attr("x", startx +conf.noteMargin); - span.attr("dy", '1em'); - span.text(rowText); - }); + var textElem = svgDraw.drawText(g,textObj); var textHeight = textElem[0][0].getBBox().height; exports.bounds.insert(startx, verticalPos, startx + conf.width, verticalPos + 2*conf.noteMargin + textHeight); @@ -288,7 +272,7 @@ module.exports.drawActors = function(diagram, actors, actorKeys){ var key = actorKeys[i]; // Add some rendering data to the object - actors[key].x = i*conf.messageMargin +i*conf.width; + actors[key].x = i*conf.actorMargin +i*conf.width; actors[key].y = 0; actors[key].width = conf.diagramMarginY; actors[key].height = conf.diagramMarginY; @@ -341,7 +325,6 @@ module.exports.draw = function (text, id) { if(msg.placement !== 0){ // Right of - console.log(exports.bounds.getVerticalPos()); drawNote(diagram, startx + (conf.width + conf.actorMargin)/2, exports.bounds.getVerticalPos(), msg); }else{ diff --git a/src/diagrams/sequenceDiagram/svgDraw.js b/src/diagrams/sequenceDiagram/svgDraw.js index f8ef05120..a237edc3f 100644 --- a/src/diagrams/sequenceDiagram/svgDraw.js +++ b/src/diagrams/sequenceDiagram/svgDraw.js @@ -2,10 +2,9 @@ * Created by knut on 14-12-20. */ exports.drawRect = function(elem , rectData){ - var g = elem.append("g"); - var rectElem = g.append("rect"); + var rectElem = elem.append("rect"); rectElem.attr("x", rectData.x); - rectElem.attr("y", rectData.x); + rectElem.attr("y", rectData.y); rectElem.attr("fill", rectData.fill); rectElem.attr("stroke", rectData.stroke); rectElem.attr("width", rectData.width); @@ -16,6 +15,36 @@ exports.drawRect = function(elem , rectData){ return rectElem; }; +exports.drawText = function(elem , textData){ + var textElem = elem.append('text'); + textElem.attr('x', textData.x); + textElem.attr('y', textData.y); + textElem.style('text-anchor', 'start'); + + textData.text.split('
').forEach(function(rowText){ + var span = textElem.append('tspan'); + span.attr('x', textData.x +textData.textMargin); + span.attr('dy', textData.dy); + span.text(rowText); + }); + + return textElem; +}; + +exports.getTextObj = function(){ + var rect = { + x: 0, + y: 0, + 'text-anchor': 'start', + style: '#666', + width: 100, + height: 100, + rx: 0, + ry: 0 + }; + return rect; +}; + exports.getNoteRect = function(){ var rect = { x: 0,