Merge pull request #4958 from GogoVega/palette-cleanup

Cleanup global Palette Manager variables
This commit is contained in:
Nick O'Leary 2024-11-18 16:13:37 +00:00 committed by GitHub
commit acf5427810
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -15,26 +15,35 @@
**/ **/
RED.palette.editor = (function() { RED.palette.editor = (function() {
var disabled = false;
let catalogues = [] let catalogues = []
const loadedCatalogs = [] const loadedCatalogs = []
var editorTabs;
let filterInput; // Loaded modules
let searchInput;
let nodeList;
let packageList;
let fullList = []
let loadedList = []; let loadedList = [];
let filteredList = [];
let loadedIndex = {}; let loadedIndex = {};
var typesInUse = {}; // Module list
var nodeEntries = {}; let fullList = [];
var eventTimers = {}; let filteredList = [];
var activeFilter = "";
var semverre = /^(\d+)(\.(\d+))?(\.(\d+))?(-([0-9A-Za-z-]+))?(\.([0-9A-Za-z-.]+))?$/; // Modules installed
var NUMBERS_ONLY = /^\d+$/; let nodeEntries = {};
// EditableList
let nodeList;
let packageList;
// Nodes tab - filter
let activeFilter = "";
// Nodes tab - search input
let filterInput;
// Install tab - search input
let searchInput;
const typesInUse = {};
const semverre = /^(\d+)(\.(\d+))?(\.(\d+))?(-([0-9A-Za-z-]+))?(\.([0-9A-Za-z-.]+))?$/;
const NUMBERS_ONLY = /^\d+$/;
function SemVerPart(part) { function SemVerPart(part) {
this.number = 0; this.number = 0;
@ -196,6 +205,7 @@ RED.palette.editor = (function() {
} }
} }
const eventTimers = {};
function refreshNodeModule(module) { function refreshNodeModule(module) {
if (!eventTimers.hasOwnProperty(module)) { if (!eventTimers.hasOwnProperty(module)) {
eventTimers[module] = setTimeout(function() { eventTimers[module] = setTimeout(function() {
@ -272,7 +282,6 @@ RED.palette.editor = (function() {
} }
} }
function _refreshNodeModule(module) { function _refreshNodeModule(module) {
if (!nodeEntries.hasOwnProperty(module)) { if (!nodeEntries.hasOwnProperty(module)) {
nodeEntries[module] = {info:RED.nodes.registry.getModule(module)}; nodeEntries[module] = {info:RED.nodes.registry.getModule(module)};
@ -422,16 +431,10 @@ RED.palette.editor = (function() {
} }
} }
let activeSort = sortModulesRelevance;
var catalogueCount;
var catalogueLoadStatus = [];
var catalogueLoadStart;
var activeSort = sortModulesRelevance;
function refreshCatalogues (done) { function refreshCatalogues (done) {
catalogueLoadStatus = []; const catalogueCount = catalogues.length;
catalogueCount = catalogues.length;
loadedList = [] loadedList = []
loadedIndex = {} loadedIndex = {}
loadedCatalogs.length = 0 loadedCatalogs.length = 0
@ -441,7 +444,7 @@ RED.palette.editor = (function() {
$.getJSON(url, {_: new Date().getTime()},function(v) { $.getJSON(url, {_: new Date().getTime()},function(v) {
loadedCatalogs.push({ index: index, url: url, name: v.name, updated_at: v.updated_at, modules_count: (v.modules || []).length }) loadedCatalogs.push({ index: index, url: url, name: v.name, updated_at: v.updated_at, modules_count: (v.modules || []).length })
handleCatalogResponse({ url: url, name: v.name},index,v); handleCatalogResponse({ url: url, name: v.name},index,v);
}).fail(function(jqxhr, textStatus, error) { }).fail(function(_jqxhr, _textStatus, error) {
console.warn("Error loading catalog",url,":",error); console.warn("Error loading catalog",url,":",error);
}).always(function() { }).always(function() {
handled++; handled++;
@ -494,7 +497,7 @@ RED.palette.editor = (function() {
$(".red-ui-palette-module-shade-status").text(RED._('palette.editor.loading')); $(".red-ui-palette-module-shade-status").text(RED._('palette.editor.loading'));
$("#red-ui-palette-module-install-shade").show(); $("#red-ui-palette-module-install-shade").show();
catalogueLoadStart = Date.now() const catalogueLoadStart = Date.now()
refreshCatalogues(function () { refreshCatalogues(function () {
refreshNodeModuleList(); refreshNodeModuleList();
updateCatalogFilter(loadedCatalogs) updateCatalogFilter(loadedCatalogs)
@ -609,36 +612,42 @@ RED.palette.editor = (function() {
return -1 * (A.info.timestamp-B.info.timestamp); return -1 * (A.info.timestamp-B.info.timestamp);
} }
var installAllowList = ['*']; let installAllowList = ['*'];
var installDenyList = []; let installDenyList = [];
var updateAllowed = true; let updateAllowed = true;
var updateAllowList = ['*']; let updateAllowList = ['*'];
var updateDenyList = []; let updateDenyList = [];
let editorTabs;
let settingsPane;
function init() { function init() {
catalogues = RED.settings.theme('palette.catalogues')||['https://catalogue.nodered.org/catalogue.json']
if (RED.settings.get('externalModules.palette.allowInstall', true) === false) { if (RED.settings.get('externalModules.palette.allowInstall', true) === false) {
return; return;
} }
var settingsAllowList = RED.settings.get("externalModules.palette.allowList")
var settingsDenyList = RED.settings.get("externalModules.palette.denyList") const settingsAllowList = RED.settings.get("externalModules.palette.allowList")
const settingsDenyList = RED.settings.get("externalModules.palette.denyList")
const settingsUpdateAllowList = RED.settings.get("externalModules.palette.allowUpdateList")
const settingsUpdateDenyList = RED.settings.get("externalModules.palette.denyUpdateList")
if (settingsAllowList || settingsDenyList) { if (settingsAllowList || settingsDenyList) {
installAllowList = settingsAllowList; installAllowList = settingsAllowList;
installDenyList = settingsDenyList installDenyList = settingsDenyList;
} }
installAllowList = RED.utils.parseModuleList(installAllowList);
installDenyList = RED.utils.parseModuleList(installDenyList);
var settingsUpdateAllowList = RED.settings.get("externalModules.palette.allowUpdateList")
var settingsUpdateDenyList = RED.settings.get("externalModules.palette.denyUpdateList")
if (settingsUpdateAllowList || settingsUpdateDenyList) { if (settingsUpdateAllowList || settingsUpdateDenyList) {
updateAllowList = settingsUpdateAllowList; updateAllowList = settingsUpdateAllowList;
updateDenyList = settingsUpdateDenyList; updateDenyList = settingsUpdateDenyList;
} }
installAllowList = RED.utils.parseModuleList(installAllowList);
installDenyList = RED.utils.parseModuleList(installDenyList);
updateAllowed = RED.settings.get("externalModules.palette.allowUpdate", true);
updateAllowList = RED.utils.parseModuleList(updateAllowList); updateAllowList = RED.utils.parseModuleList(updateAllowList);
updateDenyList = RED.utils.parseModuleList(updateDenyList); updateDenyList = RED.utils.parseModuleList(updateDenyList);
updateAllowed = RED.settings.get("externalModules.palette.allowUpdate",true);
catalogues = RED.settings.theme('palette.catalogues') || ['https://catalogue.nodered.org/catalogue.json']
createSettingsPane(); createSettingsPane();
@ -659,7 +668,7 @@ RED.palette.editor = (function() {
// Add the update status to the status bar // Add the update status to the status bar
addUpdateInfoToStatusBar(); addUpdateInfoToStatusBar();
// Load catalogues
refreshCatalogues() refreshCatalogues()
RED.actions.add("core:manage-palette",function() { RED.actions.add("core:manage-palette",function() {
@ -768,8 +777,6 @@ RED.palette.editor = (function() {
}); });
} }
var settingsPane;
function getSettingsPane() { function getSettingsPane() {
initInstallTab(); initInstallTab();
editorTabs.activateTab('nodes'); editorTabs.activateTab('nodes');