RED.envVar = (function() { function saveEnvList(list) { const items = list.editableList("items") const new_env = []; items.each(function (i,el) { var data = el.data('data'); var item; if (data.nameField && data.valueField) { item = { name: data.nameField.val(), value: data.valueField.typedInput("value"), type: data.valueField.typedInput("type") }; new_env.push(item); } }); return new_env; } function getGlobalConf(create) { var gconf = null; RED.nodes.eachConfig(function (conf) { if (conf.type === "global-config") { gconf = conf; } }); if ((gconf === null) && create) { var cred = { _ : {}, map: {} }; gconf = { id: RED.nodes.id(), type: "global-config", env: [], name: "global-config", label: "", hasUsers: false, users: [], credentials: cred, _def: RED.nodes.getType("global-config"), }; RED.nodes.add(gconf); } return gconf; } function applyChanges(list) { var gconf = getGlobalConf(false); var new_env = []; var items = list.editableList('items'); var credentials = gconf ? gconf.credentials : null; if (!gconf && list.editableList('length') === 0) { // No existing global-config node and nothing in the list, // so no need to do anything more return } if (!credentials) { credentials = { _ : {}, map: {} }; } items.each(function (i,el) { var data = el.data('data'); if (data.nameField && data.valueField) { var item = { name: data.nameField.val(), value: data.valueField.typedInput("value"), type: data.valueField.typedInput("type") }; if (item.name.trim() !== "") { new_env.push(item); if ((item.type === "cred") && (item.value !== "__PWRD__")) { credentials.map[item.name] = item.value; credentials.map["has_"+item.name] = (item.value !== ""); item.value = "__PWRD__"; } } } }); if (gconf === null) { gconf = getGlobalConf(true); } if (!gconf.credentials) { gconf.credentials = { _ : {}, map: {} }; } if ((JSON.stringify(new_env) !== JSON.stringify(gconf.env)) || (JSON.stringify(credentials) !== JSON.stringify(gconf.credentials))) { gconf.env = new_env; gconf.credentials = credentials; RED.nodes.dirty(true); } } function getSettingsPane() { var gconf = getGlobalConf(false); var env = gconf ? gconf.env : []; var cred = gconf ? gconf.credentials : null; if (!cred) { cred = { _ : {}, map: {} }; } var pane = $("
", { id: "red-ui-settings-tab-envvar", class: "form-horizontal" }); var content = $("
", { class: "form-row node-input-env-container-row" }).css({ "margin": "10px" }).appendTo(pane); var label = $("").css({ width: "100%" }).appendTo(content); $("", { class: "fa fa-list" }).appendTo(label); $("").text(" "+RED._("env-var.header")).appendTo(label); var list = $("
    ", { id: "node-input-env-container" }).appendTo(content); var node = { type: "", env: env, credentials: cred.map, }; RED.editor.envVarList.create(list, node); var buttons = $("
    ").css({ "text-align": "right", }).appendTo(content); var revertButton = $("