From 5a1c18de242b77aecc22241c651c908d90bb15ce Mon Sep 17 00:00:00 2001 From: GogoVega <92022724+GogoVega@users.noreply.github.com> Date: Tue, 22 Oct 2024 15:14:46 +0200 Subject: [PATCH 1/4] Trigger button action of the selected nodes with new Hotkey --- .../@node-red/editor-client/src/js/keymap.json | 4 ++-- .../node_modules/@node-red/editor-client/src/js/nodes.js | 7 ++++++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/packages/node_modules/@node-red/editor-client/src/js/keymap.json b/packages/node_modules/@node-red/editor-client/src/js/keymap.json index 1bedab6e8..39fdc02d5 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/keymap.json +++ b/packages/node_modules/@node-red/editor-client/src/js/keymap.json @@ -91,8 +91,8 @@ "alt-shift-w": "core:show-last-hidden-flow", "ctrl-+": "core:zoom-in", "ctrl--": "core:zoom-out", - "ctrl-0": "core:zoom-reset" - + "ctrl-0": "core:zoom-reset", + "ctrl-shift-t": "core:click-selected-nodes-button" }, "red-ui-editor-stack": { "ctrl-enter": "core:confirm-edit-tray", diff --git a/packages/node_modules/@node-red/editor-client/src/js/nodes.js b/packages/node_modules/@node-red/editor-client/src/js/nodes.js index 2a7b440f2..d831e4eae 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/nodes.js +++ b/packages/node_modules/@node-red/editor-client/src/js/nodes.js @@ -3013,7 +3013,12 @@ RED.nodes = (function() { }); RED.events.on('deploy', function () { allNodes.clearState() - }) + }); + RED.actions.add("core:click-selected-nodes-button", function () { + const selectedNodes = RED.view.selection().nodes || []; + // Triggers the button action of the selected nodes + selectedNodes.forEach((node) => RED.view.clickNodeButton(node)); + }); }, registry:registry, setNodeList: registry.setNodeList, From 1cbc4fd9da4e38a94e2506edc4b29eb1b7f385b7 Mon Sep 17 00:00:00 2001 From: GogoVega <92022724+GogoVega@users.noreply.github.com> Date: Mon, 11 Nov 2024 18:55:33 +0100 Subject: [PATCH 2/4] Remove the default key and rename the action Co-authored-by: Nick O'Leary --- .../node_modules/@node-red/editor-client/src/js/keymap.json | 3 +-- packages/node_modules/@node-red/editor-client/src/js/nodes.js | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/packages/node_modules/@node-red/editor-client/src/js/keymap.json b/packages/node_modules/@node-red/editor-client/src/js/keymap.json index 39fdc02d5..4cf28d227 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/keymap.json +++ b/packages/node_modules/@node-red/editor-client/src/js/keymap.json @@ -91,8 +91,7 @@ "alt-shift-w": "core:show-last-hidden-flow", "ctrl-+": "core:zoom-in", "ctrl--": "core:zoom-out", - "ctrl-0": "core:zoom-reset", - "ctrl-shift-t": "core:click-selected-nodes-button" + "ctrl-0": "core:zoom-reset" }, "red-ui-editor-stack": { "ctrl-enter": "core:confirm-edit-tray", diff --git a/packages/node_modules/@node-red/editor-client/src/js/nodes.js b/packages/node_modules/@node-red/editor-client/src/js/nodes.js index d831e4eae..f569b6d5a 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/nodes.js +++ b/packages/node_modules/@node-red/editor-client/src/js/nodes.js @@ -3014,7 +3014,7 @@ RED.nodes = (function() { RED.events.on('deploy', function () { allNodes.clearState() }); - RED.actions.add("core:click-selected-nodes-button", function () { + 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)); From ef19457bdade540305ffac04880a20351ef8697f Mon Sep 17 00:00:00 2001 From: GogoVega <92022724+GogoVega@users.noreply.github.com> Date: Tue, 12 Nov 2024 18:05:12 +0100 Subject: [PATCH 3/4] Add the vertical marker to the palette hand --- .../editor-client/src/sass/palette.scss | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/packages/node_modules/@node-red/editor-client/src/sass/palette.scss b/packages/node_modules/@node-red/editor-client/src/sass/palette.scss index a3afc3d76..8e45335a7 100644 --- a/packages/node_modules/@node-red/editor-client/src/sass/palette.scss +++ b/packages/node_modules/@node-red/editor-client/src/sass/palette.scss @@ -26,6 +26,26 @@ @include disable-selection; @include component-border; 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 { From 8dee431b3fad4f1fba6270817959911e4fbda408 Mon Sep 17 00:00:00 2001 From: GogoVega <92022724+GogoVega@users.noreply.github.com> Date: Wed, 13 Nov 2024 22:35:41 +0100 Subject: [PATCH 4/4] Cleanup global palette variables --- .../editor-client/src/js/ui/palette-editor.js | 93 ++++++++++--------- 1 file changed, 50 insertions(+), 43 deletions(-) diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/palette-editor.js b/packages/node_modules/@node-red/editor-client/src/js/ui/palette-editor.js index 1c2a7d2f1..3926ca430 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/ui/palette-editor.js +++ b/packages/node_modules/@node-red/editor-client/src/js/ui/palette-editor.js @@ -15,26 +15,35 @@ **/ RED.palette.editor = (function() { - var disabled = false; let catalogues = [] const loadedCatalogs = [] - var editorTabs; - let filterInput; - let searchInput; - let nodeList; - let packageList; - let fullList = [] + + // Loaded modules let loadedList = []; - let filteredList = []; let loadedIndex = {}; - var typesInUse = {}; - var nodeEntries = {}; - var eventTimers = {}; - var activeFilter = ""; + // Module list + let fullList = []; + let filteredList = []; - var semverre = /^(\d+)(\.(\d+))?(\.(\d+))?(-([0-9A-Za-z-]+))?(\.([0-9A-Za-z-.]+))?$/; - var NUMBERS_ONLY = /^\d+$/; + // Modules installed + 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) { this.number = 0; @@ -196,6 +205,7 @@ RED.palette.editor = (function() { } } + const eventTimers = {}; function refreshNodeModule(module) { if (!eventTimers.hasOwnProperty(module)) { eventTimers[module] = setTimeout(function() { @@ -272,7 +282,6 @@ RED.palette.editor = (function() { } } - function _refreshNodeModule(module) { if (!nodeEntries.hasOwnProperty(module)) { nodeEntries[module] = {info:RED.nodes.registry.getModule(module)}; @@ -422,16 +431,10 @@ RED.palette.editor = (function() { } } - - var catalogueCount; - var catalogueLoadStatus = []; - var catalogueLoadStart; - - var activeSort = sortModulesRelevance; + let activeSort = sortModulesRelevance; function refreshCatalogues (done) { - catalogueLoadStatus = []; - catalogueCount = catalogues.length; + const catalogueCount = catalogues.length; loadedList = [] loadedIndex = {} loadedCatalogs.length = 0 @@ -441,7 +444,7 @@ RED.palette.editor = (function() { $.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 }) 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); }).always(function() { handled++; @@ -494,7 +497,7 @@ RED.palette.editor = (function() { $(".red-ui-palette-module-shade-status").text(RED._('palette.editor.loading')); $("#red-ui-palette-module-install-shade").show(); - catalogueLoadStart = Date.now() + const catalogueLoadStart = Date.now() refreshCatalogues(function () { refreshNodeModuleList(); updateCatalogFilter(loadedCatalogs) @@ -609,36 +612,42 @@ RED.palette.editor = (function() { return -1 * (A.info.timestamp-B.info.timestamp); } - var installAllowList = ['*']; - var installDenyList = []; - var updateAllowed = true; - var updateAllowList = ['*']; - var updateDenyList = []; + let installAllowList = ['*']; + let installDenyList = []; + let updateAllowed = true; + let updateAllowList = ['*']; + let updateDenyList = []; + + let editorTabs; + let settingsPane; function init() { - catalogues = RED.settings.theme('palette.catalogues')||['https://catalogue.nodered.org/catalogue.json'] if (RED.settings.get('externalModules.palette.allowInstall', true) === false) { 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) { 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) { updateAllowList = settingsUpdateAllowList; 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); 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(); @@ -659,7 +668,7 @@ RED.palette.editor = (function() { // Add the update status to the status bar addUpdateInfoToStatusBar(); - + // Load catalogues refreshCatalogues() RED.actions.add("core:manage-palette",function() { @@ -768,8 +777,6 @@ RED.palette.editor = (function() { }); } - var settingsPane; - function getSettingsPane() { initInstallTab(); editorTabs.activateTab('nodes');