From 46fdf56c7932a23085105a460edff74b3e9aeed3 Mon Sep 17 00:00:00 2001 From: Nick O'Leary Date: Mon, 20 May 2024 16:41:44 +0100 Subject: [PATCH 1/2] Allow nodes to return additional history entries in onEditSave --- .../editor-client/src/js/ui/editor.js | 20 +++++++++++-- .../@node-red/nodes/core/common/60-link.html | 30 +++++++++++++++---- 2 files changed, 43 insertions(+), 7 deletions(-) diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/editor.js b/packages/node_modules/@node-red/editor-client/src/js/ui/editor.js index 705743b34..a7c797c17 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/ui/editor.js +++ b/packages/node_modules/@node-red/editor-client/src/js/ui/editor.js @@ -741,9 +741,16 @@ RED.editor = (function() { } try { - var rc = editing_node._def.oneditsave.call(editing_node); + const rc = editing_node._def.oneditsave.call(editing_node); if (rc === true) { editState.changed = true; + } else if (typeof rc === 'object' && rc !== null ) { + if (rc.changed === true) { + editState.changed = true + } + if (Array.isArray(rc.history) && rc.history.length > 0) { + editState.history = rc.history + } } } catch(err) { console.warn("oneditsave",editing_node.id,editing_node.type,err.toString()); @@ -1015,7 +1022,7 @@ RED.editor = (function() { } }); } - var historyEvent = { + let historyEvent = { t:'edit', node:editing_node, changes:editState.changes, @@ -1031,6 +1038,15 @@ RED.editor = (function() { instances:subflowInstances } } + + if (editState.history) { + historyEvent = { + t: 'multi', + events: [ historyEvent, ...editState.history ], + dirty: wasDirty + } + } + RED.history.push(historyEvent); } editing_node.dirty = true; diff --git a/packages/node_modules/@node-red/nodes/core/common/60-link.html b/packages/node_modules/@node-red/nodes/core/common/60-link.html index 73ce86ccf..748ccb42b 100644 --- a/packages/node_modules/@node-red/nodes/core/common/60-link.html +++ b/packages/node_modules/@node-red/nodes/core/common/60-link.html @@ -194,27 +194,46 @@ nodeMap[node.links[i]].new = true; } } - var n; - for (var id in nodeMap) { + + let editHistories = [] + let n; + for (let id in nodeMap) { if (nodeMap.hasOwnProperty(id)) { n = RED.nodes.node(id); if (n) { + editHistories.push({ + t:'edit', + node: n, + changes: { + links: [...n.links] + }, + changed: n.changed + }) if (nodeMap[id].old && !nodeMap[id].new) { // Removed id i = n.links.indexOf(node.id); if (i > -1) { n.links.splice(i,1); + n.changed = true + n.dirty = true } } else if (!nodeMap[id].old && nodeMap[id].new) { // Added id i = n.links.indexOf(id); if (i === -1) { n.links.push(node.id); + n.changed = true + n.dirty = true } } } } } + if (editHistories.length > 0) { + return { + history: editHistories + } + } } function onAdd() { @@ -254,13 +273,14 @@ onEditPrepare(this,"link out"); }, oneditsave: function() { - onEditSave(this); + const result = onEditSave(this); // In case the name has changed, ensure any link call nodes on this // tab are redrawn with the updated name var localCallNodes = RED.nodes.filterNodes({z:RED.workspaces.active(), type:"link call"}); localCallNodes.forEach(function(node) { node.dirty = true; }); + return result }, onadd: onAdd, oneditresize: resizeNodeList @@ -329,7 +349,7 @@ onEditPrepare(this,"link in"); }, oneditsave: function() { - onEditSave(this); + return onEditSave(this); }, oneditresize: resizeNodeList }); @@ -373,7 +393,7 @@ }, oneditsave: function() { - onEditSave(this); + return onEditSave(this); }, onadd: onAdd, oneditresize: resizeNodeList From 5538f6dd8afa0d83ca61df3ac97a3b984189a28f Mon Sep 17 00:00:00 2001 From: GogoVega <92022724+GogoVega@users.noreply.github.com> Date: Tue, 21 May 2024 12:58:29 +0200 Subject: [PATCH 2/2] Add missing tooltips to Sidebar --- .../@node-red/editor-client/locales/en-US/editor.json | 1 + .../@node-red/editor-client/locales/fr/editor.json | 1 + .../@node-red/editor-client/src/js/ui/tab-config.js | 4 +++- .../@node-red/editor-client/src/js/ui/tab-help.js | 8 +++++++- 4 files changed, 12 insertions(+), 2 deletions(-) diff --git a/packages/node_modules/@node-red/editor-client/locales/en-US/editor.json b/packages/node_modules/@node-red/editor-client/locales/en-US/editor.json index 34ed30cef..1c4c66240 100644 --- a/packages/node_modules/@node-red/editor-client/locales/en-US/editor.json +++ b/packages/node_modules/@node-red/editor-client/locales/en-US/editor.json @@ -719,6 +719,7 @@ "nodeHelp": "Node Help", "showHelp": "Show help", "showInOutline": "Show in outline", + "hideTopics": "Hide topics", "showTopics": "Show topics", "noHelp": "No help topic selected", "changeLog": "Change Log" diff --git a/packages/node_modules/@node-red/editor-client/locales/fr/editor.json b/packages/node_modules/@node-red/editor-client/locales/fr/editor.json index 6faa1ed24..bf077b3f7 100644 --- a/packages/node_modules/@node-red/editor-client/locales/fr/editor.json +++ b/packages/node_modules/@node-red/editor-client/locales/fr/editor.json @@ -719,6 +719,7 @@ "nodeHelp": "Aide sur les noeuds", "showHelp": "Afficher l'aide", "showInOutline": "Afficher dans les grandes lignes", + "hideTopics": "Masquer les sujets", "showTopics": "Afficher les sujets", "noHelp": "Aucune rubrique d'aide sélectionnée", "changeLog": "Journal des modifications" diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/tab-config.js b/packages/node_modules/@node-red/editor-client/src/js/ui/tab-config.js index e2c8185cb..b8e3aa0ba 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/ui/tab-config.js +++ b/packages/node_modules/@node-red/editor-client/src/js/ui/tab-config.js @@ -382,9 +382,11 @@ RED.sidebar.config = (function() { refreshConfigNodeList(); } }); + RED.popover.tooltip($('#red-ui-sidebar-config-filter-all'), RED._("sidebar.config.showAllConfigNodes")); RED.popover.tooltip($('#red-ui-sidebar-config-filter-unused'), RED._("sidebar.config.showAllUnusedConfigNodes")); - + RED.popover.tooltip($('#red-ui-sidebar-config-collapse-all'), RED._("palette.actions.collapse-all")); + RED.popover.tooltip($('#red-ui-sidebar-config-expand-all'), RED._("palette.actions.expand-all")); } function flashConfigNode(el) { diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/tab-help.js b/packages/node_modules/@node-red/editor-client/src/js/ui/tab-help.js index 8bfc5526e..b3d06f701 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/ui/tab-help.js +++ b/packages/node_modules/@node-red/editor-client/src/js/ui/tab-help.js @@ -36,7 +36,13 @@ RED.sidebar.help = (function() { toolbar = $("
", {class:"red-ui-sidebar-header red-ui-info-toolbar"}).appendTo(content); $('').appendTo(toolbar) var showTOCButton = toolbar.find('#red-ui-sidebar-help-show-toc') - RED.popover.tooltip(showTOCButton,RED._("sidebar.help.showTopics")); + RED.popover.tooltip(showTOCButton, function () { + if ($(showTOCButton).hasClass('selected')) { + return RED._("sidebar.help.hideTopics"); + } else { + return RED._("sidebar.help.showTopics"); + } + }); showTOCButton.on("click",function(e) { e.preventDefault(); if ($(this).hasClass('selected')) {