From 08702565f74afa9bc722ae4f3626bb3ec9e9914f Mon Sep 17 00:00:00 2001 From: Pablo Bendersky Date: Mon, 29 Nov 2021 11:57:59 -0300 Subject: [PATCH 1/2] Changed logic to render states with spaces in names to fix regressions. --- src/diagrams/state/stateRenderer-v2.js | 43 ++++++++++++++++++++------ 1 file changed, 33 insertions(+), 10 deletions(-) diff --git a/src/diagrams/state/stateRenderer-v2.js b/src/diagrams/state/stateRenderer-v2.js index a2068a7a5..c225d460e 100644 --- a/src/diagrams/state/stateRenderer-v2.js +++ b/src/diagrams/state/stateRenderer-v2.js @@ -60,14 +60,30 @@ const setupNode = (g, parent, node, altFlag) => { // Build of the array of description strings accordinging if (node.description) { - nodeDb[node.id].shape = 'rect'; - nodeDb[node.id].description = node.description; - - nodeDb[node.id].description = common.sanitizeTextOrArray( - nodeDb[node.id].description, - getConfig() - ); - } + if (Array.isArray(nodeDb[node.id].description)) { + // There already is an array of strings,add to it + nodeDb[node.id].shape = 'rectWithTitle'; + nodeDb[node.id].description.push(node.description); + } else { + if (nodeDb[node.id].description.length > 0) { + // if there is a description already transformit to an array + nodeDb[node.id].shape = 'rectWithTitle'; + if (nodeDb[node.id].description === node.id) { + // If the previous description was the is, remove it + if (Array.isArray(node.description)) { + nodeDb[node.id].description = node.description; + } else { + nodeDb[node.id].description = [node.description]; + } + } else { + nodeDb[node.id].description = [nodeDb[node.id].description, node.description]; + } + } else { + nodeDb[node.id].shape = 'rect'; + nodeDb[node.id].description = node.description; + } + } + } // Save data for description and group so that for instance a statement without description overwrites // one with description @@ -84,10 +100,17 @@ const setupNode = (g, parent, node, altFlag) => { (altFlag ? 'statediagram-cluster statediagram-cluster-alt' : 'statediagram-cluster'); } + let nodeShape = nodeDb[node.id].shape; + let nodeLabelText = nodeDb[node.id].description; + if (Array.isArray(nodeLabelText) && nodeLabelText.length == 1) { + nodeShape = 'rect'; + nodeLabelText = nodeLabelText[0]; + } + const nodeData = { labelStyle: '', - shape: nodeDb[node.id].shape, - labelText: nodeDb[node.id].description, + shape: nodeShape, + labelText: nodeLabelText, // typeof nodeDb[node.id].description === 'object' // ? nodeDb[node.id].description[0] // : nodeDb[node.id].description, From 31851b2e302e5a3006c16c514d079fedc293adc3 Mon Sep 17 00:00:00 2001 From: Pablo Bendersky Date: Mon, 29 Nov 2021 13:02:38 -0300 Subject: [PATCH 2/2] Fixed eslint error --- src/diagrams/state/stateRenderer-v2.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/diagrams/state/stateRenderer-v2.js b/src/diagrams/state/stateRenderer-v2.js index c225d460e..f4747412a 100644 --- a/src/diagrams/state/stateRenderer-v2.js +++ b/src/diagrams/state/stateRenderer-v2.js @@ -83,7 +83,7 @@ const setupNode = (g, parent, node, altFlag) => { nodeDb[node.id].description = node.description; } } - } + } // Save data for description and group so that for instance a statement without description overwrites // one with description