mirror of
https://github.com/node-red/node-red.git
synced 2023-10-10 13:36:53 +02:00
add output property select to HTML parse node (#1701)
This commit is contained in:
parent
e8a637498d
commit
3190de873e
@ -671,7 +671,8 @@
|
|||||||
"html": {
|
"html": {
|
||||||
"label": {
|
"label": {
|
||||||
"select": "Selector",
|
"select": "Selector",
|
||||||
"output": "Output"
|
"output": "Output",
|
||||||
|
"in": "in"
|
||||||
},
|
},
|
||||||
"output": {
|
"output": {
|
||||||
"html": "the html content of the elements",
|
"html": "the html content of the elements",
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
<script type="text/x-red" data-template-name="html">
|
<script type="text/x-red" data-template-name="html">
|
||||||
<div class="form-row">
|
<div class="form-row">
|
||||||
<label for="node-input-property"><i class="fa fa-ellipsis-h"></i> <span data-i18n="node-red:common.label.property"></span></label>
|
<label for="node-input-property"><i class="fa fa-ellipsis-h"></i> <span data-i18n="node-red:common.label.property"></span></label>
|
||||||
<input type="text" id="node-input-property" style="width:70%;"/>
|
<input type="text" id="node-input-property" style="width:70%">
|
||||||
</div>
|
</div>
|
||||||
<div class="form-row">
|
<div class="form-row">
|
||||||
<label for="node-input-tag"><i class="fa fa-filter"></i> <span data-i18n="html.label.select"></span></label>
|
<label for="node-input-tag"><i class="fa fa-filter"></i> <span data-i18n="html.label.select"></span></label>
|
||||||
@ -24,6 +24,10 @@
|
|||||||
<option value="multi" data-i18n="html.format.multi"></option>
|
<option value="multi" data-i18n="html.format.multi"></option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="form-row">
|
||||||
|
<label for="node-input-outproperty"> </label>
|
||||||
|
<span data-i18n="html.label.in" style="padding-left:8px; padding-right:2px; vertical-align:-1px;"></span> <input type="text" id="node-input-outproperty" style="width:64%">
|
||||||
|
</div>
|
||||||
<br/>
|
<br/>
|
||||||
<div class="form-row">
|
<div class="form-row">
|
||||||
<label for="node-input-name"><i class="fa fa-tag"></i> <span data-i18n="common.label.name"></span></label>
|
<label for="node-input-name"><i class="fa fa-tag"></i> <span data-i18n="common.label.name"></span></label>
|
||||||
@ -59,6 +63,7 @@
|
|||||||
defaults: {
|
defaults: {
|
||||||
name: {value:""},
|
name: {value:""},
|
||||||
property: {value:"payload"},
|
property: {value:"payload"},
|
||||||
|
outproperty: {value:"payload"},
|
||||||
tag: {value:""},
|
tag: {value:""},
|
||||||
ret: {value:"html"},
|
ret: {value:"html"},
|
||||||
as: {value:"single"}
|
as: {value:"single"}
|
||||||
@ -74,6 +79,7 @@
|
|||||||
},
|
},
|
||||||
oneditprepare: function() {
|
oneditprepare: function() {
|
||||||
$("#node-input-property").typedInput({default:'msg',types:['msg']});
|
$("#node-input-property").typedInput({default:'msg',types:['msg']});
|
||||||
|
$("#node-input-outproperty").typedInput({default:'msg',types:['msg']});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
@ -21,6 +21,7 @@ module.exports = function(RED) {
|
|||||||
function CheerioNode(n) {
|
function CheerioNode(n) {
|
||||||
RED.nodes.createNode(this,n);
|
RED.nodes.createNode(this,n);
|
||||||
this.property = n.property||"payload";
|
this.property = n.property||"payload";
|
||||||
|
this.outproperty = n.outproperty||this.property||"payload";
|
||||||
this.tag = n.tag;
|
this.tag = n.tag;
|
||||||
this.ret = n.ret || "html";
|
this.ret = n.ret || "html";
|
||||||
this.as = n.as || "single";
|
this.as = n.as || "single";
|
||||||
@ -48,7 +49,7 @@ module.exports = function(RED) {
|
|||||||
/* istanbul ignore else */
|
/* istanbul ignore else */
|
||||||
if (pay2) {
|
if (pay2) {
|
||||||
var new_msg = RED.util.cloneMessage(msg);
|
var new_msg = RED.util.cloneMessage(msg);
|
||||||
RED.util.setMessageProperty(new_msg,node.property,pay2);
|
RED.util.setMessageProperty(new_msg,node.outproperty,pay2);
|
||||||
new_msg.parts = {
|
new_msg.parts = {
|
||||||
id: msg._msgid,
|
id: msg._msgid,
|
||||||
index: index,
|
index: index,
|
||||||
@ -68,7 +69,7 @@ module.exports = function(RED) {
|
|||||||
index++;
|
index++;
|
||||||
});
|
});
|
||||||
if (node.as === "single") { // Always return an array - even if blank
|
if (node.as === "single") { // Always return an array - even if blank
|
||||||
RED.util.setMessageProperty(msg,node.property,pay);
|
RED.util.setMessageProperty(msg,node.outproperty,pay);
|
||||||
node.send(msg);
|
node.send(msg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -69,7 +69,7 @@ describe('html node', function() {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should retrieve header contents if asked to by msg.select - alternative property', function(done) {
|
it('should retrieve header contents if asked to by msg.select - alternative in property', function(done) {
|
||||||
fs.readFile(file, 'utf8', function(err, data) {
|
fs.readFile(file, 'utf8', function(err, data) {
|
||||||
var flow = [{id:"n1",type:"html",property:"foo",wires:[["n2"]],func:"return msg;"},
|
var flow = [{id:"n1",type:"html",property:"foo",wires:[["n2"]],func:"return msg;"},
|
||||||
{id:"n2", type:"helper"}];
|
{id:"n2", type:"helper"}];
|
||||||
@ -79,7 +79,7 @@ describe('html node', function() {
|
|||||||
var n2 = helper.getNode("n2");
|
var n2 = helper.getNode("n2");
|
||||||
n2.on("input", function(msg) {
|
n2.on("input", function(msg) {
|
||||||
msg.should.have.property('topic', 'bar');
|
msg.should.have.property('topic', 'bar');
|
||||||
should.equal(msg.foo, 'This is a test page for node 70-HTML');
|
msg.foo[0].should.equal('This is a test page for node 70-HTML');
|
||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
n1.receive({foo:data,topic:"bar",select:"h1"});
|
n1.receive({foo:data,topic:"bar",select:"h1"});
|
||||||
@ -87,6 +87,24 @@ describe('html node', function() {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should retrieve header contents if asked to by msg.select - alternative in and out properties', function(done) {
|
||||||
|
fs.readFile(file, 'utf8', function(err, data) {
|
||||||
|
var flow = [{id:"n1",type:"html",property:"foo",outproperty:"bar",tag:"h1",wires:[["n2"]],func:"return msg;"},
|
||||||
|
{id:"n2", type:"helper"}];
|
||||||
|
|
||||||
|
helper.load(htmlNode, flow, function() {
|
||||||
|
var n1 = helper.getNode("n1");
|
||||||
|
var n2 = helper.getNode("n2");
|
||||||
|
n2.on("input", function(msg) {
|
||||||
|
msg.should.have.property('topic', 'bar');
|
||||||
|
msg.bar[0].should.equal('This is a test page for node 70-HTML');
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
n1.receive({foo:data,topic:"bar"});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
it('should emit an empty array if no matching elements', function(done) {
|
it('should emit an empty array if no matching elements', function(done) {
|
||||||
fs.readFile(file, 'utf8', function(err, data) {
|
fs.readFile(file, 'utf8', function(err, data) {
|
||||||
var flow = [{id:"n1",type:"html",wires:[["n2"]],func:"return msg;"},
|
var flow = [{id:"n1",type:"html",wires:[["n2"]],func:"return msg;"},
|
||||||
|
Loading…
Reference in New Issue
Block a user