|
139 | 139 | if (coin.reserved) {
|
140 | 140 | continue;
|
141 | 141 | }
|
142 |
| - Object.assign(coin, { outputIndex: coin.index }); |
| 142 | + Object.assign(coin, { |
| 143 | + outputIndex: coin.index, |
| 144 | + denom: DashJoin.getDenom(coin.satoshis), |
| 145 | + }); |
143 | 146 | utxos.push(coin);
|
144 | 147 | }
|
145 | 148 | }
|
|
752 | 755 | return 0;
|
753 | 756 | }
|
754 | 757 |
|
| 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 | + |
755 | 775 | async function updateDeltas(addrs) {
|
756 | 776 | for (let address of addrs) {
|
757 | 777 | let info = dbGet(address);
|
|
795 | 815 | }
|
796 | 816 |
|
797 | 817 | function renderCoins() {
|
798 |
| - let totalBalance = 0; |
799 |
| - //let balances = []; |
800 | 818 | let addrs = Object.keys(deltasMap);
|
801 |
| - let elementStrs = []; |
802 |
| - let template = $('[data-id=coin-row-tmpl]').content; |
803 | 819 | for (let addr of addrs) {
|
804 | 820 | let info = deltasMap[addr];
|
805 |
| - console.log('DEBUG delta info', info); |
806 | 821 | 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 | + } |
818 | 823 |
|
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); |
829 | 826 |
|
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 | + // |
832 | 846 | }
|
| 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); |
833 | 852 | }
|
834 | 853 |
|
| 854 | + let totalBalance = DashTx.sum(utxos); |
835 | 855 | let totalAmount = totalBalance / SATS;
|
836 | 856 | $('[data-id=total-balance]').innerText = totalAmount.toFixed(4);
|
837 | 857 |
|
|
0 commit comments