added filter feature
This commit is contained in:
parent
f1de06d486
commit
3e318f4b78
2 changed files with 19 additions and 3 deletions
|
|
@ -5,15 +5,24 @@
|
||||||
defaults: {
|
defaults: {
|
||||||
server:{value:"", type:"grist-server",required:true},
|
server:{value:"", type:"grist-server",required:true},
|
||||||
document: {value:"",type:"grist-document",required:true},
|
document: {value:"",type:"grist-document",required:true},
|
||||||
tableId: {value:"",required:true}
|
tableId: {value:"",required:true},
|
||||||
|
filter: {value:"",required:false}
|
||||||
},
|
},
|
||||||
inputs:1,
|
inputs:1,
|
||||||
outputs:1,
|
outputs:1,
|
||||||
icon: "font-awesome/fa-table",
|
icon: "font-awesome/fa-table",
|
||||||
label: function() {
|
label: function() {
|
||||||
return this.tableId || "records";
|
return this.tableId || "records";
|
||||||
|
},
|
||||||
|
oneditprepare: function () {
|
||||||
|
$("#node-input-filter").typedInput({
|
||||||
|
type:"json",
|
||||||
|
types:["json"]
|
||||||
|
})
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script type="text/html" data-template-name="grist-records">
|
<script type="text/html" data-template-name="grist-records">
|
||||||
|
|
@ -29,6 +38,11 @@
|
||||||
<label for="node-input-tableId"><i class="fa fa-table"></i> Table Name</label>
|
<label for="node-input-tableId"><i class="fa fa-table"></i> Table Name</label>
|
||||||
<input type="text" id="node-input-tableId" placeholder="Table Name">
|
<input type="text" id="node-input-tableId" placeholder="Table Name">
|
||||||
</div>
|
</div>
|
||||||
|
<div class="form-row">
|
||||||
|
<label for="node-input-filter"><i class="fa fa-filter"></i> Filter</label>
|
||||||
|
<input type="text" id="node-input-filter">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,12 +7,14 @@ module.exports = function(RED) {
|
||||||
this.document = RED.nodes.getNode(config.document);
|
this.document = RED.nodes.getNode(config.document);
|
||||||
this.server = RED.nodes.getNode(config.server);
|
this.server = RED.nodes.getNode(config.server);
|
||||||
this.table = config.tableId
|
this.table = config.tableId
|
||||||
|
this.filter = config.filter
|
||||||
|
|
||||||
node.on('input', async function(msg, send, done) {
|
node.on('input', async function(msg, send, done) {
|
||||||
const protocol=this.server.tlsEnabled === true ? "https" : "http";
|
const protocol=this.server.tlsEnabled === true ? "https" : "http";
|
||||||
const url=protocol+"://"+this.server.hostname+":"+this.server.port;
|
const url=protocol+"://"+this.server.hostname+":"+this.server.port;
|
||||||
|
const filter=this.filter && this.filter !== "" ? JSON.parse(this.filter) : undefined
|
||||||
const api = new GristDocAPI(this.document.docid,{apiKey:this.server.apiKey,server:url});
|
const api = new GristDocAPI(this.document.docid,{apiKey:this.server.apiKey,server:url});
|
||||||
api.fetchTable(this.table).then(data => {
|
api.fetchTable(this.table,filter).then(data => {
|
||||||
node.send({payload:data,topic:this.table})
|
node.send({payload:data,topic:this.table})
|
||||||
}).catch(reason => done(reason,"Failed to perform grist request to "+url));
|
}).catch(reason => done(reason,"Failed to perform grist request to "+url));
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue