diff --git a/app/index.html b/app/index.html
index 446caa1..db816f6 100644
--- a/app/index.html
+++ b/app/index.html
@@ -8343,26 +8343,34 @@ Bitcoin.Util = {
});
},
- searchData: function (obsName, patternEval, dbName = this.dbName) {
- return new Promise((resolve, reject) => {
- this.openDB(dbName).then(db => {
- var obs = db.transaction(obsName, "readonly").objectStore(obsName);
- var filteredResult = {}
- let curReq = obs.openCursor();
- curReq.onsuccess = (evt) => {
- var cursor = evt.target.result;
- if (cursor) {
- if (patternEval(cursor.primaryKey, cursor.value))
- filteredResult[cursor.primaryKey] = cursor.value;
- cursor.continue();
- } else
- resolve(filteredResult);
- }
- curReq.onerror = (evt) => reject(
- `Search unsuccessful [${evt.target.error.name}] ${evt.target.error.message}`);
- db.close();
- }).catch(error => reject(error));
- });
+ searchData: function (obsName, options = {}, dbName = this.dbName) {
+ options.lowerKey = options.atKey || options.lowerKey || 0
+ options.upperKey = options.atKey || options.upperKey || false
+ options.patternEval = options.patternEval || ((k,v) => {return true})
+ options.lastOnly = options.lastOnly || false
+ return new Promise((resolve, reject) => {
+ this.openDB(dbName).then(db => {
+ var obs = db.transaction(obsName, "readonly").objectStore(obsName);
+ var filteredResult = {}
+ let curReq = obs.openCursor(
+ options.upperKey ? IDBKeyRange.bound(options.lowerKey,options.upperKey) : IDBKeyRange.lowerBound(options.lowerKey),
+ options.lastOnly ? "prev":"next" );
+ curReq.onsuccess = (evt) => {
+ var cursor = evt.target.result;
+ if (cursor) {
+ if (options.patternEval(cursor.primaryKey, cursor.value)){
+ filteredResult[cursor.primaryKey] = cursor.value;
+ options.lastOnly ? resolve(filteredResult) : cursor.continue();
+ }else
+ cursor.continue();
+ } else
+ resolve(filteredResult);
+ }
+ curReq.onerror = (evt) => reject(
+ `Search unsuccessful [${evt.target.error.name}] ${evt.target.error.message}`);
+ db.close();
+ }).catch(error => reject(error));
+ });
}
}