diff options
| author | Adam Soltys <[email protected]> | 2017-01-15 18:24:09 -0800 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2017-01-15 18:24:09 -0800 |
| commit | 7762ceaa7e2bb34f8758e17a4c8f512fa6a81b9e (patch) | |
| tree | 91bb1d1b8fe6ad77a48f0e429d9bfd35834c78d9 /static/js/report.js | |
| parent | 0ae266bf88f9f79c7e99b272688126898303daa4 (diff) | |
| download | coinos-server-7762ceaa7e2bb34f8758e17a4c8f512fa6a81b9e.tar.gz coinos-server-7762ceaa7e2bb34f8758e17a4c8f512fa6a81b9e.zip | |
Initial Vueification
Diffstat (limited to 'static/js/report.js')
| -rw-r--r-- | static/js/report.js | 143 |
1 files changed, 143 insertions, 0 deletions
diff --git a/static/js/report.js b/static/js/report.js new file mode 100644 index 00000000..31b3b689 --- /dev/null +++ b/static/js/report.js @@ -0,0 +1,143 @@ +(function() { + var display, filterDates, g; + + g = typeof exports !== "undefined" && exports !== null ? exports : this; + + $(function() { + var from, to; + from = moment().subtract(7, 'days'); + to = moment(); + $('#from').html(from.format("MMMM Do, YYYY")); + $('#to').html(to.format("MMMM Do, YYYY")); + $('#from_date').val(from.format("MM/DD/YYYY")); + $('#to_date').val(to.format("MM/DD/YYYY")); + $('#from_date').datepicker({ + onClose: filterDates + }); + $('#to_date').datepicker({ + onClose: filterDates + }); + $('#from').click(function() { + return $('#from_date').datepicker('show').blur(); + }); + $('#to').click(function() { + return $('#to_date').datepicker('show').blur(); + }); + return $.getJSON('transactions.json', function(data) { + g.transactions = data.transactions.filter(function(t) { + return t.user === $('#user').val(); + }); + display(g.transactions); + return filterDates(); + }); + }); + + filterDates = function() { + var transactions; + $('#from').html(moment($('#from_date').datepicker('getDate')).format("MMMM Do, YYYY")); + $('#to').html(moment($('#to_date').datepicker('getDate')).format("MMMM Do, YYYY")); + transactions = $.grep(g.transactions, function(e, i) { + var amount, d, from, to; + if (!e) { + return false; + } + from = moment($('#from_date').val(), "MM/DD/YYYY"); + to = moment($('#to_date').val(), "MM/DD/YYYY"); + d = moment(e.date); + amount = parseFloat(e.exchange) * parseFloat(e.received); + return !isNaN(parseFloat(amount)) && isFinite(amount) && ((from == null) || d.diff(from, 'days') >= 0) && ((to == null) || d.diff(to, 'days') <= 0); + }); + return display(transactions); + }; + + display = function(transactions) { + var btc_tips_total, btc_total, fiat_tips_total, fiat_total; + $('.report tbody tr').remove(); + if (transactions.length === 0) { + $('.report').hide(); + return $('.alert').fadeIn(); + } else { + $('.alert').hide(); + btc_total = btc_tips_total = 0; + fiat_total = fiat_tips_total = 0; + $.each(transactions, function() { + var btc, btc_tip, btc_tip_str, date, exchange, fiat, fiat_tip, fiat_tip_str, notes, row, tip, txid; + btc_tip_str = ""; + fiat_tip_str = ""; + exchange = parseFloat(this.exchange); + tip = this.tip; + btc = parseFloat(this.received); + fiat = btc * exchange; + btc_total += parseFloat(btc.toFixed(8)); + fiat_total += parseFloat(fiat.toFixed(2)); + if (tip > 1) { + btc = btc / tip; + btc_tip = (btc * tip - btc).toFixed(8); + fiat_tip = (btc_tip * exchange).toFixed(2); + btc_tips_total += parseFloat(btc_tip); + fiat_tips_total += parseFloat(fiat_tip); + btc_tip_str = "<br /><small>+ " + btc_tip + "</small>"; + fiat_tip_str = "<br /><small>+ " + fiat_tip + "</small>"; + } + fiat = btc * exchange; + notes = this.notes; + txid = this.txid; + date = moment(this.date, 'YYYY-MM-DD h:mm:ss').format('MMM D h:mma'); + row = $("<tr id='" + this.txid + "'>\n <td>" + date + " <span class='glyphicon glyphicon-tag hidden'></span></td>\n <td>" + (exchange.toFixed(2)) + "</td>\n <td>" + (btc.toFixed(8)) + btc_tip_str + "</td>\n <td>" + (fiat.toFixed(2)) + fiat_tip_str + "</td>\n</tr>"); + if (notes) { + row.attr('data-notes', notes); + row.find('span').removeClass('hidden'); + } + $('.report tbody').append(row); + return row.click(function() { + $('#confirm, #yousure').hide(); + $('#buttons, #modal textarea').show(); + notes = $(this).attr('data-notes'); + $('#modal').modal(); + $('#modal textarea').val(''); + $('#modal .btn-primary').toggle((txid != null) && txid.length > 5); + $('#modal .btn-danger').off().click(function() { + $('#yousure, #confirm').show(); + return $('#buttons, #modal textarea').hide(); + }); + $('#confirm .btn-danger').click(function() { + $.ajax({ + type: 'delete', + url: "/" + ($('#user').val()) + "/transactions/" + txid + }); + $('#modal').modal('hide'); + return row.fadeOut('slow'); + }); + $('#modal .btn-primary').off().click(function() { + window.open("https://blockchain.info/tx/" + txid, '_blank'); + return $('#modal').modal('hide'); + }); + $('#modal textarea').off().change(function() { + notes = $(this).val(); + if (txid) { + $.post("/transactions/" + txid, { + notes: $(this).val() + }); + } + row.find('span').addClass('hidden'); + if (notes) { + row.find('span').removeClass('hidden'); + } + return row.attr('data-notes', $(this).val()); + }); + if (notes) { + return $('#modal textarea').val(notes); + } + }); + }); + $('#btc_total').html("" + (parseFloat(btc_total).toFixed(8))); + $('#fiat_total').html("" + (parseFloat(fiat_total).toFixed(2))); + $('#btc_tips').html("" + (parseFloat(btc_tips_total).toFixed(8))); + $('#fiat_tips').html("" + (parseFloat(fiat_tips_total).toFixed(2))); + $('#btc').html("" + (parseFloat(btc_total - btc_tips_total).toFixed(8))); + $('#fiat').html("" + (parseFloat(fiat_total - fiat_tips_total).toFixed(2))); + return $('.report').fadeIn(); + } + }; + +}).call(this); |
