diff --git a/node-red-grist/records.html b/node-red-grist/records.html
index 54521eb..7c982e9 100644
--- a/node-red-grist/records.html
+++ b/node-red-grist/records.html
@@ -5,15 +5,24 @@
defaults: {
server:{value:"", type:"grist-server",required:true},
document: {value:"",type:"grist-document",required:true},
- tableId: {value:"",required:true}
+ tableId: {value:"",required:true},
+ filter: {value:"",required:false}
},
inputs:1,
outputs:1,
icon: "font-awesome/fa-table",
label: function() {
return this.tableId || "records";
+ },
+ oneditprepare: function () {
+ $("#node-input-filter").typedInput({
+ type:"json",
+ types:["json"]
+ })
}
});
+
+
diff --git a/node-red-grist/records.js b/node-red-grist/records.js
index e58f92b..57a8132 100644
--- a/node-red-grist/records.js
+++ b/node-red-grist/records.js
@@ -7,12 +7,14 @@ module.exports = function(RED) {
this.document = RED.nodes.getNode(config.document);
this.server = RED.nodes.getNode(config.server);
this.table = config.tableId
+ this.filter = config.filter
+
node.on('input', async function(msg, send, done) {
const protocol=this.server.tlsEnabled === true ? "https" : "http";
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});
- api.fetchTable(this.table).then(data => {
+ api.fetchTable(this.table,filter).then(data => {
node.send({payload:data,topic:this.table})
}).catch(reason => done(reason,"Failed to perform grist request to "+url));