From 1a8b37b4e3f463d13628fb836192202d07f46bcd Mon Sep 17 00:00:00 2001 From: Dave Conway-Jones Date: Mon, 24 Jun 2024 21:05:00 +0100 Subject: [PATCH 1/2] make using msg.parts optional in join node --- .../nodes/core/sequence/17-split.html | 23 ++++++++++++------- .../@node-red/nodes/core/sequence/17-split.js | 3 ++- .../nodes/locales/en-US/messages.json | 1 + 3 files changed, 18 insertions(+), 9 deletions(-) diff --git a/packages/node_modules/@node-red/nodes/core/sequence/17-split.html b/packages/node_modules/@node-red/nodes/core/sequence/17-split.html index c71d7ad84..db5853538 100644 --- a/packages/node_modules/@node-red/nodes/core/sequence/17-split.html +++ b/packages/node_modules/@node-red/nodes/core/sequence/17-split.html @@ -16,6 +16,10 @@ @@ -234,6 +240,7 @@ }, joiner: { value:"\\n"}, joinerType: { value:"str"}, + useparts: { value:false }, accumulate: { value:"false" }, timeout: {value:""}, count: {value:""}, diff --git a/packages/node_modules/@node-red/nodes/core/sequence/17-split.js b/packages/node_modules/@node-red/nodes/core/sequence/17-split.js index 6e9add270..aafdb6436 100644 --- a/packages/node_modules/@node-red/nodes/core/sequence/17-split.js +++ b/packages/node_modules/@node-red/nodes/core/sequence/17-split.js @@ -444,6 +444,7 @@ module.exports = function(RED) { this.count = Number(n.count || 0); this.joiner = n.joiner||""; this.joinerType = n.joinerType||"str"; + this.useparts = n.useparts || false; this.reduce = (this.mode === "reduce"); if (this.reduce) { @@ -611,7 +612,7 @@ module.exports = function(RED) { return; } - if (node.mode === 'custom' && msg.hasOwnProperty('parts')) { + if (node.mode === 'custom' && msg.hasOwnProperty('parts') && node.useparts === false ) { if (msg.parts.hasOwnProperty('parts')) { msg.parts = { parts: msg.parts.parts }; } 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 560d192c1..1c0ec6090 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 @@ -1046,6 +1046,7 @@ "joinedUsing": "joined using", "send": "Send the message:", "afterCount": "After a number of message parts", + "useparts": "Use existing msg.parts property", "count": "count", "subsequent": "and every subsequent message.", "afterTimeout": "After a timeout following the first message", From 53d8b97fff259b367dbe2a48bad577f7a65f1101 Mon Sep 17 00:00:00 2001 From: Dave Conway-Jones Date: Tue, 25 Jun 2024 12:57:09 +0100 Subject: [PATCH 2/2] join node - honour 3.x behaviour for old instances. but don't use msg.parts for new instances in manual join mode unless set. --- .../@node-red/nodes/core/sequence/17-split.html | 6 ++++++ .../node_modules/@node-red/nodes/core/sequence/17-split.js | 3 ++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/node_modules/@node-red/nodes/core/sequence/17-split.html b/packages/node_modules/@node-red/nodes/core/sequence/17-split.html index db5853538..d19be77f5 100644 --- a/packages/node_modules/@node-red/nodes/core/sequence/17-split.html +++ b/packages/node_modules/@node-red/nodes/core/sequence/17-split.html @@ -266,6 +266,12 @@ }, oneditprepare: function() { var node = this; + $("#node-input-useparts").on("change", function(e) { + if (node.useparts === undefined) { + node.useparts = true; + $("#node-input-useparts").attr('checked', true); + } + }); $("#node-input-mode").on("change", function(e) { var val = $(this).val(); diff --git a/packages/node_modules/@node-red/nodes/core/sequence/17-split.js b/packages/node_modules/@node-red/nodes/core/sequence/17-split.js index aafdb6436..46ecb2636 100644 --- a/packages/node_modules/@node-red/nodes/core/sequence/17-split.js +++ b/packages/node_modules/@node-red/nodes/core/sequence/17-split.js @@ -444,7 +444,8 @@ module.exports = function(RED) { this.count = Number(n.count || 0); this.joiner = n.joiner||""; this.joinerType = n.joinerType||"str"; - this.useparts = n.useparts || false; + if (n.useparts === undefined) { this.useparts = true; } + else { this.useparts = n.useparts || false; } this.reduce = (this.mode === "reduce"); if (this.reduce) {