Update FLO_webWallet_testnet.html
This commit is contained in:
parent
cb423e5a7d
commit
cc690d61b4
@ -2,6 +2,11 @@
|
|||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title>FLO walletless</title>
|
<title>FLO walletless</title>
|
||||||
|
<style>
|
||||||
|
table, th, td {
|
||||||
|
border: 1px solid black;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<script>
|
<script>
|
||||||
@ -9,6 +14,8 @@
|
|||||||
const testnet = `https://testnet.flocha.in`;
|
const testnet = `https://testnet.flocha.in`;
|
||||||
|
|
||||||
let server = testnet;
|
let server = testnet;
|
||||||
|
window["loadwait"] = false;
|
||||||
|
window["refreshwait"] = false;
|
||||||
|
|
||||||
const fee = 0.0005;
|
const fee = 0.0005;
|
||||||
</script>
|
</script>
|
||||||
@ -45,7 +52,7 @@
|
|||||||
Enter Address : <input type="text" id="getAddr"><br/>
|
Enter Address : <input type="text" id="getAddr"><br/>
|
||||||
<button id="getData" onclick="monitorData()">Monitor Data</button><br/>
|
<button id="getData" onclick="monitorData()">Monitor Data</button><br/>
|
||||||
<button id="clearLocalData" onclick="clearLocalData()">Clear Local Data</button>
|
<button id="clearLocalData" onclick="clearLocalData()">Clear Local Data</button>
|
||||||
<div id="dispMsg"><h3>Received FLO Data : </h3><br/><table id="dispfloData" border="1"><tr><td>Sender</td><td>Receiver</td><td>Time</td><td>FLO data</td></tr><table></div>
|
<div id="dispMsg"><h3>Received FLO Data : </h3><br/></div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -4908,7 +4915,7 @@ Bitcoin.Util = {
|
|||||||
let addrList = addrs.split(',');
|
let addrList = addrs.split(',');
|
||||||
addrList = Array.from(new Set(addrList));
|
addrList = Array.from(new Set(addrList));
|
||||||
var result = "";
|
var result = "";
|
||||||
var totBal = 0;
|
var totBal = 0.0;
|
||||||
var flag = 0;
|
var flag = 0;
|
||||||
addrList.forEach(function(addr){
|
addrList.forEach(function(addr){
|
||||||
if (!validateAddr(addr)){
|
if (!validateAddr(addr)){
|
||||||
@ -4917,8 +4924,8 @@ Bitcoin.Util = {
|
|||||||
}
|
}
|
||||||
var response = ajax("GET",`api/addr/${addr}/balance`);
|
var response = ajax("GET",`api/addr/${addr}/balance`);
|
||||||
if(response){
|
if(response){
|
||||||
result += `<input type="radio" name="sender" value=${addr} checked> ${addr} ${response} <br/>\n`;
|
result += `<tr><td><input type="radio" name="sender" value=${addr} checked></td><td>${addr}</td><td>${response}</td></tr> \n`;
|
||||||
totBal+=response;
|
totBal+=parseFloat(response);
|
||||||
flag = 1;
|
flag = 1;
|
||||||
}else{
|
}else{
|
||||||
console.log("error : connection failed!");
|
console.log("error : connection failed!");
|
||||||
@ -4930,8 +4937,7 @@ Bitcoin.Util = {
|
|||||||
document.getElementById("sendBtn").disabled = true;
|
document.getElementById("sendBtn").disabled = true;
|
||||||
return ;
|
return ;
|
||||||
}
|
}
|
||||||
result+=`\nTotal Balance : ${totBal}`;
|
dispBal.innerHTML = `<table>${result}<tr><td colspan="2">Total Balance :</td><td>${totBal}</tr></table>`;
|
||||||
dispBal.innerHTML = result;
|
|
||||||
document.getElementById("sendBtn").disabled = false;
|
document.getElementById("sendBtn").disabled = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4965,7 +4971,7 @@ Bitcoin.Util = {
|
|||||||
var txid = utxos[x].txid;
|
var txid = utxos[x].txid;
|
||||||
var index = utxos[x].vout;
|
var index = utxos[x].vout;
|
||||||
var scriptPubKey = utxos[x].scriptPubKey;
|
var scriptPubKey = utxos[x].scriptPubKey;
|
||||||
var bal = utxos[x].amount
|
var bal = utxos[x].amount;
|
||||||
console.log(""+utxoAmt+"::"+txid + " : " + index +" : "+scriptPubKey +":"+bal);
|
console.log(""+utxoAmt+"::"+txid + " : " + index +" : "+scriptPubKey +":"+bal);
|
||||||
trx.addinput(txid, index, scriptPubKey)
|
trx.addinput(txid, index, scriptPubKey)
|
||||||
utxoAmt += bal;
|
utxoAmt += bal;
|
||||||
@ -5035,121 +5041,162 @@ Bitcoin.Util = {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
|
||||||
|
var waitForGlobal = function(param, callback) {
|
||||||
|
if (!window[param]) {
|
||||||
|
callback();
|
||||||
|
} else {
|
||||||
|
setTimeout(function() {
|
||||||
|
waitForGlobal(param, callback);
|
||||||
|
}, 100);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
function monitorData(){
|
function monitorData(){
|
||||||
|
|
||||||
var addrList = document.getElementById("getAddr").value;
|
var addrList = document.getElementById("getAddr").value;
|
||||||
addrList = addrList.split(',');
|
addrList = addrList.split(',');
|
||||||
addrList = Array.from(new Set(addrList));
|
addrList = Array.from(new Set(addrList));
|
||||||
|
|
||||||
//clear the table
|
var dispMsg = document.getElementById("dispMsg") ;
|
||||||
var table = document.getElementById("dispfloData");
|
window["refreshwait"] = addrList.length;
|
||||||
for(var i = table.rows.length - 1; i > 0; i--)
|
|
||||||
table.deleteRow(i);
|
|
||||||
|
|
||||||
addrList.forEach(function(addr){
|
addrList.forEach(function(addr){
|
||||||
if (!validateAddr(addr)){
|
if (!validateAddr(addr)){
|
||||||
alert(`Invalid address : ${addr}`);
|
alert(`Invalid address : ${addr}`);
|
||||||
|
window["refreshwait"] -= 1;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var idbtmp = indexedDB.open("FLO_Walletless");
|
waitForGlobal("loadwait", function() {
|
||||||
idbtmp.onerror = function(event) {
|
//console.log("found it");
|
||||||
console.log("Error in opening IndexedDB1!");
|
console.log(window['loadwait']);
|
||||||
};
|
window["loadwait"] = true;
|
||||||
idbtmp.onupgradeneeded = function(event) {
|
var idbtmp = indexedDB.open("FLO_Walletless");
|
||||||
console.log("up");
|
idbtmp.onerror = function(event) {
|
||||||
};
|
console.log("Error in opening IndexedDB1!");
|
||||||
idbtmp.onsuccess = function(event) {
|
window["loadwait"] = false;
|
||||||
var db = event.target.result;
|
};
|
||||||
var version = db.version;
|
idbtmp.onupgradeneeded = function(event) {
|
||||||
console.log("."+db.version);
|
console.log("up");
|
||||||
if(!db.objectStoreNames.contains(addr))
|
};
|
||||||
version = db.version + 1;
|
idbtmp.onsuccess = function(event) {
|
||||||
db.close();
|
var db = event.target.result;
|
||||||
console.log(":"+version);
|
var version = db.version;
|
||||||
var idb = indexedDB.open("FLO_Walletless",version);
|
console.log("."+db.version);
|
||||||
idb.onerror = function(event) {
|
if(!db.objectStoreNames.contains(addr))
|
||||||
console.log("Error in opening IndexedDB!");
|
version = db.version + 1;
|
||||||
};
|
db.close();
|
||||||
idb.onupgradeneeded = function(event) {
|
console.log(":"+version);
|
||||||
var objectStore = event.target.result.createObjectStore(addr, { keyPath: "tx", autoIncrement:true });
|
var idb = indexedDB.open("FLO_Walletless",version);
|
||||||
objectStore.createIndex("time", "time", { unique: false });
|
idb.onerror = function(event) {
|
||||||
objectStore.createIndex("sender", "sender", { unique: false });
|
console.log("Error in opening IndexedDB!");
|
||||||
objectStore.createIndex("receiver", "receiver", { unique: false });
|
};
|
||||||
objectStore.createIndex("floData", "floData", { unique: false });
|
idb.onupgradeneeded = function(event) {
|
||||||
objectStore.createIndex("txid", "txid", { unique: true });
|
var objectStore = event.target.result.createObjectStore(addr, { keyPath: "tx", autoIncrement:true });
|
||||||
};
|
objectStore.createIndex("time", "time", { unique: false });
|
||||||
idb.onsuccess = function(event) {
|
objectStore.createIndex("sender", "sender", { unique: false });
|
||||||
|
objectStore.createIndex("receiver", "receiver", { unique: false });
|
||||||
|
objectStore.createIndex("floData", "floData", { unique: false });
|
||||||
|
objectStore.createIndex("txid", "txid", { unique: true });
|
||||||
|
};
|
||||||
|
idb.onsuccess = function(event) {
|
||||||
|
//window["loadwait"] = false;
|
||||||
|
|
||||||
var db = event.target.result;
|
var dispMsgAddr = document.createElement('div');
|
||||||
var obs = db.transaction(addr, "readwrite").objectStore(addr);
|
dispMsgAddr.id = addr;
|
||||||
var countRequest = obs.count();
|
dispMsgAddr.innerHTML = `<hr>${addr}<br><button onclick="refreshdata(this.parentNode)">refresh</button><button onclick="removedata(this.parentNode)">remove</button><br>`;
|
||||||
countRequest.onsuccess = function() {
|
var table = document.createElement('table');
|
||||||
console.log(countRequest.result);
|
dispMsgAddr.appendChild(table);
|
||||||
var response = ajax("GET",`api/addrs/${addr}/txs`);
|
dispMsg.appendChild(dispMsgAddr);
|
||||||
var nRequired = JSON.parse(response).totalItems - countRequest.result;
|
var row = table.insertRow(0) ;
|
||||||
console.log(nRequired);
|
row.insertCell(0).innerHTML = 'Sender';
|
||||||
|
row.insertCell(1).innerHTML = 'Receiver';
|
||||||
|
row.insertCell(2).innerHTML = 'Time';
|
||||||
|
row.insertCell(3).innerHTML = 'floData';
|
||||||
|
|
||||||
while(true && nRequired){
|
var db = event.target.result;
|
||||||
var response = ajax("GET",`api/addrs/${addr}/txs?from=0&to=${nRequired}`);
|
var obs = db.transaction(addr, "readwrite").objectStore(addr);
|
||||||
response = JSON.parse(response);
|
|
||||||
if (nRequired + countRequest.result != response.totalItems ){
|
|
||||||
nRequired = response.totalItems - countRequest.result;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
console.log("Yes");
|
|
||||||
var i=1;
|
|
||||||
response.items.reverse().forEach(function(tx){
|
|
||||||
console.log(""+tx.time +":" +i); i++;
|
|
||||||
obs.put({time : tx.time, txid : tx.txid, sender : tx.vin[0].addr, receiver:tx.vout[0].scriptPubKey.addresses[0],floData : tx.floData});
|
|
||||||
});
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
var flag = false;
|
var cursorRequest = obs.openCursor();
|
||||||
var table=document.getElementById("dispfloData");
|
cursorRequest.onsuccess = function(event) {
|
||||||
var cursorRequest = obs.openCursor();
|
var cursor = event.target.result;
|
||||||
cursorRequest.onsuccess = function(event) {
|
//console.log("g");
|
||||||
var cursor = event.target.result;
|
if(cursor) {
|
||||||
//console.log("g");
|
// cursor.value contains the current record being iterated through
|
||||||
if(cursor) {
|
// this is where you'd do something with the result
|
||||||
// cursor.value contains the current record being iterated through
|
console.log(cursor.value.sender+":"+cursor.value.receiver+":"+cursor.value.time+":"+cursor.value.txid+":"+cursor.value.floData);
|
||||||
// this is where you'd do something with the result
|
var time = new Date(cursor.value.time*1000);
|
||||||
console.log(cursor.value.sender+":"+cursor.value.receiver+":"+cursor.value.time+":"+cursor.value.txid+":"+cursor.value.floData);
|
var row = table.insertRow(1) ;
|
||||||
var time = new Date(cursor.value.time*1000);
|
row.insertCell(0).innerHTML = cursor.value.sender;
|
||||||
var row = table.insertRow(1) ;
|
row.insertCell(1).innerHTML = cursor.value.receiver;
|
||||||
row.insertCell(0).innerHTML = cursor.value.sender;
|
row.insertCell(2).innerHTML = time;
|
||||||
row.insertCell(1).innerHTML = cursor.value.receiver;
|
row.insertCell(3).innerHTML = cursor.value.floData;
|
||||||
row.insertCell(2).innerHTML = time;
|
//tmpResult = '<tr><td>'++'</td><td>'++'</td><td>'++'</td><td>'++'</td></tr>' + tmpResult;
|
||||||
row.insertCell(3).innerHTML = cursor.value.floData;
|
cursor.continue();
|
||||||
flag = true;
|
} else {
|
||||||
//tmpResult = '<tr><td>'++'</td><td>'++'</td><td>'++'</td><td>'++'</td></tr>' + tmpResult;
|
refreshdata(dispMsgAddr);
|
||||||
cursor.continue();
|
}
|
||||||
} else {
|
};
|
||||||
|
db.close();
|
||||||
|
window["refreshwait"] -= 1;
|
||||||
|
};
|
||||||
|
window["loadwait"] = false;
|
||||||
|
};
|
||||||
|
|
||||||
if(!flag){
|
});
|
||||||
var row1 = table.insertRow(1) ;
|
});
|
||||||
var cell1 = row1.insertCell(0);
|
|
||||||
cell1.innerHTML= "Sorry! No Flo Data received!";
|
|
||||||
cell1.colSpan = 4
|
|
||||||
}
|
|
||||||
var row2 = table.insertRow(1) ;
|
|
||||||
var cell2 = row2.insertCell(0);
|
|
||||||
cell2.innerHTML= '<b><center>'+addr+'</center></b>';
|
|
||||||
cell2.colSpan = 4
|
|
||||||
|
|
||||||
}
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
db.close();
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
<script>
|
||||||
|
function refreshdata(param){
|
||||||
|
var addr = param.id;
|
||||||
|
var table = param.getElementsByTagName('table')[0];
|
||||||
|
var row = table.insertRow(1) ;
|
||||||
|
var cell = row.insertCell(0);
|
||||||
|
cell.innerHTML = "<center>Refreshing...</center>";
|
||||||
|
cell.colSpan = 4;
|
||||||
|
waitForGlobal("refreshwait", function() {
|
||||||
|
var idb = indexedDB.open("FLO_Walletless");
|
||||||
|
idb.onerror = function(event) {
|
||||||
|
console.log("Error in opening IndexedDB!");
|
||||||
|
};
|
||||||
|
idb.onsuccess = function(event) {
|
||||||
|
var db = event.target.result;
|
||||||
|
var obs = db.transaction(addr, "readwrite").objectStore(addr);
|
||||||
|
var countRequest = obs.count();
|
||||||
|
countRequest.onsuccess = function() {
|
||||||
|
console.log(countRequest.result);
|
||||||
|
var response = ajax("GET",`api/addrs/${addr}/txs`);
|
||||||
|
var nRequired = JSON.parse(response).totalItems - countRequest.result;
|
||||||
|
console.log(nRequired);
|
||||||
|
|
||||||
|
while(true && nRequired){
|
||||||
|
var response = ajax("GET",`api/addrs/${addr}/txs?from=0&to=${nRequired}`);
|
||||||
|
response = JSON.parse(response);
|
||||||
|
if (nRequired + countRequest.result != response.totalItems ){
|
||||||
|
nRequired = response.totalItems - countRequest.result;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
console.log("Yes");
|
||||||
|
response.items.reverse().forEach(function(tx){
|
||||||
|
obs.put({time : tx.time, txid : tx.txid, sender : tx.vin[0].addr, receiver:tx.vout[0].scriptPubKey.addresses[0],floData : tx.floData});
|
||||||
|
var time = new Date(tx.time*1000);
|
||||||
|
var row = table.insertRow(2) ;
|
||||||
|
row.insertCell(0).innerHTML = tx.vin[0].addr;
|
||||||
|
row.insertCell(1).innerHTML = tx.vout[0].scriptPubKey.addresses[0];
|
||||||
|
row.insertCell(2).innerHTML = time;
|
||||||
|
row.insertCell(3).innerHTML = tx.floData;
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
table.deleteRow(1);
|
||||||
|
};
|
||||||
|
db.close();
|
||||||
|
};
|
||||||
|
});
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
Loading…
Reference in New Issue
Block a user