From 908f9562f6e2ffcdb10280a42c9912c08f108b83 Mon Sep 17 00:00:00 2001 From: Nick O'Leary Date: Tue, 19 Apr 2022 19:17:41 +0100 Subject: [PATCH 1/2] Fix name auto-generator to leave blank names alone on copy/paste --- .../editor-client/src/js/ui/view-tools.js | 25 ++++++++++++++----- .../@node-red/editor-client/src/js/ui/view.js | 19 ++++++++++---- .../@node-red/nodes/core/common/21-debug.html | 7 ++++-- .../@node-red/nodes/core/common/60-link.html | 22 ++++++++++------ 4 files changed, 52 insertions(+), 21 deletions(-) diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/view-tools.js b/packages/node_modules/@node-red/editor-client/src/js/ui/view-tools.js index 0281ab94e..699e5f222 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/ui/view-tools.js +++ b/packages/node_modules/@node-red/editor-client/src/js/ui/view-tools.js @@ -977,18 +977,31 @@ RED.view.tools = (function() { * doesn't clash with any existing nodes of that type * @param {Object} node The node to set the name of - if not provided, uses current selection */ - function generateNodeNames(node) { - const nodes = node?[node]:RED.view.selection().nodes; + function generateNodeNames(node, options) { + options = options || { + renameBlank: true, + renameClash: true, + generateHistory: true + } + let nodes = node; + if (node) { + if (!Array.isArray(node)) { + nodes = [ node ] + } + } else { + nodes = RED.view.selection().nodes; + } if (nodes && nodes.length > 0) { // Generate history event if using the workspace selection, // or if the provided node already exists - const generateHistory = !node || !!RED.nodes.node(node.id) + const generateHistory = options.generateHistory && (!node || !!RED.nodes.node(node.id)) const historyEvents = [] const typeIndex = {} let changed = false; nodes.forEach(n => { - if (n._def && n._def.defaults && n._def.defaults.name) { - const paletteLabel = RED.utils.getPaletteLabel(n.type, n._def) + const nodeDef = n._def || RED.nodes.getType(n.type) + if (nodeDef && nodeDef.defaults && nodeDef.defaults.name) { + const paletteLabel = RED.utils.getPaletteLabel(n.type, nodeDef) const defaultNodeNameRE = new RegExp('^'+paletteLabel+' (\\d+)$') if (!typeIndex.hasOwnProperty(n.type)) { const existingNodes = RED.nodes.filterNodes({type: n.type}) @@ -1004,7 +1017,7 @@ RED.view.tools = (function() { }) typeIndex[n.type] = maxNameNumber + 1 } - if (n.name === '') { + if ((options.renameBlank && n.name === '') || (options.renameClash && defaultNodeNameRE.test(n.name))) { if (generateHistory) { historyEvents.push({ t:'edit', diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/view.js b/packages/node_modules/@node-red/editor-client/src/js/ui/view.js index de000fd56..7ff302944 100755 --- a/packages/node_modules/@node-red/editor-client/src/js/ui/view.js +++ b/packages/node_modules/@node-red/editor-client/src/js/ui/view.js @@ -455,7 +455,7 @@ RED.view = (function() { } }); - //add search to status-toolbar + //add search to status-toolbar RED.statusBar.add({ id: "view-search-tools", align: "left", @@ -604,7 +604,7 @@ RED.view = (function() { RED.actions.add("core:copy-selection-to-internal-clipboard",copySelection); RED.actions.add("core:cut-selection-to-internal-clipboard",function(){copySelection();deleteSelection();}); - RED.actions.add("core:paste-from-internal-clipboard",function(){importNodes(clipboard,{generateIds: true});}); + RED.actions.add("core:paste-from-internal-clipboard",function(){importNodes(clipboard,{generateIds: true, generateDefaultNames: true});}); RED.actions.add("core:detach-selected-nodes", function() { detachSelectedNodes() }) @@ -3480,7 +3480,6 @@ RED.view = (function() { enterActiveGroup(ag); activeGroup.selected = true; } - console.log(d3.event); var cnodes = RED.nodes.getAllFlowNodes(mousedown_node); for (var n=0;n Date: Mon, 25 Apr 2022 20:30:05 +0100 Subject: [PATCH 2/2] Remove name generation from link call and add to Function --- .../@node-red/nodes/core/common/21-debug.html | 4 ++-- .../@node-red/nodes/core/common/60-link.html | 16 +++++----------- .../nodes/core/function/10-function.html | 8 +++++++- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/packages/node_modules/@node-red/nodes/core/common/21-debug.html b/packages/node_modules/@node-red/nodes/core/common/21-debug.html index e509225d5..c511397bf 100644 --- a/packages/node_modules/@node-red/nodes/core/common/21-debug.html +++ b/packages/node_modules/@node-red/nodes/core/common/21-debug.html @@ -74,7 +74,7 @@ RED.nodes.registerType('debug',{ category: 'common', defaults: { - name: {value:"_"}, + name: {value:"_DEFAULT_"}, active: {value:true}, tosidebar: {value:true}, console: {value:false}, @@ -546,7 +546,7 @@ $("#node-input-statusVal").val($("#node-input-typed-status").typedInput('value')); }, onadd: function() { - if (this.name === '_') { + if (this.name === '_DEFAULT_') { this.name = '' RED.actions.invoke("core:generate-node-names", this) } diff --git a/packages/node_modules/@node-red/nodes/core/common/60-link.html b/packages/node_modules/@node-red/nodes/core/common/60-link.html index 7d6c26762..951ac6d1d 100644 --- a/packages/node_modules/@node-red/nodes/core/common/60-link.html +++ b/packages/node_modules/@node-red/nodes/core/common/60-link.html @@ -218,7 +218,7 @@ } function onAdd() { - if (this.name === '_') { + if (this.name === '_DEFAULT_') { this.name = '' RED.actions.invoke("core:generate-node-names", this) } @@ -235,7 +235,7 @@ category: 'common', color:"#ddd",//"#87D8CF", defaults: { - name: { value: "_" }, + name: { value: "_DEFAULT_" }, links: { value: [], type:"link out[]" } }, inputs:0, @@ -271,7 +271,7 @@ category: 'common', color:"#ddd",//"#87D8CF", defaults: { - name: { value: "_" }, + name: { value: "" }, links: { value: [], type:"link in[]" }, linkType: { value:"static" }, timeout: { value: "30", validate:RED.validators.number(true) } @@ -319,20 +319,14 @@ oneditsave: function() { onEditSave(this); }, - oneditresize: resizeNodeList, - onadd: function() { - if (this.name === '_') { - this.name = '' - RED.actions.invoke("core:generate-node-names", this) - } - } + oneditresize: resizeNodeList }); RED.nodes.registerType('link out',{ category: 'common', color:"#ddd",//"#87D8CF", defaults: { - name: { value:"_" }, + name: { value:"_DEFAULT_" }, mode: { value: "link" },// link || return links: { value: [], type:"link in[]" } }, diff --git a/packages/node_modules/@node-red/nodes/core/function/10-function.html b/packages/node_modules/@node-red/nodes/core/function/10-function.html index 8d4145a68..d107a4bb9 100644 --- a/packages/node_modules/@node-red/nodes/core/function/10-function.html +++ b/packages/node_modules/@node-red/nodes/core/function/10-function.html @@ -355,7 +355,7 @@ color:"#fdd0a2", category: 'function', defaults: { - name: {value:""}, + name: {value:"_DEFAULT_"}, func: {value:"\nreturn msg;"}, outputs: {value:1}, noerr: {value:0,required:true,validate:function(v) { return !v; }}, @@ -605,6 +605,12 @@ this.finalizeEditor.resize(); $("#node-input-libs-container").css("height", (height - 192)+"px"); + }, + onadd: function() { + if (this.name === '_DEFAULT_') { + this.name = '' + RED.actions.invoke("core:generate-node-names", this) + } } }); })();