mirror of
https://github.com/node-red/node-red.git
synced 2025-03-01 10:36:34 +00:00
Update file node to support Property Out
This commit is contained in:
parent
f1e54c959b
commit
4a3b224ce2
@ -1,5 +1,9 @@
|
||||
|
||||
<script type="text/html" data-template-name="file">
|
||||
<div class="form-row">
|
||||
<label for="node-input-name"><i class="fa fa-tag"></i> <span data-i18n="common.label.name"></span></label>
|
||||
<input type="text" id="node-input-name">
|
||||
</div>
|
||||
<div class="form-row node-input-filename">
|
||||
<label for="node-input-filename"><i class="fa fa-file"></i> <span data-i18n="file.label.filename"></span></label>
|
||||
<input id="node-input-filename" type="text">
|
||||
@ -28,14 +32,14 @@
|
||||
<select type="text" id="node-input-encoding" style="width: 250px;">
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<label for="node-input-name"><i class="fa fa-tag"></i> <span data-i18n="common.label.name"></span></label>
|
||||
<input type="text" id="node-input-name">
|
||||
</div>
|
||||
<div class="form-tips"><span data-i18n="file.tip"></span></div>
|
||||
</script>
|
||||
|
||||
<script type="text/html" data-template-name="file in">
|
||||
<div class="form-row">
|
||||
<label for="node-input-name"><i class="fa fa-tag"></i> <span data-i18n="common.label.name"></span></label>
|
||||
<input type="text" id="node-input-name">
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<label for="node-input-filename"><i class="fa fa-file"></i> <span data-i18n="file.label.filename"></span></label>
|
||||
<input id="node-input-filename" type="text">
|
||||
@ -61,8 +65,8 @@
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<label for="node-input-name"><i class="fa fa-tag"></i> <span data-i18n="common.label.name"></span></label>
|
||||
<input type="text" id="node-input-name">
|
||||
<label for="node-input-propertyOut"><i class="fa fa-sign-out"></i> <span data-i18n="common.label.propertyOut"></span></label>
|
||||
<input type="text" id="node-input-propertyOut" style="width:70%;"/>
|
||||
</div>
|
||||
<div class="form-tips"><span data-i18n="file.tip"></span></div>
|
||||
</script>
|
||||
@ -299,6 +303,9 @@
|
||||
name: {value:""},
|
||||
filename: {value:"", validate: RED.validators.typedInput({ typeField: 'filenameType' }) },
|
||||
filenameType: {value:"str"},
|
||||
propertyOut: {value:"payload",required:true,
|
||||
validate: RED.validators.typedInput({ type: 'msg', allowUndefined: true}),
|
||||
label:RED._("node-red:common.label.propertyOut")},
|
||||
format: {value:"utf8"},
|
||||
chunk: {value:false},
|
||||
sendError: {value: false},
|
||||
@ -345,6 +352,10 @@
|
||||
types: [{label:RED._("node-red:file.label.path"), value:"str", icon:""}, "msg", "jsonata", "env"],
|
||||
typeField: $("#node-input-filenameType")
|
||||
});
|
||||
if (this.propertyOut === undefined) {
|
||||
$("#node-input-propertyOut").val("payload");
|
||||
}
|
||||
$("#node-input-propertyOut").typedInput({default:'msg',types:['msg']});
|
||||
if(typeof node.filenameType == 'undefined') {
|
||||
//existing node AND filenameType is not set - inplace (compatible) upgrade to new typedInput
|
||||
if(node.filename == "") { //was using empty value to denote msg.filename - set typedInput to match
|
||||
|
@ -286,6 +286,7 @@ module.exports = function(RED) {
|
||||
RED.nodes.createNode(this,n);
|
||||
this.filename = n.filename;
|
||||
this.filenameType = n.filenameType;
|
||||
this.propertyOut = n.propertyOut || "payload";
|
||||
this.format = n.format;
|
||||
this.chunk = false;
|
||||
this.encoding = n.encoding || "none";
|
||||
@ -370,7 +371,7 @@ module.exports = function(RED) {
|
||||
m.topic = msg.topic;
|
||||
m.filename = msg.filename;
|
||||
}
|
||||
m.payload = bits[i];
|
||||
RED.util.setMessageProperty(m,node.propertyOut,bits[i]);
|
||||
m.parts= {index:count, ch:ch, type:type, id:msg._msgid}
|
||||
count += 1;
|
||||
nodeSend(m);
|
||||
@ -386,7 +387,7 @@ module.exports = function(RED) {
|
||||
m.topic = msg.topic;
|
||||
m.filename = msg.filename;
|
||||
}
|
||||
m.payload = chunk;
|
||||
RED.util.setMessageProperty(m,node.propertyOut,chunk);
|
||||
m.parts = {index:count, ch:ch, type:type, id:msg._msgid}
|
||||
count += 1;
|
||||
if (chunk.length < hwm) { // last chunk is smaller that high water mark = eof
|
||||
@ -405,7 +406,7 @@ module.exports = function(RED) {
|
||||
node.error(err, msg);
|
||||
if (node.sendError) {
|
||||
var sendMessage = RED.util.cloneMessage(msg);
|
||||
delete sendMessage.payload;
|
||||
delete sendMessage[node.propertyOut];
|
||||
sendMessage.error = err;
|
||||
nodeSend(sendMessage);
|
||||
}
|
||||
@ -414,9 +415,10 @@ module.exports = function(RED) {
|
||||
.on('end', function() {
|
||||
if (node.chunk === false) {
|
||||
if (node.format === "utf8") {
|
||||
msg.payload = decode(lines, node.encoding);
|
||||
RED.util.setMessageProperty(m,node.propertyOut,decode(lines, node.encoding));
|
||||
} else {
|
||||
RED.util.setMessageProperty(m,node.propertyOut,lines);
|
||||
}
|
||||
else { msg.payload = lines; }
|
||||
nodeSend(msg);
|
||||
}
|
||||
else if (node.format === "lines") {
|
||||
@ -428,7 +430,7 @@ module.exports = function(RED) {
|
||||
m.topic = msg.topic;
|
||||
m.filename = msg.filename;
|
||||
}
|
||||
m.payload = spare;
|
||||
RED.util.setMessageProperty(m,node.propertyOut,spare);
|
||||
m.parts = {
|
||||
index: count,
|
||||
count: count + 1,
|
||||
|
Loading…
x
Reference in New Issue
Block a user