mirror of
https://github.com/node-red/node-red.git
synced 2025-03-01 10:36:34 +00:00
Add partial implementation of adding library sources via editor
This adds lots of commented out code that provides a settings panel to add new library sources. It is incomplete as it doesn't actually add/update the library sources on the runtime. For 1.3, I'm focussing on allowing additional sources get added via the settings file only. I've done enough work on the editor side to convince myself more work is needed than I can justify at this time on what is otherwise not going to be a widely used feature.
This commit is contained in:
committed by
Nick O'Leary
parent
8a076c01ab
commit
3f9a29730f
@@ -18,6 +18,7 @@
|
||||
const {events} = require("@node-red/util")
|
||||
const knownTypes = {};
|
||||
const libraries = {};
|
||||
const libraryConfigs = {};
|
||||
const libraryPlugins = {};
|
||||
|
||||
// Libraries defined in the settings file. Their configurations
|
||||
@@ -37,7 +38,9 @@ function init(runtime) {
|
||||
runtimeLibraries.forEach(library => {
|
||||
if (library.type === id) {
|
||||
library.local = false;
|
||||
libraryConfigs[library.id] = library;
|
||||
libraries[library.id] = new plugin.class(library)
|
||||
libraryConfigs[library.id].type = id;
|
||||
if (libraries[library.id].init) {
|
||||
libraries[library.id].init();
|
||||
}
|
||||
@@ -49,11 +52,13 @@ function init(runtime) {
|
||||
})
|
||||
|
||||
knownTypes.flows = 'node-red';
|
||||
libraries["local"] = require("./local");
|
||||
libraries["local"].init(runtime);
|
||||
libraryConfigs["local"] = libraries["local"]
|
||||
|
||||
libraries["examples"] = require("./examples");
|
||||
libraries["examples"].init(runtime);
|
||||
libraries["local"] = require("./local");
|
||||
libraries["local"].init(runtime);
|
||||
libraryConfigs["examples"] = libraries["examples"]
|
||||
|
||||
try {
|
||||
runtimeLibraries = runtime.settings.editorTheme.library.sources;
|
||||
@@ -100,42 +105,58 @@ function saveEntry(library,type,path,meta,body) {
|
||||
}
|
||||
|
||||
function getLibraries() {
|
||||
const libraryList = [
|
||||
{
|
||||
id: "local",
|
||||
label: "editor:library.types.local",
|
||||
user: false,
|
||||
icon: "fa fa-bath"
|
||||
},
|
||||
{
|
||||
id: "examples",
|
||||
label: "editor:library.types.examples",
|
||||
user: false,
|
||||
readOnly: true,
|
||||
types: ['flows']
|
||||
}
|
||||
];
|
||||
|
||||
const libraryList = []
|
||||
for (let id in libraries) {
|
||||
if (libraries.hasOwnProperty(id)) {
|
||||
if (id !== 'local' && id !== 'examples') {
|
||||
libraryList.push({
|
||||
id: id,
|
||||
label: libraries[id].name || id,
|
||||
user: false,
|
||||
icon: libraries[id].icon
|
||||
})
|
||||
var config = getConfig(id);
|
||||
// Don't include the full configuration of each library when providing
|
||||
// the list of all libraries
|
||||
delete config.config;
|
||||
libraryList.push(config);
|
||||
}
|
||||
}
|
||||
return libraryList;
|
||||
}
|
||||
|
||||
function getConfig(id) {
|
||||
var lib = {
|
||||
id: id,
|
||||
label: libraryConfigs[id].label || id,
|
||||
user: false,
|
||||
icon: libraryConfigs[id].icon
|
||||
}
|
||||
if (libraryConfigs[id].types) {
|
||||
lib.types = libraryConfigs[id].types
|
||||
}
|
||||
if (libraryConfigs[id].readOnly) {
|
||||
lib.readOnly = libraryConfigs[id].readOnly
|
||||
}
|
||||
|
||||
if (libraryConfigs[id].type) {
|
||||
lib.type = libraryConfigs[id].type;
|
||||
|
||||
var def = libraryPlugins[lib.type];
|
||||
if (def && def.defaults) {
|
||||
lib.config = {};
|
||||
for (var d in def.defaults) {
|
||||
if (def.defaults.hasOwnProperty(d)) {
|
||||
if (def.defaults[d].type !== 'password') {
|
||||
lib.config[d] = libraryConfigs[id][d];
|
||||
} else if (!!libraryConfigs[id][d]) {
|
||||
lib.config["has_"+d] = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return libraryList;
|
||||
return lib;
|
||||
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
init: init,
|
||||
getLibraries: getLibraries,
|
||||
// getConfig: getConfig,
|
||||
register: registerType,
|
||||
getEntry: getEntry,
|
||||
saveEntry: saveEntry
|
||||
|
Reference in New Issue
Block a user