Improved Read Data from blockchain via API
Replaced floBlockchainAPI's readSentData, readDataPattern, readSentDataPattern, readDataContains, readSentDataContains with a improved version 'readData'
readData is Promisfied function that reads and resolves floData from blockchain using API
Arguments :
addr - address from which the floData should be read
options - (optional object, default = {})
Options :
limit - maximum number of filtered data (default = 1000, negative = no limit)
ignoreOld - ignore old txs (default = 0)
sentOnly - filters only sent data
pattern - filters data that starts with a pattern
contains - filters data that contains a string
filter - custom filter funtion for floData (eg . filter: d => {return d[0] == '$'})
This commit is contained in:
parent
8fd579dc5e
commit
9da3168f45
110
index.html
110
index.html
@ -5114,81 +5114,43 @@
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
//Read Data Sent from Address (if limit is specified, only return newest sent data)
|
/*Read flo Data from txs of given Address
|
||||||
readSentData: function (addr, limit = 0) {
|
options can be used to filter data
|
||||||
return new Promise((resolve, reject) => {
|
limit : maximum number of filtered data (default = 1000, negative = no limit)
|
||||||
this.readAllTxs(addr).then(items => {
|
ignoreOld : ignore old txs (default = 0)
|
||||||
var filteredItems = [];
|
sentOnly : filters only sent data
|
||||||
if (limit <= 0) limit = items.length;
|
pattern : filters data that starts with a pattern
|
||||||
for (i = 0; i < items.length && filteredItems.length < limit; i++)
|
contains : filters data that contains a string
|
||||||
if (items[i].vin[0].addr === addr)
|
filter : custom filter funtion for floData (eg . filter: d => {return d[0] == '$'})
|
||||||
filteredItems.push(items[i].floData);
|
*/
|
||||||
console.log(filteredItems);
|
readData: function(addr,options = {}){
|
||||||
resolve(filteredItems);
|
options.limit = options.limit | 1000
|
||||||
|
options.ignoreOld = options.ignoreOld | 0
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
this.promisedAJAX("GET", `api/addrs/${addr}/txs?from=0&to=1`).then(response => {
|
||||||
|
var newItems = JSON.parse(response).totalItems - options.ignoreOld;
|
||||||
|
this.promisedAJAX("GET", `api/addrs/${addr}/txs?from=0&to=${newItems*2}`).then(response => {
|
||||||
|
response = JSON.parse(response)
|
||||||
|
if (options.limit <= 0)
|
||||||
|
options.limit = response.items.length;
|
||||||
|
var filteredData = [];
|
||||||
|
for (i = 0; i < (response.totalItems - options.ignoreOld) && filteredData.length < options.limit; i++){
|
||||||
|
if(options.sentOnly && response.items[i].vin[0].addr !== addr)
|
||||||
|
continue;
|
||||||
|
if(options.pattern && !response.items[i].floData.startsWith(options.pattern, 0) && !response.items[i].floData.startsWith(options.pattern, 2))
|
||||||
|
continue;
|
||||||
|
if(options.contains && !response.items[i].floData.includes(options.contains))
|
||||||
|
continue;
|
||||||
|
if(options.filter && !options.filter(response.items[i].floData))
|
||||||
|
continue;
|
||||||
|
filteredData.push(response.items[i].floData);
|
||||||
|
}
|
||||||
|
resolve(filteredData);
|
||||||
|
}).catch(error => {
|
||||||
|
reject(error);
|
||||||
|
});
|
||||||
}).catch(error => {
|
}).catch(error => {
|
||||||
reject(error)
|
reject(error);
|
||||||
});
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
//Read newest 'limit' Data matching 'pattern'
|
|
||||||
readDataPattern: function (addr, pattern, jsonType = false, limit = 1000) {
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
this.readAllTxs(addr).then(items => {
|
|
||||||
var filteredItems = [];
|
|
||||||
var pos = (jsonType ? 2 : 0);
|
|
||||||
for (i = 0; i < items.length && filteredItems.length < limit; i++)
|
|
||||||
if (items[i].floData.startsWith(pattern, pos))
|
|
||||||
filteredItems.push(items[i].floData);
|
|
||||||
resolve(filteredItems);
|
|
||||||
}).catch(error => {
|
|
||||||
reject(error)
|
|
||||||
});
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
//Read newest 'limit' Data Sent from Address and matching 'pattern'
|
|
||||||
readSentDataPattern: function (addr, pattern, jsonType = false, limit = 1000) {
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
this.readAllTxs(addr).then(items => {
|
|
||||||
var filteredItems = [];
|
|
||||||
var pos = (jsonType ? 2 : 0);
|
|
||||||
for (i = 0; i < items.length && filteredItems.length < limit; i++)
|
|
||||||
if (items[i].vin[0].addr === addr && items[i].floData.startsWith(pattern, pos))
|
|
||||||
filteredItems.push(items[i].floData);
|
|
||||||
resolve(filteredItems);
|
|
||||||
}).catch(error => {
|
|
||||||
reject(error)
|
|
||||||
});
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
//Read newest 'limit' Data containing 'keyword'
|
|
||||||
readDataContains: function (addr, keyword, limit = 1000) {
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
this.readAllTxs(addr).then(items => {
|
|
||||||
var filteredItems = [];
|
|
||||||
for (i = 0; i < items.length && filteredItems.length < limit; i++)
|
|
||||||
if (items[i].floData.includes(keyword))
|
|
||||||
filteredItems.push(items[i].floData);
|
|
||||||
resolve(filteredItems);
|
|
||||||
}).catch(error => {
|
|
||||||
reject(error)
|
|
||||||
});
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
//Read newest 'limit' Data Sent from Address and containing 'keyword'
|
|
||||||
readSentDataContains: function (addr, keyword, limit = 1000) {
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
this.readAllTxs(addr).then(items => {
|
|
||||||
var filteredItems = [];
|
|
||||||
for (i = 0; i < items.length && filteredItems.length < limit; i++)
|
|
||||||
if (items[i].vin[0].addr === addr && items[i].floData.includes(keyword))
|
|
||||||
filteredItems.push(items[i].floData);
|
|
||||||
resolve(filteredItems);
|
|
||||||
}).catch(error => {
|
|
||||||
reject(error)
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user