From 16f8b78b3996445c39a78ee4c18fe43dd96f1141 Mon Sep 17 00:00:00 2001 From: Kazuhito Yokoi Date: Sat, 4 Feb 2023 11:16:28 +0900 Subject: [PATCH 01/20] Show scrollbar in notification dialog only when needed --- .../@node-red/editor-client/src/sass/notifications.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/node_modules/@node-red/editor-client/src/sass/notifications.scss b/packages/node_modules/@node-red/editor-client/src/sass/notifications.scss index 7d7544e2e..c0e87b7ba 100644 --- a/packages/node_modules/@node-red/editor-client/src/sass/notifications.scss +++ b/packages/node_modules/@node-red/editor-client/src/sass/notifications.scss @@ -32,7 +32,7 @@ color: var(--red-ui-primary-text-color); border: 1px solid var(--red-ui-notification-border-default); border-left-width: 16px; - overflow: scroll; + overflow: auto; max-height: 80vh; .ui-dialog-buttonset { margin-top: 20px; From bd0b0077a3f011e040cbb92d9d767b1b77bfe4df Mon Sep 17 00:00:00 2001 From: Kazuhito Yokoi Date: Sat, 4 Feb 2023 20:28:08 +0900 Subject: [PATCH 02/20] Support i18n of lock/unlock button in flow property UI --- .../@node-red/editor-client/locales/en-US/editor.json | 4 +++- .../@node-red/editor-client/locales/ja/editor.json | 4 +++- .../node_modules/@node-red/editor-client/src/js/ui/editor.js | 4 ++-- 3 files changed, 8 insertions(+), 4 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 9400060c1..92f5fc483 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 @@ -25,7 +25,9 @@ "disable": "Disable", "upload": "Upload", "lock": "Lock", - "unlock": "Unlock" + "unlock": "Unlock", + "locked": "Locked", + "unlocked": "Unlocked" }, "type": { "string": "string", diff --git a/packages/node_modules/@node-red/editor-client/locales/ja/editor.json b/packages/node_modules/@node-red/editor-client/locales/ja/editor.json index 4878763a6..d09a4895a 100644 --- a/packages/node_modules/@node-red/editor-client/locales/ja/editor.json +++ b/packages/node_modules/@node-red/editor-client/locales/ja/editor.json @@ -25,7 +25,9 @@ "disable": "無効", "upload": "アップロード", "lock": "固定", - "unlock": "固定を解除" + "unlock": "固定を解除", + "locked": "固定済み", + "unlocked": "固定なし" }, "type": { "string": "文字列", 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 ec02c6281..bd8bcc4fb 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 @@ -1922,9 +1922,9 @@ RED.editor = (function() { workspace.locked = false; } $('').prop("checked",workspace.locked).appendTo(trayFooterRight).toggleButton({ - enabledLabel: 'Unlocked', + enabledLabel: RED._("common.label.unlocked"), enabledIcon: "fa-unlock-alt", - disabledLabel: 'Locked', + disabledLabel: RED._("common.label.locked"), disabledIcon: "fa-lock", invertState: true }) From 3e4cad3a792c3f04f3a81dfedb1336cb2de77d98 Mon Sep 17 00:00:00 2001 From: Kazuhito Yokoi Date: Sat, 4 Feb 2023 20:38:08 +0900 Subject: [PATCH 03/20] Add Japanese translations for the action list --- .../@node-red/editor-client/locales/ja/editor.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/node_modules/@node-red/editor-client/locales/ja/editor.json b/packages/node_modules/@node-red/editor-client/locales/ja/editor.json index d09a4895a..8e8a914aa 100644 --- a/packages/node_modules/@node-red/editor-client/locales/ja/editor.json +++ b/packages/node_modules/@node-red/editor-client/locales/ja/editor.json @@ -1378,6 +1378,9 @@ "copy-item-url": "要素のURLをコピー", "copy-item-edit-url": "要素の編集URLをコピー", "move-flow-to-start": "フローを先頭に移動", - "move-flow-to-end": "フローを末尾に移動" + "move-flow-to-end": "フローを末尾に移動", + "lock-flow": "フローを固定", + "unlock-flow": "フローの固定を解除", + "show-node-help": "ノードのヘルプを表示" } } From ede3ac4282578334256333e487e6817598e8807d Mon Sep 17 00:00:00 2001 From: Kazuhito Yokoi Date: Sat, 4 Feb 2023 20:55:34 +0900 Subject: [PATCH 04/20] Add tooltip for show/hide button on info sidebar --- .../@node-red/editor-client/locales/en-US/editor.json | 2 ++ .../@node-red/editor-client/locales/ja/editor.json | 2 ++ .../@node-red/editor-client/src/js/ui/tab-info-outliner.js | 4 ++++ 3 files changed, 8 insertions(+) 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 0300a220f..e6beed2e1 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 @@ -683,6 +683,8 @@ "empty": "empty", "globalConfig": "Global Configuration Nodes", "triggerAction": "Trigger action", + "showFlow": "Show", + "hideFlow": "Hide", "find": "Find in workspace" }, "help": { diff --git a/packages/node_modules/@node-red/editor-client/locales/ja/editor.json b/packages/node_modules/@node-red/editor-client/locales/ja/editor.json index b07b8e583..b5939cec0 100644 --- a/packages/node_modules/@node-red/editor-client/locales/ja/editor.json +++ b/packages/node_modules/@node-red/editor-client/locales/ja/editor.json @@ -683,6 +683,8 @@ "empty": "空", "globalConfig": "グローバル設定ノード", "triggerAction": "アクションを実行", + "showFlow": "表示", + "hideFlow": "非表示", "find": "ワークスペース内を検索" }, "help": { diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/tab-info-outliner.js b/packages/node_modules/@node-red/editor-client/src/js/ui/tab-info-outliner.js index 32491f297..2dc18579f 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/ui/tab-info-outliner.js +++ b/packages/node_modules/@node-red/editor-client/src/js/ui/tab-info-outliner.js @@ -135,6 +135,10 @@ RED.sidebar.info.outliner = (function() { RED.workspaces.show(n.id, null, true); } }); + RED.popover.tooltip(toggleVisibleButton, function () { + var isHidden = !div.hasClass("red-ui-info-outline-item-hidden"); + return RED._("sidebar.info." + (isHidden ? "hideFlow" : "showFlow")); + }); } if (n.type !== 'subflow') { var toggleButton = $('').appendTo(controls).on("click",function(evt) { From 8740ec55704ad46282b3428cce62b3adfc42e63d Mon Sep 17 00:00:00 2001 From: Marcus Sonntag Date: Sat, 4 Feb 2023 21:03:30 +0100 Subject: [PATCH 05/20] Added editor feature for connecting multiple nodes to single node --- .../editor-client/src/js/ui/view-tools.js | 57 +++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/view-tools.js b/packages/node_modules/@node-red/editor-client/src/js/ui/view-tools.js index f46167b24..302222fae 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/ui/view-tools.js +++ b/packages/node_modules/@node-red/editor-client/src/js/ui/view-tools.js @@ -840,6 +840,62 @@ RED.view.tools = (function() { } } + function wireMultipleToNode() { + if (RED.workspaces.isActiveLocked()) { + return + } + var selection = RED.view.selection(); + if (selection.nodes) { + if (selection.nodes.length > 1) { + var targetNode = selection.nodes[selection.nodes.length - 1]; + if (targetNode.inputs === 0) { + return; + } + var i = 0; + var newLinks = []; + for (i = 0; i < selection.nodes.length - 1; i++) { + var sourceNode = selection.nodes[i]; + if (sourceNode.outputs > 0) { + + // Wire the first output to the target that has no link to the target yet. + // This allows for connecting all combinations of inputs/outputs. + // The user may then delete links quickly that aren't needed. + var sourceConnectedOutports = RED.nodes.filterLinks({ + source: sourceNode, + target: targetNode + }); + + // Get outport indices that have no link yet + var sourceOutportIndices = Array.from({ length: sourceNode.outputs }, (_, i) => i); + var sourceConnectedOutportIndices = sourceConnectedOutports.map( x => x.sourcePort ); + var sourceFreeOutportIndices = sourceOutportIndices.filter(x => !sourceConnectedOutportIndices.includes(x)); + + // Does an unconnected source port exist? + if( sourceFreeOutportIndices.length == 0 ) continue; + + // Connect the first free outport to the target + var newLink = { + source: sourceNode, + target: targetNode, + sourcePort: sourceFreeOutportIndices[0] + } + RED.nodes.addLink(newLink); + newLinks.push(newLink); + } + } + if (newLinks.length > 0) { + RED.history.push({ + t: 'add', + links: newLinks, + dirty: RED.nodes.dirty() + }) + RED.nodes.dirty(true); + RED.view.redraw(true); + } + } + } + } + /** * Splits selected wires and re-joins them with link-out+link-in * @param {Object || Object[]} wires The wire(s) to split and replace with link-out, link-in nodes. @@ -1307,6 +1363,7 @@ RED.view.tools = (function() { RED.actions.add("core:wire-series-of-nodes", function() { wireSeriesOfNodes() }) RED.actions.add("core:wire-node-to-multiple", function() { wireNodeToMultiple() }) + RED.actions.add("core:wire-multiple-to-node", function() { wireMultipleToNode() }) RED.actions.add("core:split-wire-with-link-nodes", function () { splitWiresWithLinkNodes() }); RED.actions.add("core:split-wires-with-junctions", function () { addJunctionsToWires() }); From 4c7c855f2c3a879089d8e16f9276bc45a5e10167 Mon Sep 17 00:00:00 2001 From: sonntam Date: Sat, 4 Feb 2023 21:29:54 +0100 Subject: [PATCH 06/20] fix code style --- .../@node-red/editor-client/src/js/ui/view-tools.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/view-tools.js b/packages/node_modules/@node-red/editor-client/src/js/ui/view-tools.js index 302222fae..a22f65f76 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/ui/view-tools.js +++ b/packages/node_modules/@node-red/editor-client/src/js/ui/view-tools.js @@ -871,7 +871,9 @@ RED.view.tools = (function() { var sourceFreeOutportIndices = sourceOutportIndices.filter(x => !sourceConnectedOutportIndices.includes(x)); // Does an unconnected source port exist? - if( sourceFreeOutportIndices.length == 0 ) continue; + if (sourceFreeOutportIndices.length == 0) { + continue; + } // Connect the first free outport to the target var newLink = { From 78f93dc11ad4776177c80e0a3856f96cee4f0580 Mon Sep 17 00:00:00 2001 From: Kazuhito Yokoi Date: Sun, 5 Feb 2023 18:58:58 +0900 Subject: [PATCH 07/20] Fix image URLs for v3.0 tour --- .../@node-red/editor-client/src/tours/3.0/welcome.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/node_modules/@node-red/editor-client/src/tours/3.0/welcome.js b/packages/node_modules/@node-red/editor-client/src/tours/3.0/welcome.js index 7d095ba8c..80f1a6f9c 100644 --- a/packages/node_modules/@node-red/editor-client/src/tours/3.0/welcome.js +++ b/packages/node_modules/@node-red/editor-client/src/tours/3.0/welcome.js @@ -17,7 +17,7 @@ export default { "en-US": "Context Menu", "ja": "コンテキストメニュー" }, - image: 'images/context-menu.png', + image: '3.0/images/context-menu.png', description: { "en-US": `

The editor now has its own context menu when you right-click in the workspace.

@@ -32,7 +32,7 @@ export default { "en-US": "Wire Junctions", "ja": "分岐点をワイヤーに追加" }, - image: 'images/junction-slice.gif', + image: '3.0/images/junction-slice.gif', description: { "en-US": `

To make it easier to route wires around your flows, it is now possible to add junction nodes that give @@ -48,7 +48,7 @@ export default { "en-US": "Wire Junctions", "ja": "分岐点をワイヤーに追加" }, - image: 'images/junction-quick-add.png', + image: '3.0/images/junction-quick-add.png', description: { "en-US": `

Junctions can also be added using the quick-add dialog.

The dialog is opened by holding the Ctrl (or Cmd) key when @@ -62,7 +62,7 @@ export default { "en-US": "Debug Path Tooltip", "ja": "デバッグパスのツールチップ" }, - image: 'images/debug-path-tooltip.png', + image: '3.0/images/debug-path-tooltip.png', description: { "en-US": `

When hovering over a node name in the Debug sidebar, a new tooltip shows the full location of the node.

@@ -81,7 +81,7 @@ export default { "en-US": "Continuous Search", "ja": "連続した検索" }, - image: 'images/continuous-search.png', + image: '3.0/images/continuous-search.png', description: { "en-US": `

When searching for things in the editor, a new toolbar in the workspace provides options to quickly jump between @@ -94,7 +94,7 @@ export default { "en-US": "New wiring actions", "ja": "新しいワイヤー操作" }, - image: "images/split-wire-with-links.gif", + image: "3.0/images/split-wire-with-links.gif", description: { "en-US": `

A new action has been added that will replace a wire with a pair of connected Link nodes:

    From 4477b9ac185be86bf4c7e439dc25b6a3e46883c7 Mon Sep 17 00:00:00 2001 From: Kazuhito Yokoi Date: Mon, 6 Feb 2023 00:53:22 +0900 Subject: [PATCH 08/20] Apply mermaid diagram for project settings UI --- .../editor-client/src/js/ui/projects/projectSettings.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/projects/projectSettings.js b/packages/node_modules/@node-red/editor-client/src/js/ui/projects/projectSettings.js index dd3191539..b8f1558a6 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/ui/projects/projectSettings.js +++ b/packages/node_modules/@node-red/editor-client/src/js/ui/projects/projectSettings.js @@ -165,6 +165,9 @@ RED.projects.settings = (function() { } var description = addTargetToExternalLinks($(''+desc+'')).appendTo(container); description.find(".red-ui-text-bidi-aware").contents().filter(function() { return this.nodeType === 3 && this.textContent.trim() !== "" }).wrap( "" ); + setTimeout(function () { + mermaid.init(); + }, 200); } function editSummary(activeProject, summary, container, version, versionContainer) { From 4fda59a5858b1a40aef5474a1d3f3b17d02aa830 Mon Sep 17 00:00:00 2001 From: Kazuhito Yokoi Date: Fri, 10 Feb 2023 16:49:29 +0900 Subject: [PATCH 09/20] Add validator for complete node --- .../@node-red/nodes/core/common/24-complete.html | 11 ++++++++++- .../@node-red/nodes/locales/en-US/messages.json | 5 ++++- .../@node-red/nodes/locales/ja/messages.json | 5 ++++- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/packages/node_modules/@node-red/nodes/core/common/24-complete.html b/packages/node_modules/@node-red/nodes/core/common/24-complete.html index b2d406bb5..2f68a0fcf 100644 --- a/packages/node_modules/@node-red/nodes/core/common/24-complete.html +++ b/packages/node_modules/@node-red/nodes/core/common/24-complete.html @@ -18,7 +18,16 @@ color:"#c0edc0", defaults: { name: {value:""}, - scope: {value:[], type:"*[]"}, + scope: { + value: [], + type: "*[]", + validate: function (v, opt) { + if (v.length > 0) { + return true; + } + return RED._("node-red:complete.errors.scopeUndefined"); + } + }, uncaught: {value:false} }, inputs:0, diff --git a/packages/node_modules/@node-red/nodes/locales/en-US/messages.json b/packages/node_modules/@node-red/nodes/locales/en-US/messages.json index 7fcd5eadc..a683b1552 100644 --- a/packages/node_modules/@node-red/nodes/locales/en-US/messages.json +++ b/packages/node_modules/@node-red/nodes/locales/en-US/messages.json @@ -119,7 +119,10 @@ } }, "complete": { - "completeNodes": "complete: __number__" + "completeNodes": "complete: __number__", + "errors": { + "scopeUndefined": "scope undefined" + } }, "debug": { "output": "Output", diff --git a/packages/node_modules/@node-red/nodes/locales/ja/messages.json b/packages/node_modules/@node-red/nodes/locales/ja/messages.json index b7fa20b02..cc93e92b1 100644 --- a/packages/node_modules/@node-red/nodes/locales/ja/messages.json +++ b/packages/node_modules/@node-red/nodes/locales/ja/messages.json @@ -119,7 +119,10 @@ } }, "complete": { - "completeNodes": "complete: __number__" + "completeNodes": "complete: __number__", + "errors": { + "scopeUndefined": "スコープが未定義" + } }, "debug": { "output": "対象", From 81331e68d2e4a64c24b22feb59e97e1ad8a2281f Mon Sep 17 00:00:00 2001 From: Kazuhito Yokoi Date: Fri, 10 Feb 2023 18:55:10 +0900 Subject: [PATCH 10/20] Add validator for link call node --- .../@node-red/nodes/core/common/60-link.html | 13 +++++++++++-- .../@node-red/nodes/core/common/60-link.js | 4 ++-- .../@node-red/nodes/locales/en-US/messages.json | 5 +++-- .../@node-red/nodes/locales/ja/messages.json | 5 +++-- 4 files changed, 19 insertions(+), 8 deletions(-) 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 4b8c9a3d6..5c16929c3 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 @@ -1,4 +1,3 @@ -