From 5662c06a33415c09fd0a0696c79a8a7923d951f2 Mon Sep 17 00:00:00 2001 From: Knut Sveidqvist Date: Sun, 26 Apr 2020 09:47:47 +0200 Subject: [PATCH] #1295 Adding support for multiline descriptions for states --- cypress/platform/current.html | 12 ++++++++---- src/diagrams/state/stateDb.js | 1 + src/diagrams/state/stateRenderer-v2.js | 21 +++++++++++++++++---- 3 files changed, 26 insertions(+), 8 deletions(-) diff --git a/cypress/platform/current.html b/cypress/platform/current.html index 982e12b06..1e2567ea3 100644 --- a/cypress/platform/current.html +++ b/cypress/platform/current.html @@ -49,10 +49,14 @@ }
- stateDiagram-v2 - - [*] --> S1 - state "Some long name" as S1: The description
continues + stateDiagram-v2 + State1: This a a single line description + State2: This a a multi line description + State2: here comes the multi part + a + [*] --> State1 + State1 --> State2 + State2 --> [*]
stateDiagram diff --git a/src/diagrams/state/stateDb.js b/src/diagrams/state/stateDb.js index c56dcd1a3..b5609bd40 100644 --- a/src/diagrams/state/stateDb.js +++ b/src/diagrams/state/stateDb.js @@ -132,6 +132,7 @@ export const addState = function(id, type, doc, descr, note) { } } if (descr) { + logger.info('Adding state ', id, descr); if (typeof descr === 'string') addDescription(id, descr.trim()); if (typeof descr === 'object') { diff --git a/src/diagrams/state/stateRenderer-v2.js b/src/diagrams/state/stateRenderer-v2.js index 763190f2e..1399b44bd 100644 --- a/src/diagrams/state/stateRenderer-v2.js +++ b/src/diagrams/state/stateRenderer-v2.js @@ -52,13 +52,26 @@ const setupNode = (g, parent, node, altFlag) => { }; } - // Description + // Build of the array of description strings accordinging if (node.description) { - if (Array.isArray(node.description)) { + 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 = node.description; + nodeDb[node.id].description.push(node.description); } else { - nodeDb[node.id].description = node.description; + 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 + 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; + } } }