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();
$(".node-row-custom").toggle(val==='custom');
$(".form-tips-auto").toggle(val==='auto');
if (val === "auto") {
$("#node-input-accumulate").attr('checked', false);
}
});
$("#node-input-build").change(function(e) {

View File

@ -354,9 +354,12 @@ module.exports = function(RED) {
currentCount:0,
payload:{},
targetCount:targetCount,
type:"object",
type:payloadType,
msg:msg
}
if (payloadType === 'string') {
inflight[partId].payload = [];
}
}
else {
inflight[partId] = {
@ -364,7 +367,6 @@ module.exports = function(RED) {
payload:[],
targetCount:targetCount,
type:payloadType,
joinChar: joinChar,
msg:msg
};
if (payloadType === 'string') {
@ -374,7 +376,6 @@ module.exports = function(RED) {
} else if (payloadType === 'buffer') {
inflight[partId].bufferLen = 0;
}
}
if (node.timer > 0) {
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) {
var flow = [{id:"n1", type:"join", wires:[["n2"]], count:3, joiner:",",mode:"custom"},
{id:"n2", type:"helper"}];