mirror of
https://github.com/node-red/node-red.git
synced 2025-03-01 10:36:34 +00:00
Ensure plugins api provides a filtered view
This commit is contained in:
parent
3df3096bb4
commit
fef93818c9
@ -253,7 +253,6 @@ RED.palette.editor = (function() {
|
|||||||
nodeEntry.removeButton.show();
|
nodeEntry.removeButton.show();
|
||||||
|
|
||||||
let pluginCount = 0;
|
let pluginCount = 0;
|
||||||
|
|
||||||
for (let setName in moduleInfo.sets) {
|
for (let setName in moduleInfo.sets) {
|
||||||
if (moduleInfo.sets.hasOwnProperty(setName)) {
|
if (moduleInfo.sets.hasOwnProperty(setName)) {
|
||||||
let set = moduleInfo.sets[setName];
|
let set = moduleInfo.sets[setName];
|
||||||
@ -276,8 +275,9 @@ RED.palette.editor = (function() {
|
|||||||
for (var setName in moduleInfo.sets) {
|
for (var setName in moduleInfo.sets) {
|
||||||
if (moduleInfo.sets.hasOwnProperty(setName)) {
|
if (moduleInfo.sets.hasOwnProperty(setName)) {
|
||||||
var inUseCount = 0;
|
var inUseCount = 0;
|
||||||
var set = moduleInfo.sets[setName];
|
const set = moduleInfo.sets[setName];
|
||||||
var setElements = nodeEntry.sets[setName];
|
const setElements = nodeEntry.sets[setName]
|
||||||
|
|
||||||
if (set.err) {
|
if (set.err) {
|
||||||
errorCount++;
|
errorCount++;
|
||||||
var errMessage = set.err;
|
var errMessage = set.err;
|
||||||
@ -295,30 +295,31 @@ RED.palette.editor = (function() {
|
|||||||
for (var i=0;i<moduleInfo.sets[setName].types.length;i++) {
|
for (var i=0;i<moduleInfo.sets[setName].types.length;i++) {
|
||||||
var t = moduleInfo.sets[setName].types[i];
|
var t = moduleInfo.sets[setName].types[i];
|
||||||
inUseCount += (typesInUse[t]||0);
|
inUseCount += (typesInUse[t]||0);
|
||||||
var swatch = setElements.swatches[t];
|
if (setElements && set.enabled) {
|
||||||
if (set.enabled) {
|
|
||||||
var def = RED.nodes.getType(t);
|
var def = RED.nodes.getType(t);
|
||||||
if (def && def.color) {
|
if (def && def.color) {
|
||||||
swatch.css({background:RED.utils.getNodeColor(t,def)});
|
setElements.swatches[t].css({background:RED.utils.getNodeColor(t,def)});
|
||||||
swatch.css({border: "1px solid "+getContrastingBorder(swatch.css('backgroundColor'))})
|
setElements.swatches[t].css({border: "1px solid "+getContrastingBorder(setElements.swatches[t].css('backgroundColor'))})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
nodeEntries[module].setUseCount[setName] = inUseCount;
|
nodeEntries[module].setUseCount[setName] = inUseCount;
|
||||||
nodeEntries[module].totalUseCount += inUseCount;
|
nodeEntries[module].totalUseCount += inUseCount;
|
||||||
|
|
||||||
if (inUseCount > 0) {
|
if (setElements) {
|
||||||
setElements.enableButton.text(RED._('palette.editor.inuse'));
|
if (inUseCount > 0) {
|
||||||
setElements.enableButton.addClass('disabled');
|
setElements.enableButton.text(RED._('palette.editor.inuse'));
|
||||||
} else {
|
setElements.enableButton.addClass('disabled');
|
||||||
setElements.enableButton.removeClass('disabled');
|
|
||||||
if (set.enabled) {
|
|
||||||
setElements.enableButton.text(RED._('palette.editor.disable'));
|
|
||||||
} else {
|
} else {
|
||||||
setElements.enableButton.text(RED._('palette.editor.enable'));
|
setElements.enableButton.removeClass('disabled');
|
||||||
|
if (set.enabled) {
|
||||||
|
setElements.enableButton.text(RED._('palette.editor.disable'));
|
||||||
|
} else {
|
||||||
|
setElements.enableButton.text(RED._('palette.editor.enable'));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
setElements.setRow.toggleClass("red-ui-palette-module-set-disabled",!set.enabled);
|
||||||
}
|
}
|
||||||
setElements.setRow.toggleClass("red-ui-palette-module-set-disabled",!set.enabled);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -861,59 +862,88 @@ RED.palette.editor = (function() {
|
|||||||
if (container.hasClass('expanded')) {
|
if (container.hasClass('expanded')) {
|
||||||
container.removeClass('expanded');
|
container.removeClass('expanded');
|
||||||
contentRow.slideUp();
|
contentRow.slideUp();
|
||||||
|
setTimeout(() => {
|
||||||
|
contentRow.empty()
|
||||||
|
}, 200)
|
||||||
|
object.elements.sets = {}
|
||||||
} else {
|
} else {
|
||||||
container.addClass('expanded');
|
container.addClass('expanded');
|
||||||
|
populateSetList()
|
||||||
contentRow.slideDown();
|
contentRow.slideDown();
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
function populateSetList() {
|
||||||
var setList = Object.keys(entry.sets)
|
var setList = Object.keys(entry.sets)
|
||||||
setList.sort(function(A,B) {
|
setList.sort(function(A,B) {
|
||||||
return A.toLowerCase().localeCompare(B.toLowerCase());
|
return A.toLowerCase().localeCompare(B.toLowerCase());
|
||||||
});
|
});
|
||||||
setList.forEach(function(setName) {
|
setList.forEach(function(setName) {
|
||||||
var set = entry.sets[setName];
|
var set = entry.sets[setName];
|
||||||
var setRow = $('<div>',{class:"red-ui-palette-module-set"}).appendTo(contentRow);
|
var setRow = $('<div>',{class:"red-ui-palette-module-set"}).appendTo(contentRow);
|
||||||
var buttonGroup = $('<div>',{class:"red-ui-palette-module-set-button-group"}).appendTo(setRow);
|
var buttonGroup = $('<div>',{class:"red-ui-palette-module-set-button-group"}).appendTo(setRow);
|
||||||
var typeSwatches = {};
|
var typeSwatches = {};
|
||||||
let enableButton;
|
let enableButton;
|
||||||
if (set.types) {
|
if (set.types) {
|
||||||
set.types.forEach(function(t) {
|
set.types.forEach(function(t) {
|
||||||
var typeDiv = $('<div>',{class:"red-ui-palette-module-type"}).appendTo(setRow);
|
var typeDiv = $('<div>',{class:"red-ui-palette-module-type"}).appendTo(setRow);
|
||||||
typeSwatches[t] = $('<span>',{class:"red-ui-palette-module-type-swatch"}).appendTo(typeDiv);
|
typeSwatches[t] = $('<span>',{class:"red-ui-palette-module-type-swatch"}).appendTo(typeDiv);
|
||||||
$('<span>',{class:"red-ui-palette-module-type-node"}).text(t).appendTo(typeDiv);
|
if (set.enabled) {
|
||||||
})
|
var def = RED.nodes.getType(t);
|
||||||
enableButton = $('<a href="#" class="red-ui-button red-ui-button-small"></a>').appendTo(buttonGroup);
|
if (def && def.color) {
|
||||||
enableButton.on("click", function(evt) {
|
typeSwatches[t].css({background:RED.utils.getNodeColor(t,def)});
|
||||||
evt.preventDefault();
|
typeSwatches[t].css({border: "1px solid "+getContrastingBorder(typeSwatches[t].css('backgroundColor'))})
|
||||||
if (object.setUseCount[setName] === 0) {
|
|
||||||
var currentSet = RED.nodes.registry.getNodeSet(set.id);
|
|
||||||
shade.show();
|
|
||||||
var newState = !currentSet.enabled
|
|
||||||
changeNodeState(set.id,newState,shade,function(xhr){
|
|
||||||
if (xhr) {
|
|
||||||
if (xhr.responseJSON) {
|
|
||||||
RED.notify(RED._('palette.editor.errors.'+(newState?'enable':'disable')+'Failed',{module: id,message:xhr.responseJSON.message}));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
}
|
$('<span>',{class:"red-ui-palette-module-type-node"}).text(t).appendTo(typeDiv);
|
||||||
})
|
})
|
||||||
} else if (set.plugins) {
|
enableButton = $('<a href="#" class="red-ui-button red-ui-button-small"></a>').appendTo(buttonGroup);
|
||||||
set.plugins.forEach(function(p) {
|
enableButton.on("click", function(evt) {
|
||||||
var typeDiv = $('<div>',{class:"red-ui-palette-module-type"}).appendTo(setRow);
|
evt.preventDefault();
|
||||||
// typeSwatches[p.id] = $('<span>',{class:"red-ui-palette-module-type-swatch"}).appendTo(typeDiv);
|
if (object.setUseCount[setName] === 0) {
|
||||||
$('<span><i class="fa fa-puzzle-piece" aria-hidden="true"></i> </span>',{class:"red-ui-palette-module-type-swatch"}).appendTo(typeDiv);
|
var currentSet = RED.nodes.registry.getNodeSet(set.id);
|
||||||
$('<span>',{class:"red-ui-palette-module-type-node"}).text(p.id).appendTo(typeDiv);
|
shade.show();
|
||||||
})
|
var newState = !currentSet.enabled
|
||||||
}
|
changeNodeState(set.id,newState,shade,function(xhr){
|
||||||
|
if (xhr) {
|
||||||
|
if (xhr.responseJSON) {
|
||||||
|
RED.notify(RED._('palette.editor.errors.'+(newState?'enable':'disable')+'Failed',{module: id,message:xhr.responseJSON.message}));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
object.elements.sets[set.name] = {
|
if (object.setUseCount[setName] > 0) {
|
||||||
setRow: setRow,
|
enableButton.text(RED._('palette.editor.inuse'));
|
||||||
enableButton: enableButton,
|
enableButton.addClass('disabled');
|
||||||
swatches: typeSwatches
|
} else {
|
||||||
};
|
enableButton.removeClass('disabled');
|
||||||
});
|
if (set.enabled) {
|
||||||
|
enableButton.text(RED._('palette.editor.disable'));
|
||||||
|
} else {
|
||||||
|
enableButton.text(RED._('palette.editor.enable'));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
setRow.toggleClass("red-ui-palette-module-set-disabled",!set.enabled);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
if (set.plugins) {
|
||||||
|
set.plugins.forEach(function(p) {
|
||||||
|
var typeDiv = $('<div>',{class:"red-ui-palette-module-type"}).appendTo(setRow);
|
||||||
|
// typeSwatches[p.id] = $('<span>',{class:"red-ui-palette-module-type-swatch"}).appendTo(typeDiv);
|
||||||
|
$('<span><i class="fa fa-puzzle-piece" aria-hidden="true"></i> </span>',{class:"red-ui-palette-module-type-swatch"}).appendTo(typeDiv);
|
||||||
|
$('<span>',{class:"red-ui-palette-module-type-node"}).text(p.id).appendTo(typeDiv);
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
object.elements.sets[set.name] = {
|
||||||
|
setRow: setRow,
|
||||||
|
enableButton: enableButton,
|
||||||
|
swatches: typeSwatches
|
||||||
|
};
|
||||||
|
});
|
||||||
|
}
|
||||||
enableButton.on("click", function(evt) {
|
enableButton.on("click", function(evt) {
|
||||||
evt.preventDefault();
|
evt.preventDefault();
|
||||||
if (object.totalUseCount === 0) {
|
if (object.totalUseCount === 0) {
|
||||||
|
@ -66,7 +66,7 @@ function getPluginConfigs(lang) {
|
|||||||
for (var module in moduleConfigs) {
|
for (var module in moduleConfigs) {
|
||||||
/* istanbul ignore else */
|
/* istanbul ignore else */
|
||||||
if (moduleConfigs.hasOwnProperty(module)) {
|
if (moduleConfigs.hasOwnProperty(module)) {
|
||||||
result += get_config_of_plugins(moduleConfigs[module].plugins);
|
result += generateModulePluginConfig(moduleConfigs[module]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
pluginConfigCache[lang] = result;
|
pluginConfigCache[lang] = result;
|
||||||
@ -78,14 +78,14 @@ function getPluginConfig(id, lang) {
|
|||||||
let result = '';
|
let result = '';
|
||||||
let moduleConfigs = registry.getModuleList();
|
let moduleConfigs = registry.getModuleList();
|
||||||
if (moduleConfigs.hasOwnProperty(id)) {
|
if (moduleConfigs.hasOwnProperty(id)) {
|
||||||
result = get_config_of_plugins(moduleConfigs[id].plugins);
|
result = generateModulePluginConfig(moduleConfigs[id]);
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
// helper function to avoid code duplication
|
function generateModulePluginConfig(module) {
|
||||||
function get_config_of_plugins(plugins) {
|
|
||||||
let result = '';
|
let result = '';
|
||||||
|
const plugins = module.plugins
|
||||||
for (let plugin in plugins) {
|
for (let plugin in plugins) {
|
||||||
if (plugins.hasOwnProperty(plugin)) {
|
if (plugins.hasOwnProperty(plugin)) {
|
||||||
let config = plugins[plugin];
|
let config = plugins[plugin];
|
||||||
|
@ -65,7 +65,12 @@ function filterNodeInfo(n) {
|
|||||||
r.err = n.err;
|
r.err = n.err;
|
||||||
}
|
}
|
||||||
if (n.hasOwnProperty("plugins")) {
|
if (n.hasOwnProperty("plugins")) {
|
||||||
r.plugins = n.plugins;
|
r.plugins = n.plugins.map(p => {
|
||||||
|
return {
|
||||||
|
id: p.id,
|
||||||
|
type: p.type
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
if (n.type === "plugin") {
|
if (n.type === "plugin") {
|
||||||
r.editor = !!n.template;
|
r.editor = !!n.template;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user