Skip to content

Commit eaa9848

Browse files
committed
feat: sort coins by denom, sats
1 parent 8bdb56c commit eaa9848

File tree

1 file changed

+49
-29
lines changed

1 file changed

+49
-29
lines changed

public/wallet-app.js

Lines changed: 49 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,10 @@
139139
if (coin.reserved) {
140140
continue;
141141
}
142-
Object.assign(coin, { outputIndex: coin.index });
142+
Object.assign(coin, {
143+
outputIndex: coin.index,
144+
denom: DashJoin.getDenom(coin.satoshis),
145+
});
143146
utxos.push(coin);
144147
}
145148
}
@@ -752,6 +755,23 @@
752755
return 0;
753756
}
754757

758+
function sortCoinsByDenomAndSatsDesc(a, b) {
759+
if (a.denom < b.denom) {
760+
return 1;
761+
}
762+
if (a.denom > b.denom) {
763+
return -1;
764+
}
765+
766+
if (a.satoshis < b.satoshis) {
767+
return 1;
768+
}
769+
if (a.satoshis > b.satoshis) {
770+
return -1;
771+
}
772+
return 0;
773+
}
774+
755775
async function updateDeltas(addrs) {
756776
for (let address of addrs) {
757777
let info = dbGet(address);
@@ -795,43 +815,43 @@
795815
}
796816

797817
function renderCoins() {
798-
let totalBalance = 0;
799-
//let balances = [];
800818
let addrs = Object.keys(deltasMap);
801-
let elementStrs = [];
802-
let template = $('[data-id=coin-row-tmpl]').content;
803819
for (let addr of addrs) {
804820
let info = deltasMap[addr];
805-
console.log('DEBUG delta info', info);
806821
dbSet(addr, info);
807-
if (info.balance === 0) {
808-
continue;
809-
}
810-
totalBalance += info.balance;
811-
//let amount = delta.balance / SATS;
812-
//let amountStr = amount.toFixed(8);
813-
// balances.push(`${addr}: ${info.deltas.length}: ${amountStr}`);
814-
815-
for (let delta of info.deltas) {
816-
let amount = delta.satoshis / SATS;
817-
Object.assign(delta, { amount: amount });
822+
}
818823

819-
let clone = document.importNode(template, true);
820-
$('[data-name=coin]', clone).value = [
821-
delta.address,
822-
delta.txid,
823-
delta.index,
824-
].join(',');
825-
$('[data-name=address]', clone).textContent = delta.address;
826-
$('[data-name=amount]', clone).textContent = delta.amount.toFixed(4);
827-
$('[data-name=txid]', clone).textContent = delta.txid;
828-
$('[data-name=output-index]', clone).textContent = delta.index;
824+
let utxos = getAllUtxos();
825+
utxos.sort(sortCoinsByDenomAndSatsDesc);
829826

830-
elementStrs.push(clone.firstElementChild.outerHTML);
831-
//tableBody.appendChild(clone);
827+
let elementStrs = [];
828+
let template = $('[data-id=coin-row-tmpl]').content;
829+
for (let utxo of utxos) {
830+
let amount = utxo.satoshis / SATS;
831+
Object.assign(utxo, { amount: amount });
832+
833+
let clone = document.importNode(template, true);
834+
$('[data-name=coin]', clone).value = [
835+
utxo.address,
836+
utxo.txid,
837+
utxo.outputIndex,
838+
].join(',');
839+
$('[data-name=address]', clone).textContent = utxo.address;
840+
$('[data-name=amount]', clone).textContent = utxo.amount.toFixed(4);
841+
if (utxo.denom) {
842+
$('[data-name=amount]', clone).style.fontStyle = 'italic';
843+
$('[data-name=amount]', clone).style.fontWeight = 'bold';
844+
} else {
845+
//
832846
}
847+
$('[data-name=txid]', clone).textContent = utxo.txid;
848+
$('[data-name=output-index]', clone).textContent = utxo.index;
849+
850+
elementStrs.push(clone.firstElementChild.outerHTML);
851+
//tableBody.appendChild(clone);
833852
}
834853

854+
let totalBalance = DashTx.sum(utxos);
835855
let totalAmount = totalBalance / SATS;
836856
$('[data-id=total-balance]').innerText = totalAmount.toFixed(4);
837857

0 commit comments

Comments
 (0)