From 52f36e227b4fe4a759c4788553918d98266c15b5 Mon Sep 17 00:00:00 2001 From: joeuhren <46763106+joeuhren@users.noreply.github.com> Date: Fri, 20 Nov 2020 17:32:06 -0700 Subject: [PATCH] Latest Transactions (Front page) AJAX calls for dataTables --- app.js | 23 +++++++++++++++++++++++ lib/database.js | 12 ++++++++++++ views/index.pug | 49 +++++++++++++++++++++---------------------------- 3 files changed, 56 insertions(+), 28 deletions(-) diff --git a/app.js b/app.js index b6d7ed2..12164c6 100644 --- a/app.js +++ b/app.js @@ -181,6 +181,29 @@ app.use('/ext/getbasicstats', function(req,res){ }); }); +app.use('/ext/getlasttxsajax', function(req,res){ + if(typeof req.query.length === 'undefined' || isNaN(req.query.length) || req.query.length > settings.index.last_txs){ + req.query.length = settings.index.last_txs; + } + if(typeof req.query.start === 'undefined' || isNaN(req.query.start) || req.query.start < 0){ + req.query.start = 0; + } + db.get_last_txs_ajax(req.query.start, req.query.length,function(txs, count){ + var data = []; + for(i=0; i settings.txcount){ diff --git a/lib/database.js b/lib/database.js index 3c88491..c939dd9 100644 --- a/lib/database.js +++ b/lib/database.js @@ -496,6 +496,18 @@ module.exports = { }); }, + get_last_txs_ajax: function(start, length, cb) { + Tx.countDocuments({'total': {$gt: 1}}, function(err, count){ + Tx.find({'total': {$gt: 1}}).sort({blockindex: 'desc'}).skip(Number(start)).limit(Number(length)).exec(function(err, txs){ + if (err) { + return cb(err); + } else { + return cb(txs, count); + } + }); + }); + }, + get_address_txs_ajax: function(hash, start, length, cb) { var totalCount = 0; Address.findOne({a_id: hash}, function(err, addressTotalTxs) { diff --git a/views/index.pug b/views/index.pug index 3cd0fb5..13cae6a 100644 --- a/views/index.pug +++ b/views/index.pug @@ -16,7 +16,7 @@ block content var displayLengthMax = (lengthMenuOpts[lengthMenuOpts.length-1]); } $(document).ready(function(){ - var stable = $('#block-table').dataTable( { + var stable = $('#block-table').dataTable({ autoWidth: true, searching: true, ordering: false, @@ -42,37 +42,32 @@ block content //{ data: 'time', width: '20%' }, ] }); - var rtable = $('#recent-table').dataTable( { - autoWidth: true, + var rtable = $('#recent-table').dataTable({ + autoWidth: false, searching: false, ordering: false, - responsive: true, + responsive: false, lengthChange: true, processing: true, + serverSide: true, iDisplayLength: displayLengthMax, lengthMenu: lengthMenuOpts, - ajax: { - url: '/ext/getlasttxs/-0.00000001', - dataSrc: function ( json ) { - for ( var i=0;i" + json.data[i]['txid'] + ""; - json.data[i]['blockindex'] = "" + json.data[i]['blockindex'] + ""; - var amount = (json.data[i]['total'] / 100000000).toLocaleString('en',{'minimumFractionDigits':2,'maximumFractionDigits':8,'useGrouping':true}); - var amountParts = amount.split('.'); - json.data[i]['total'] = amountParts[0] + '.' + amountParts[1] + ''; - json.data[i]['recipients'] = json.data[i]['vout'].length; - } - return json.data; - } + ajax: '/ext/getlasttxsajax', + rowCallback: function(row, data, index) { + var blockindex = data[0]; //variables for better readability + var blockhash = data[1]; //variables for better readability + var txhash = data[2]; //variables for better readability + var outputs = data[3]; //variables for better readability + var amount = (data[4] / 100000000).toLocaleString('en',{'minimumFractionDigits':2,'maximumFractionDigits':8,'useGrouping':true}); //variables for better readability + var amountParts = amount.split('.'); + var amount = amountParts[0] + '.' + amountParts[1] + ''; + var timestamp = data[5]; //variables for better readability + $("td:eq(0)", row).html('' + blockindex + ''); + $("td:eq(1)", row).html('' + txhash + '').addClass("d-none d-md-none d-lg-table-cell text-center"); + $("td:eq(2)", row).html(outputs).addClass("d-none d-md-none d-lg-table-cell text-center"); + $("td:eq(3)", row).html(amount); + $("td:eq(4)", row).html(timestamp); }, - columns: [ - { data: 'blockindex', width: '8%' }, - { data: 'txid', width: '40%' }, - { data: 'recipients', width:'5%' }, - { data: 'total', width: '15%' }, - { data: 'timestamp', width: '25%' }, - ] }); setInterval( function () { rtable.api().ajax.reload(null, false); @@ -103,6 +98,4 @@ block content th.text-center #{settings.locale.mkt_amount} (#{settings.symbol}) th.text-center #{settings.locale.timestamp} tbody.text-center - .footer-padding - - + .footer-padding \ No newline at end of file