From 6fc02a50240cfd592175c3599b86456062812d2d Mon Sep 17 00:00:00 2001 From: Jan Oberhauser Date: Wed, 17 Jul 2019 19:58:54 +0200 Subject: [PATCH] :zap: Improve naming of created names --- packages/editor-ui/src/views/NodeView.vue | 27 ++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/packages/editor-ui/src/views/NodeView.vue b/packages/editor-ui/src/views/NodeView.vue index 280fe27d03..d07d6094b4 100644 --- a/packages/editor-ui/src/views/NodeView.vue +++ b/packages/editor-ui/src/views/NodeView.vue @@ -850,20 +850,37 @@ export default mixins( return newPosition!; }, getUniqueNodeName (originalName: string, additinalUsedNames?: string[]) { + // Check if node-name is unique else find one that is additinalUsedNames = additinalUsedNames || []; - // Check if node-name is unique else find one that is + // Get all the names of the current nodes const nodeNames = this.$store.getters.allNodes.map((node: INodeUi) => { return node.name; }); + const nameMatch = originalName.match(/(.*[a-zA-Z])(\d*)/); + let ignore, baseName, nameIndex, uniqueName; let index = 1; - let uniqueName = originalName; + + if (nameMatch === null) { + // Name is only a number + index = parseInt(originalName, 10); + baseName = ''; + uniqueName = baseName + index; + } else { + // Name is string or string/number combination + [ignore, baseName, nameIndex] = nameMatch; + if (nameIndex !== '') { + index = parseInt(nameIndex, 10); + } + uniqueName = baseName; + } + while ( - nodeNames.indexOf(uniqueName) !== -1 || - additinalUsedNames.indexOf(uniqueName) !== -1 + nodeNames.includes(uniqueName) || + additinalUsedNames.includes(uniqueName) ) { - uniqueName = originalName + index++; + uniqueName = baseName + (index++); } return uniqueName;