1
0
mirror of https://github.com/node-red/node-red.git synced 2023-10-10 13:36:53 +02:00

let join also accumulate strings (and not fail)

This commit is contained in:
Dave Conway-Jones 2017-06-15 00:11:35 +01:00
parent 2b2136c468
commit 56405ac903
No known key found for this signature in database
GPG Key ID: 81B04231572A9A2D
3 changed files with 28 additions and 3 deletions

View File

@ -239,6 +239,9 @@
var val = $(this).val(); var val = $(this).val();
$(".node-row-custom").toggle(val==='custom'); $(".node-row-custom").toggle(val==='custom');
$(".form-tips-auto").toggle(val==='auto'); $(".form-tips-auto").toggle(val==='auto');
if (val === "auto") {
$("#node-input-accumulate").attr('checked', false);
}
}); });
$("#node-input-build").change(function(e) { $("#node-input-build").change(function(e) {

View File

@ -354,9 +354,12 @@ module.exports = function(RED) {
currentCount:0, currentCount:0,
payload:{}, payload:{},
targetCount:targetCount, targetCount:targetCount,
type:"object", type:payloadType,
msg:msg msg:msg
} }
if (payloadType === 'string') {
inflight[partId].payload = [];
}
} }
else { else {
inflight[partId] = { inflight[partId] = {
@ -364,7 +367,6 @@ module.exports = function(RED) {
payload:[], payload:[],
targetCount:targetCount, targetCount:targetCount,
type:payloadType, type:payloadType,
joinChar: joinChar,
msg:msg msg:msg
}; };
if (payloadType === 'string') { if (payloadType === 'string') {
@ -374,7 +376,6 @@ module.exports = function(RED) {
} else if (payloadType === 'buffer') { } else if (payloadType === 'buffer') {
inflight[partId].bufferLen = 0; inflight[partId].bufferLen = 0;
} }
} }
if (node.timer > 0) { if (node.timer > 0) {
inflight[partId].timeout = setTimeout(function() { inflight[partId].timeout = setTimeout(function() {

View File

@ -144,6 +144,27 @@ describe('JOIN node', function() {
}); });
}); });
it('should join bits of string back together automatically', function(done) {
var flow = [{id:"n1", type:"join", wires:[["n2"]], joiner:",", build:"string", mode:"auto"},
{id:"n2", type:"helper"}];
helper.load(joinNode, flow, function() {
var n1 = helper.getNode("n1");
var n2 = helper.getNode("n2");
n2.on("input", function(msg) {
try {
msg.should.have.property("payload");
msg.payload.should.equal("A,B,C,D");
done();
}
catch(e) {done(e);}
});
n1.receive({payload:"A", parts:{id:1, type:"string", ch:",", index:0, count:4}});
n1.receive({payload:"B", parts:{id:1, type:"string", ch:",", index:1, count:4}});
n1.receive({payload:"C", parts:{id:1, type:"string", ch:",", index:2, count:4}});
n1.receive({payload:"D", parts:{id:1, type:"string", ch:",", index:3, count:4}});
});
});
it('should join things into an array after a count', function(done) { it('should join things into an array after a count', function(done) {
var flow = [{id:"n1", type:"join", wires:[["n2"]], count:3, joiner:",",mode:"custom"}, var flow = [{id:"n1", type:"join", wires:[["n2"]], count:3, joiner:",",mode:"custom"},
{id:"n2", type:"helper"}]; {id:"n2", type:"helper"}];