diff --git a/demos/architecture.html b/demos/architecture.html index fbf43e965..03681ab74 100644 --- a/demos/architecture.html +++ b/demos/architecture.html @@ -19,7 +19,7 @@
architecture - group api[API] + group api(cloud)[API] service db(database)[Database] in api service disk1(disk)[Storage] in api diff --git a/packages/mermaid/src/diagrams/architecture/architectureRenderer.ts b/packages/mermaid/src/diagrams/architecture/architectureRenderer.ts index 33d712a90..eda452ca0 100644 --- a/packages/mermaid/src/diagrams/architecture/architectureRenderer.ts +++ b/packages/mermaid/src/diagrams/architecture/architectureRenderer.ts @@ -265,7 +265,7 @@ function layoutArchitecture( selector: '.node-group', style: { // @ts-ignore Incorrect library types - padding: '30px', + padding: '40px', }, }, ], diff --git a/packages/mermaid/src/diagrams/architecture/svgDraw.ts b/packages/mermaid/src/diagrams/architecture/svgDraw.ts index b893cf067..af56edeb4 100644 --- a/packages/mermaid/src/diagrams/architecture/svgDraw.ts +++ b/packages/mermaid/src/diagrams/architecture/svgDraw.ts @@ -150,8 +150,23 @@ export const drawGroups = function (groupsEl: D3Element, cy: cytoscape.Core) { .attr('height', h) .attr('class', 'node-bkg'); + const groupLabelContainer = groupsEl.append('g'); + let shiftedX1 = x1; + let shiftedY1 = y1; + if (data.icon) { + const bkgElem = groupLabelContainer.append('g'); + // TODO: magic number + getIcon(data.icon)?.(bkgElem, 32); + bkgElem.attr( + 'transform', + 'translate(' + (shiftedX1 + halfIconSize + 1) + ', ' + (shiftedY1 + halfIconSize + 1) + ')' + ); + shiftedX1 += 32; + // TODO: proper values once dynamic sizes are implemented + shiftedY1 += 4; + } if (data.label) { - const textElem = groupsEl.append('g'); + const textElem = groupLabelContainer.append('g'); createText( textElem, data.label, @@ -170,7 +185,7 @@ export const drawGroups = function (groupsEl: D3Element, cy: cytoscape.Core) { textElem.attr( 'transform', - 'translate(' + (x1 + halfIconSize + 4) + ', ' + (y1 + halfIconSize + 2) + ')' + 'translate(' + (shiftedX1 + halfIconSize + 4) + ', ' + (shiftedY1 + halfIconSize + 2) + ')' ); } }