1
0
mirror of https://github.com/node-red/node-red.git synced 2023-10-10 13:36:53 +02:00

Fix palette node id handling so search works

Fixes #2173
This commit is contained in:
Nick O'Leary 2019-05-24 22:13:21 +01:00
parent abaf363ddd
commit b105a12505
No known key found for this signature in database
GPG Key ID: 4F2157149161A6C9
3 changed files with 24 additions and 33 deletions

View File

@ -87,6 +87,7 @@
that._trigger("change"); that._trigger("change");
},this.options.delay); },this.options.delay);
} else { } else {
this.lastSent = this.element.val();
this._trigger("change"); this._trigger("change");
} }
} }

View File

@ -149,13 +149,11 @@ RED.palette = (function() {
RED.utils.createIconElement(icon_url, iconContainer, true); RED.utils.createIconElement(icon_url, iconContainer, true);
} }
function escapeNodeType(nt) { function getPaletteNode(type) {
return nt.replace(" ","_").replace(".","_").replace(":","_"); return $(".red-ui-palette-node[data-palette-type='"+type+"']");
} }
function addNodeType(nt,def) { function addNodeType(nt,def) {
var nodeTypeId = escapeNodeType(nt); if (getPaletteNode(nt).length) {
if ($("#red-ui-palette-node_"+nodeTypeId).length) {
return; return;
} }
if (exclusion.indexOf(def.category)===-1) { if (exclusion.indexOf(def.category)===-1) {
@ -164,9 +162,7 @@ RED.palette = (function() {
var category = def.category.replace(/ /g,"_"); var category = def.category.replace(/ /g,"_");
var rootCategory = category.split("-")[0]; var rootCategory = category.split("-")[0];
var d = document.createElement("div"); var d = $('<div>',{class:"red-ui-palette-node"}).attr("data-palette-type",nt).data('category',rootCategory);
d.id = "red-ui-palette-node_"+nodeTypeId;
d.type = nt;
var label = /^(.*?)([ -]in|[ -]out)?$/.exec(nt)[1]; var label = /^(.*?)([ -]in|[ -]out)?$/.exec(nt)[1];
if (typeof def.paletteLabel !== "undefined") { if (typeof def.paletteLabel !== "undefined") {
@ -182,7 +178,6 @@ RED.palette = (function() {
+ (((!def.align && def.inputs !== 0 && def.outputs === 0) || "right" === def.align) ? " red-ui-palette-label-right" : "") + (((!def.align && def.inputs !== 0 && def.outputs === 0) || "right" === def.align) ? " red-ui-palette-label-right" : "")
}).appendTo(d); }).appendTo(d);
d.className="red-ui-palette-node";
if (def.icon) { if (def.icon) {
var icon_url = RED.utils.getNodeIcon(def); var icon_url = RED.utils.getNodeIcon(def);
@ -193,36 +188,35 @@ RED.palette = (function() {
RED.utils.createIconElement(icon_url, iconContainer, true); RED.utils.createIconElement(icon_url, iconContainer, true);
} }
d.style.backgroundColor = RED.utils.getNodeColor(nt,def); d.css("backgroundColor", RED.utils.getNodeColor(nt,def));
if (def.outputs > 0) { if (def.outputs > 0) {
var portOut = document.createElement("div"); var portOut = document.createElement("div");
portOut.className = "red-ui-palette-port red-ui-palette-port-output"; portOut.className = "red-ui-palette-port red-ui-palette-port-output";
d.appendChild(portOut); d.append(portOut);
} }
if (def.inputs > 0) { if (def.inputs > 0) {
var portIn = document.createElement("div"); var portIn = document.createElement("div");
portIn.className = "red-ui-palette-port red-ui-palette-port-input"; portIn.className = "red-ui-palette-port red-ui-palette-port-input";
d.appendChild(portIn); d.append(portIn);
} }
createCategory(def.category,rootCategory,category,(coreCategories.indexOf(rootCategory) !== -1)?"node-red":def.set.id); createCategory(def.category,rootCategory,category,(coreCategories.indexOf(rootCategory) !== -1)?"node-red":def.set.id);
$("#red-ui-palette-"+category).append(d); $("#red-ui-palette-"+category).append(d);
$(d).data('category',rootCategory); d.on("mousedown", function(e) { e.preventDefault();});
d.onmousedown = function(e) { e.preventDefault(); };
var popover = RED.popover.create({ var popover = RED.popover.create({
target:$(d), target:d,
trigger: "hover", trigger: "hover",
width: "300px", width: "300px",
content: "hi", content: "hi",
delay: { show: 750, hide: 50 } delay: { show: 750, hide: 50 }
}); });
$(d).data('popover',popover);
d.data('popover',popover);
// $(d).popover({ // $(d).popover({
// title:d.type, // title:d.type,
@ -232,7 +226,7 @@ RED.palette = (function() {
// html: true, // html: true,
// container:'body' // container:'body'
// }); // });
$(d).on("click", function() { d.on("click", function() {
RED.view.focus(); RED.view.focus();
var helpText; var helpText;
if (nt.indexOf("subflow:") === 0) { if (nt.indexOf("subflow:") === 0) {
@ -330,13 +324,13 @@ RED.palette = (function() {
var nodeInfo = null; var nodeInfo = null;
if (nt.indexOf("subflow:") === 0) { if (nt.indexOf("subflow:") === 0) {
$(d).on("dblclick", function(e) { d.on("dblclick", function(e) {
RED.workspaces.show(nt.substring(8)); RED.workspaces.show(nt.substring(8));
e.preventDefault(); e.preventDefault();
}); });
nodeInfo = marked(def.info||""); nodeInfo = marked(def.info||"");
} }
setLabel(nt,$(d),label,nodeInfo); setLabel(nt,d,label,nodeInfo);
var categoryNode = $("#red-ui-palette-container-"+rootCategory); var categoryNode = $("#red-ui-palette-container-"+rootCategory);
if (categoryNode.find(".red-ui-palette-node").length === 1) { if (categoryNode.find(".red-ui-palette-node").length === 1) {
@ -347,8 +341,7 @@ RED.palette = (function() {
} }
function removeNodeType(nt) { function removeNodeType(nt) {
var nodeTypeId = escapeNodeType(nt); var paletteNode = getPaletteNode(nt);
var paletteNode = $("#red-ui-palette-node_"+nodeTypeId);
var categoryNode = paletteNode.closest(".red-ui-palette-category"); var categoryNode = paletteNode.closest(".red-ui-palette-category");
paletteNode.remove(); paletteNode.remove();
if (categoryNode.find(".red-ui-palette-node").length === 0) { if (categoryNode.find(".red-ui-palette-node").length === 0) {
@ -360,8 +353,7 @@ RED.palette = (function() {
} }
function hideNodeType(nt) { function hideNodeType(nt) {
var nodeTypeId = escapeNodeType(nt); var paletteNode = getPaletteNode(nt);
var paletteNode = $("#red-ui-palette-node_"+nodeTypeId);
paletteNode.hide(); paletteNode.hide();
var categoryNode = paletteNode.closest(".red-ui-palette-category"); var categoryNode = paletteNode.closest(".red-ui-palette-category");
var cl = categoryNode.find(".red-ui-palette-node"); var cl = categoryNode.find(".red-ui-palette-node");
@ -373,8 +365,7 @@ RED.palette = (function() {
} }
function showNodeType(nt) { function showNodeType(nt) {
var nodeTypeId = escapeNodeType(nt); var paletteNode = getPaletteNode(nt);
var paletteNode = $("#red-ui-palette-node_"+nodeTypeId);
var categoryNode = paletteNode.closest(".red-ui-palette-category"); var categoryNode = paletteNode.closest(".red-ui-palette-category");
categoryNode.show(); categoryNode.show();
paletteNode.show(); paletteNode.show();
@ -382,7 +373,7 @@ RED.palette = (function() {
function refreshNodeTypes() { function refreshNodeTypes() {
RED.nodes.eachSubflow(function(sf) { RED.nodes.eachSubflow(function(sf) {
var paletteNode = $("#red-ui-palette-node_subflow_"+sf.id.replace(".","_")); var paletteNode = getPaletteNode('subflow:'+sf.id);
var portInput = paletteNode.find(".red-ui-palette-port-input"); var portInput = paletteNode.find(".red-ui-palette-port-input");
var portOutput = paletteNode.find(".red-ui-palette-port-output"); var portOutput = paletteNode.find(".red-ui-palette-port-output");
@ -396,7 +387,6 @@ RED.palette = (function() {
+ (((!sf._def.align && sf.in.length !== 0 && sf.out.length === 0) || "right" === sf._def.align) ? " red-ui-palette-icon-container-right" : "") + (((!sf._def.align && sf.in.length !== 0 && sf.out.length === 0) || "right" === sf._def.align) ? " red-ui-palette-icon-container-right" : "")
); );
if (portInput.length === 0 && sf.in.length > 0) { if (portInput.length === 0 && sf.in.length > 0) {
var portIn = document.createElement("div"); var portIn = document.createElement("div");
portIn.className = "red-ui-palette-port red-ui-palette-port-input"; portIn.className = "red-ui-palette-port red-ui-palette-port-input";
@ -446,7 +436,8 @@ RED.palette = (function() {
var re = new RegExp(val.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'),'i'); var re = new RegExp(val.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'),'i');
$("#red-ui-palette-container .red-ui-palette-node").each(function(i,el) { $("#red-ui-palette-container .red-ui-palette-node").each(function(i,el) {
var currentLabel = $(el).find(".red-ui-palette-label").text(); var currentLabel = $(el).find(".red-ui-palette-label").text();
if (val === "" || re.test(el.id) || re.test(currentLabel)) { var type = $(el).attr("data-palette-type");
if (val === "" || re.test(type) || re.test(currentLabel)) {
$(this).show(); $(this).show();
} else { } else {
$(this).hide(); $(this).hide();
@ -459,8 +450,10 @@ RED.palette = (function() {
.find(".red-ui-palette-node") .find(".red-ui-palette-node")
.filter(function() { return $(this).css('display') !== 'none'}).length === 0) { .filter(function() { return $(this).css('display') !== 'none'}).length === 0) {
categoryContainers[category].close(); categoryContainers[category].close();
categoryContainers[category].container.slideUp();
} else { } else {
categoryContainers[category].open(); categoryContainers[category].open();
categoryContainers[category].container.show();
} }
} }
} }
@ -539,9 +532,6 @@ RED.palette = (function() {
sidebarControls.hide(); sidebarControls.hide();
}) })
var categoryList = coreCategories; var categoryList = coreCategories;
if (RED.settings.paletteCategories) { if (RED.settings.paletteCategories) {
categoryList = RED.settings.paletteCategories; categoryList = RED.settings.paletteCategories;

View File

@ -328,7 +328,7 @@ RED.view = (function() {
accept:".red-ui-palette-node", accept:".red-ui-palette-node",
drop: function( event, ui ) { drop: function( event, ui ) {
d3.event = event; d3.event = event;
var selected_tool = ui.draggable[0].type; var selected_tool = $(ui.draggable[0]).attr("data-palette-type");
var result = addNode(selected_tool); var result = addNode(selected_tool);
if (!result) { if (!result) {
return; return;