Merge pull request #4912 from GogoVega/improve-node-name
Some checks failed
Run tests / build (18) (push) Has been cancelled
Run tests / build (20) (push) Has been cancelled
Run tests / build (22) (push) Has been cancelled

Improve the node name auto-generated with the first available number
This commit is contained in:
Nick O'Leary 2024-10-21 16:42:04 +01:00 committed by GitHub
commit c363f375b6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -1102,18 +1102,27 @@ RED.view.tools = (function() {
const paletteLabel = RED.utils.getPaletteLabel(n.type, nodeDef) const paletteLabel = RED.utils.getPaletteLabel(n.type, nodeDef)
const defaultNodeNameRE = new RegExp('^'+paletteLabel.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')+' (\\d+)$') const defaultNodeNameRE = new RegExp('^'+paletteLabel.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')+' (\\d+)$')
if (!typeIndex.hasOwnProperty(n.type)) { if (!typeIndex.hasOwnProperty(n.type)) {
const existingNodes = RED.nodes.filterNodes({type: n.type}) const existingNodes = RED.nodes.filterNodes({ type: n.type });
let maxNameNumber = 0; const existingIds = existingNodes.reduce((ids, node) => {
existingNodes.forEach(n => { let match = defaultNodeNameRE.exec(node.name);
let match = defaultNodeNameRE.exec(n.name)
if (match) { if (match) {
let nodeNumber = parseInt(match[1]) const nodeNumber = parseInt(match[1], 10);
if (nodeNumber > maxNameNumber) { if (!ids.includes(nodeNumber)) {
maxNameNumber = nodeNumber ids.push(nodeNumber);
} }
} }
}) return ids;
typeIndex[n.type] = maxNameNumber + 1 }, []).sort((a, b) => a - b);
let availableNameNumber = 1;
for (let i = 0; i < existingIds.length; i++) {
if (existingIds[i] !== availableNameNumber) {
break;
}
availableNameNumber++;
}
typeIndex[n.type] = availableNameNumber;
} }
if ((options.renameBlank && n.name === '') || (options.renameClash && defaultNodeNameRE.test(n.name))) { if ((options.renameBlank && n.name === '') || (options.renameClash && defaultNodeNameRE.test(n.name))) {
if (generateHistory) { if (generateHistory) {