diff --git a/cypress/platform/knsv.html b/cypress/platform/knsv.html index ba71a135c..d295f30ff 100644 --- a/cypress/platform/knsv.html +++ b/cypress/platform/knsv.html @@ -92,9 +92,11 @@ mindmap GrandChild1 GrandChild2 Child3(Child 3 has a long wrapped text as well) + ::icon(mdi mdi-alarm) GrandChild3 GrandChild4 Child4((Child Num 4
with
wrap text)) + ::icon(mdi mdi-alarm) GrandChild5[With
icon
one
two
three] ::icon(mdi mdi-numeric-8-circle) GrandChild6sakdjhfkla jhklasjfh klj @@ -372,7 +374,7 @@ flowchart TD }; mermaid.initialize({ // theme: 'dark', - // theme: 'base', + theme: 'base', // arrowMarkerAbsolute: true, // themeCSS: '.edgePath .path {stroke: red;} .arrowheadPath {fill: red;}', flowchart: { diff --git a/src/diagrams/mindmap/svgDraw.js b/src/diagrams/mindmap/svgDraw.js index f887fa469..0fabacb53 100644 --- a/src/diagrams/mindmap/svgDraw.js +++ b/src/diagrams/mindmap/svgDraw.js @@ -129,27 +129,52 @@ export const drawNode = function (elem, node, section, conf) { node.height = bbox.height + conf.fontSize * 1.1 * 0.5 + node.padding; node.width = bbox.width + 2 * node.padding; if (node.icon) { - node.width += 50; - const orgHeight = node.height; - node.height = Math.max(orgHeight, 60); - const heightDiff = Math.abs(node.height - orgHeight); - const icon = nodeElem - .append('foreignObject') - .attr('width', '60px') - .attr('height', node.height) - .attr('style', 'text-align: center;margin-top:' + heightDiff / 2 + 'px;'); - // .attr('x', 0) - // .attr('y', 0) - // .attr('class', 'node-icon ' + node.icon); - icon - .append('div') - .attr('class', 'icon-container') - .append('i') - .attr('class', 'node-icon-' + section + ' ' + node.icon); - textElem.attr( - 'transform', - 'translate(' + (25 + node.width / 2) + ', ' + (heightDiff / 2 + node.padding / 2) + ')' - ); + if (node.type === db.nodeType.CIRCLE) { + node.height += 50; + const orgWidth = node.width; + node.width += 50; + // node.width = Math.max(orgWidth, 100); + const widthDiff = Math.abs(node.width - orgWidth); + const icon = nodeElem + .append('foreignObject') + .attr('height', '50px') + .attr('width', node.width) + .attr('style', 'text-align: center;'); + // .attr('x', 0) + // .attr('y', 0) + // .attr('class', 'node-icon ' + node.icon); + icon + .append('div') + .attr('class', 'icon-container') + .append('i') + .attr('class', 'node-icon-' + section + ' ' + node.icon); + textElem.attr( + 'transform', + 'translate(' + node.width / 2 + ', ' + (node.height / 2 - 1.5 * node.padding) + ')' + ); + } else { + node.width += 50; + const orgHeight = node.height; + node.height = Math.max(orgHeight, 60); + const heightDiff = Math.abs(node.height - orgHeight); + const icon = nodeElem + .append('foreignObject') + .attr('width', '60px') + .attr('height', node.height) + .attr('style', 'text-align: center;margin-top:' + heightDiff / 2 + 'px;'); + // .attr('x', 0) + // .attr('y', 0) + // .attr('class', 'node-icon ' + node.icon); + icon + .append('div') + .attr('class', 'icon-container') + .append('i') + .attr('class', 'node-icon-' + section + ' ' + node.icon); + textElem.attr( + 'transform', + 'translate(' + (25 + node.width / 2) + ', ' + (heightDiff / 2 + node.padding / 2) + ')' + ); + } } else { textElem.attr('transform', 'translate(' + node.width / 2 + ', ' + node.padding / 2 + ')'); }