From 15dd64767351df7f6969b285258e1897053f3c72 Mon Sep 17 00:00:00 2001 From: Sai Raj <39055732+sairajzero@users.noreply.github.com> Date: Mon, 4 Feb 2019 16:24:17 +0530 Subject: [PATCH] Monitor data : Independent addresses and Label feature Monitor data now reads the local data from indexedDB and displays them before refreshing for new data using API. Each address can now be refreshed or removed independently. Added a feature to store label of address in local data. --- FLO_webWallet_testnet.html | 92 ++++++++++++++++++++++++++++---------- 1 file changed, 68 insertions(+), 24 deletions(-) diff --git a/FLO_webWallet_testnet.html b/FLO_webWallet_testnet.html index ea17d99..bf563b0 100644 --- a/FLO_webWallet_testnet.html +++ b/FLO_webWallet_testnet.html @@ -30,7 +30,7 @@ table, th, td {

-
FLO AddressSecret (or) Private Key
+
FLO AddressSecret (or) Private Key
@@ -65,14 +65,11 @@ table, th, td { function clearLocalData() { - var table = document.getElementById("dispfloData"); - for(var i = table.rows.length - 1; i > 0; i--) - table.deleteRow(i); + document.getElementById("dispMsg").innerHTML = '

Received FLO Data :


'; var DBDeleteRequest = window.indexedDB.deleteDatabase("FLO_Walletless"); DBDeleteRequest.onsuccess = function(event) { console.log("Database deleted successfully"); alert("Successfully Cleared Local Data!"); - console.log(event.result); }; } @@ -4961,9 +4958,7 @@ Bitcoin.Util = { var trx = bitjs.transaction(); var sendAmt = parseFloat(document.getElementById("sendAmt").value); var utxoAmt = 0.0; - console.log(sender+":"+sendAmt); var x = sendAmt+fee; - console.log(x); var response = ajax("GET",`api/addr/${sender}/utxo`); var utxos = JSON.parse(response); for(var x = utxos.length-1; x >= 0; x--){ @@ -4972,13 +4967,11 @@ Bitcoin.Util = { var index = utxos[x].vout; var scriptPubKey = utxos[x].scriptPubKey; var bal = utxos[x].amount; - console.log(""+utxoAmt+"::"+txid + " : " + index +" : "+scriptPubKey +":"+bal); trx.addinput(txid, index, scriptPubKey) utxoAmt += bal; }else break; } - console.log(utxoAmt+":"+(sendAmt+fee)); if(utxoAmt < sendAmt+fee){ alert("Insufficient balance!"); return; @@ -4996,7 +4989,6 @@ Bitcoin.Util = { var sendFloData = document.getElementById("flotextdata").value; trx.addflodata(sendFloData); - console.log(sendFloData); var wif = prompt("Enter private key"); if (wif.length<1||!verifyWIF(wif,sender)){ alert("Invalid Private key!"); @@ -5060,33 +5052,44 @@ Bitcoin.Util = { var dispMsg = document.getElementById("dispMsg") ; window["refreshwait"] = addrList.length; + addrList.forEach(function(addr){ if (!validateAddr(addr)){ alert(`Invalid address : ${addr}`); window["refreshwait"] -= 1; return; } + var addrData = document.getElementById(addr); + if(addrData){ + refreshdata(addrData); + window["refreshwait"] -= 1; + return; + } waitForGlobal("loadwait", function() { - //console.log("found it"); - console.log(window['loadwait']); window["loadwait"] = true; var idbtmp = indexedDB.open("FLO_Walletless"); idbtmp.onerror = function(event) { - console.log("Error in opening IndexedDB1!"); + console.log("Error in opening IndexedDB!"); window["loadwait"] = false; }; idbtmp.onupgradeneeded = function(event) { - console.log("up"); + var objectStore = event.target.result.createObjectStore('Label'); + //objectStore.createIndex("label", "label", { unique: false }); }; idbtmp.onsuccess = function(event) { var db = event.target.result; - var version = db.version; - console.log("."+db.version); - if(!db.objectStoreNames.contains(addr)) - version = db.version + 1; + + if(!db.objectStoreNames.contains(addr)){ + var newaddr = true; + var version = db.version + 1; + } + + else { + var newaddr = false; + var version = db.version; + } db.close(); - console.log(":"+version); var idb = indexedDB.open("FLO_Walletless",version); idb.onerror = function(event) { console.log("Error in opening IndexedDB!"); @@ -5101,30 +5104,45 @@ Bitcoin.Util = { }; idb.onsuccess = function(event) { //window["loadwait"] = false; + var db = event.target.result; + var obslabel = db.transaction('Label', "readwrite").objectStore('Label'); + if(newaddr) + obslabel.add('',addr); var dispMsgAddr = document.createElement('div'); dispMsgAddr.id = addr; - dispMsgAddr.innerHTML = `
${addr}

`; + dispMsgAddr.innerHTML = `

${addr}

Label :
+ + +
+ +
`; + + + var labelRequest = obslabel.get(addr); + labelRequest.onsuccess = function(event){ + dispMsgAddr.getElementsByTagName('input')[0].value = labelRequest.result; + }; + var table = document.createElement('table'); dispMsgAddr.appendChild(table); dispMsg.appendChild(dispMsgAddr); + var row = table.insertRow(0) ; row.insertCell(0).innerHTML = 'Sender'; row.insertCell(1).innerHTML = 'Receiver'; row.insertCell(2).innerHTML = 'Time'; row.insertCell(3).innerHTML = 'floData'; - var db = event.target.result; var obs = db.transaction(addr, "readwrite").objectStore(addr); var cursorRequest = obs.openCursor(); cursorRequest.onsuccess = function(event) { var cursor = event.target.result; - //console.log("g"); if(cursor) { // cursor.value contains the current record being iterated through // this is where you'd do something with the result - console.log(cursor.value.sender+":"+cursor.value.receiver+":"+cursor.value.time+":"+cursor.value.txid+":"+cursor.value.floData); + //console.log(cursor.value.sender+":"+cursor.value.receiver+":"+cursor.value.time+":"+cursor.value.txid+":"+cursor.value.floData); var time = new Date(cursor.value.time*1000); var row = table.insertRow(1) ; row.insertCell(0).innerHTML = cursor.value.sender; @@ -5178,7 +5196,6 @@ Bitcoin.Util = { 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); @@ -5196,6 +5213,33 @@ Bitcoin.Util = { }; }); } + + function removedata(param){ + param.parentNode.removeChild(param); + } + + function editLabel(param){ + param.getElementsByTagName('input')[0].disabled = false; + param.getElementsByTagName('button')[0].style.display = "none"; + param.getElementsByTagName('button')[1].style.display = "block"; + } + function saveLabel(param){ + label = param.getElementsByTagName('input')[0]; + label.disabled = true; + label = label.value; + param.getElementsByTagName('button')[0].style.display = "block"; + param.getElementsByTagName('button')[1].style.display = "none"; + 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 obslabel = db.transaction('Label', "readwrite").objectStore('Label'); + obslabel.put(label,param.id); + db.close(); + } + }