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));