diff --git a/cypress/platform/knsv.html b/cypress/platform/knsv.html
index 5a5ec6e40..bbf0479e8 100644
--- a/cypress/platform/knsv.html
+++ b/cypress/platform/knsv.html
@@ -88,7 +88,7 @@ mindmap
Child2
GrandChild1
GrandChild2
- Child3
+ Child3[Child 3 has a long wrapped text as well]
GrandChild3
GrandChild4
Child4
diff --git a/src/diagrams/mindmap/mindmapRenderer.js b/src/diagrams/mindmap/mindmapRenderer.js
index f963537cb..2ff6dc2d1 100644
--- a/src/diagrams/mindmap/mindmapRenderer.js
+++ b/src/diagrams/mindmap/mindmapRenderer.js
@@ -30,7 +30,7 @@ function drawNodes(svg, mindmap, conf) {
*/
function drawEdges(edgesElem, mindmap, parent, depth, section, conf) {
if (parent) {
- svgDraw.drawEdge(edgesElem, mindmap, parent, depth, conf);
+ svgDraw.drawEdge(edgesElem, mindmap, parent, depth, section, conf);
}
if (mindmap.children) {
mindmap.children.forEach((child, index) => {
@@ -262,7 +262,7 @@ export const draw = (text, id, version, diagObj) => {
console.log(positionedMindmap);
// After this we can draw, first the edges and the then nodes with the correct position
- drawEdges(edgesElem, positionedMindmap, null, 0, conf);
+ drawEdges(edgesElem, positionedMindmap, null, 0, -1, conf);
positionNodes(positionedMindmap, conf);
// Setup the view box and size of the svg element
diff --git a/src/diagrams/mindmap/svgDraw.js b/src/diagrams/mindmap/svgDraw.js
index cb869c801..b153019c1 100644
--- a/src/diagrams/mindmap/svgDraw.js
+++ b/src/diagrams/mindmap/svgDraw.js
@@ -70,15 +70,14 @@ export const drawNode = function (elem, node, conf) {
const r = nodeElem
.append('rect')
- .attr('x', (-1 * node.width) / 2)
- .attr('width', node.width)
+
+ // .attr('width', node.width)
.attr('fill', rect.fill)
.attr('stroke', rect.stroke)
.attr('rx', rect.rx)
.attr('ry', rect.ry);
const textElem = nodeElem.append('g');
- // .attr('transform', 'translate(' + node.x + ', ' + node.y + ')');
const txt = textElem
.append('text')
@@ -90,8 +89,9 @@ export const drawNode = function (elem, node, conf) {
.call(wrap, node.width);
const bbox = txt.node().getBBox();
node.height = bbox.height + conf.fontSize * 1.1 * 0.5;
- r.attr('height', node.height); // .attr('y', (-1 * node.height) / 2);
-
+ node.width = bbox.width + conf.fontSize * 1.1 * 0.5;
+ r.attr('height', node.height).attr('width', node.width);
+ textElem.attr('transform', 'translate(' + node.width / 2 + ', ' + 0 + ')');
// Position the node to its coordinate
if (node.x || node.y) {
nodeElem.attr('transform', 'translate(' + node.x + ',' + node.y + ')');
@@ -99,15 +99,33 @@ export const drawNode = function (elem, node, conf) {
db.setElementForId(node.id, nodeElem);
return node.height;
};
-
-export const drawEdge = function drawEdge(edgesElem, mindmap, parent, depth, conf) {
+const section2Color = function (section) {
+ switch (section) {
+ case 0:
+ return '#88f';
+ case 1:
+ return '#f88';
+ case 2:
+ return '#8f8';
+ case 3:
+ return '#f8f';
+ case 4:
+ return '#ff8';
+ case 5:
+ return '#8ff';
+ default:
+ return '#88f';
+ }
+};
+export const drawEdge = function drawEdge(edgesElem, mindmap, parent, depth, section, conf) {
+ const color = section2Color(section);
edgesElem
.append('line')
- .attr('x1', parent.x)
+ .attr('x1', parent.x + parent.width / 2)
.attr('y1', parent.y + parent.height / 2)
- .attr('x2', mindmap.x)
+ .attr('x2', mindmap.x + mindmap.width / 2)
.attr('y2', mindmap.y + mindmap.height / 2)
- .attr('stroke', '#88f')
+ .attr('stroke', color)
.attr('stroke-width', 15 - depth * 3)
.attr('class', 'edge ');
};