Merge branch 'dev' into check-for-updates

This commit is contained in:
GogoVega 2024-12-08 11:48:19 +01:00
commit fc666fe13d
No known key found for this signature in database
GPG Key ID: E1E048B63AC5AC2B
4 changed files with 77 additions and 45 deletions

View File

@ -92,7 +92,6 @@
"ctrl-+": "core:zoom-in", "ctrl-+": "core:zoom-in",
"ctrl--": "core:zoom-out", "ctrl--": "core:zoom-out",
"ctrl-0": "core:zoom-reset" "ctrl-0": "core:zoom-reset"
}, },
"red-ui-editor-stack": { "red-ui-editor-stack": {
"ctrl-enter": "core:confirm-edit-tray", "ctrl-enter": "core:confirm-edit-tray",

View File

@ -3013,7 +3013,12 @@ RED.nodes = (function() {
}); });
RED.events.on('deploy', function () { RED.events.on('deploy', function () {
allNodes.clearState() allNodes.clearState()
}) });
RED.actions.add("core:trigger-selected-nodes-action", function () {
const selectedNodes = RED.view.selection().nodes || [];
// Triggers the button action of the selected nodes
selectedNodes.forEach((node) => RED.view.clickNodeButton(node));
});
}, },
registry:registry, registry:registry,
setNodeList: registry.setNodeList, setNodeList: registry.setNodeList,

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,39 +612,44 @@ 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 = [];
var settingsPane; 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);
if (RED.settings.get("editorTheme.palette.checkForUpdates", true) === true) { catalogues = RED.settings.theme('palette.catalogues') || ['https://catalogue.nodered.org/catalogue.json'];
if (RED.settings.get("editorTheme.palette.checkForUpdates", false) === true) {
// Enable checking for updates triggered every 30 minutes // Enable checking for updates triggered every 30 minutes
initCheckForUpdatesInterval(); initCheckForUpdatesInterval();
} }
@ -665,7 +673,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() {

View File

@ -26,6 +26,26 @@
@include disable-selection; @include disable-selection;
@include component-border; @include component-border;
transition: width 0.2s ease-in-out; transition: width 0.2s ease-in-out;
&:before {
content: '';
top: 0px;
bottom: 0px;
right: 0px;
width: 7px;
height: 100%;
z-index: 4;
position: absolute;
-webkit-mask-image: url(images/grip.svg);
mask-image: url(images/grip.svg);
-webkit-mask-size: auto;
mask-size: auto;
-webkit-mask-position: 50% 50%;
mask-position: 50% 50%;
-webkit-mask-repeat: no-repeat;
mask-repeat: no-repeat;
background-color: var(--red-ui-grip-color);
}
} }
.red-ui-palette-closed { .red-ui-palette-closed {