Skip to content

Commit

Permalink
Allow node name to be auto-generated on-add
Browse files Browse the repository at this point in the history
  • Loading branch information
knolleary committed Mar 7, 2022
1 parent 6a5c50f commit fd30b71
Show file tree
Hide file tree
Showing 6 changed files with 47 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -224,14 +224,7 @@ RED.palette = (function() {

var d = $('<div>',{class:"red-ui-palette-node"}).attr("data-palette-type",nt).data('category',rootCategory);

var label = nt;///^(.*?)([ -]in|[ -]out)?$/.exec(nt)[1];
if (typeof def.paletteLabel !== "undefined") {
try {
label = (typeof def.paletteLabel === "function" ? def.paletteLabel.call(def) : def.paletteLabel)||"";
} catch(err) {
console.log("Definition error: "+nt+".paletteLabel",err);
}
}
var label = RED.utils.getPaletteLabel(nt, def);///^(.*?)([ -]in|[ -]out)?$/.exec(nt)[1];

$('<div/>', {
class: "red-ui-palette-label"+(((!def.align && def.inputs !== 0 && def.outputs === 0) || "right" === def.align) ? " red-ui-palette-label-right" : "")
Expand Down
13 changes: 13 additions & 0 deletions packages/node_modules/@node-red/editor-client/src/js/ui/utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -1105,6 +1105,18 @@ RED.utils = (function() {
return RED.text.bidi.enforceTextDirectionWithUCC(l);
}

function getPaletteLabel(nodeType, def) {
var label = nodeType;
if (typeof def.paletteLabel !== "undefined") {
try {
label = (typeof def.paletteLabel === "function" ? def.paletteLabel.call(def) : def.paletteLabel)||"";
} catch(err) {
console.log("Definition error: "+nodeType+".paletteLabel",err);
}
}
return label
}

var nodeColorCache = {};
function clearNodeColorCache() {
nodeColorCache = {};
Expand Down Expand Up @@ -1388,6 +1400,7 @@ RED.utils = (function() {
getNodeIcon: getNodeIcon,
getNodeLabel: getNodeLabel,
getNodeColor: getNodeColor,
getPaletteLabel: getPaletteLabel,
clearNodeColorCache: clearNodeColorCache,
addSpinnerOverlay: addSpinnerOverlay,
decodeObject: decodeObject,
Expand Down
30 changes: 29 additions & 1 deletion packages/node_modules/@node-red/editor-client/src/js/ui/view.js
Original file line number Diff line number Diff line change
Expand Up @@ -5419,7 +5419,7 @@ RED.view = (function() {
}

/**
* Create a node from a type string.
* Create a node from a type string.
* **NOTE:** Can throw on error - use `try` `catch` block when calling
* @param {string} type The node type to create
* @param {number} [x] (optional) The horizontal position on the workspace
Expand Down Expand Up @@ -5458,6 +5458,34 @@ RED.view = (function() {
}
}

if (nn._def.defaults.name && nn._def.defaults.name.autoGenerate) {
let filter = { type }
if (nn._def.defaults.name.autoGenerate.scope === "flow") {
filter.z = RED.workspaces.active()
}
const existingNodes = RED.nodes.filterNodes(filter)
let maxNameNumber = 0;
//
let defaultNodeName;
if (nn._def.defaults.name.autoGenerate.label) {
defaultNodeName = RED._(nn._def.defaults.name.autoGenerate.label)
} else {
defaultNodeName = RED.utils.getPaletteLabel(type, nn._def)+' __number__'
}
const defaultNodeNameRE = new RegExp('^'+defaultNodeName.replace('__number__','(\\d+)')+'$')
existingNodes.forEach(n => {
let match = defaultNodeNameRE.exec(n.name)
if (match) {
let nodeNumber = parseInt(match[1])
if (nodeNumber > maxNameNumber) {
maxNameNumber = nodeNumber
}
}
})
maxNameNumber++
nn.name = defaultNodeName.replace('__number__', maxNameNumber)
}

if (nn._def.onadd) {
try {
nn._def.onadd.call(nn);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@
RED.nodes.registerType('debug',{
category: 'common',
defaults: {
name: {value:""},
name: {value:"", autoGenerate: { label: "node-red:debug.defaultName", scope:'flow' } },
active: {value:true},
tosidebar: {value:true},
console: {value:false},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -221,7 +221,7 @@
category: 'common',
color:"#ddd",//"#87D8CF",
defaults: {
name: {value:""},
name: {value:"", autoGenerate: { label: RED._("node-red:link.linkIn")+" __number__ " } },
links: { value: [], type:"link out[]" }
},
inputs:0,
Expand Down Expand Up @@ -293,7 +293,7 @@
category: 'common',
color:"#ddd",//"#87D8CF",
defaults: {
name: {value:""},
name: {value:"", autoGenerate: { label: RED._("node-red:link.linkOut")+" __number__ " } },
mode: { value: "link" },// link || return
links: { value: [], type:"link in[]"}
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,7 @@
"completeNodes": "complete: __number__"
},
"debug": {
"defaultName": "debug __number__",
"output": "Output",
"status": "status",
"none": "None",
Expand Down

0 comments on commit fd30b71

Please sign in to comment.