diff --git a/index.html b/index.html
index a78a65d..9786771 100644
--- a/index.html
+++ b/index.html
@@ -5114,81 +5114,43 @@
});
},
- //Read Data Sent from Address (if limit is specified, only return newest sent data)
- readSentData: function (addr, limit = 0) {
- return new Promise((resolve, reject) => {
- this.readAllTxs(addr).then(items => {
- var filteredItems = [];
- if (limit <= 0) limit = items.length;
- for (i = 0; i < items.length && filteredItems.length < limit; i++)
- if (items[i].vin[0].addr === addr)
- filteredItems.push(items[i].floData);
- console.log(filteredItems);
- resolve(filteredItems);
+ /*Read flo Data from txs of given Address
+ options can be used to filter data
+ 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] == '$'})
+ */
+ readData: function(addr,options = {}){
+ 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 => {
- 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)
+ reject(error);
});
});
}