diff --git a/app.js b/app.js index 0dd33ea..852520e 100644 --- a/app.js +++ b/app.js @@ -205,8 +205,8 @@ app.use('/ext/getbasicstats', function(req,res) { }); app.use('/ext/getlasttxs/:min', function(req, res) { - db.get_last_txs(req, function(data, draw, count) { - res.json({"data":data, "draw": draw, "recordsTotal": count, "recordsFiltered": count}); + db.get_last_txs(req, function(data, count) { + res.json({"data":data, "recordsTotal": count, "recordsFiltered": count}); }); }); diff --git a/lib/database.js b/lib/database.js index 8cb3e1e..0f52f87 100644 --- a/lib/database.js +++ b/lib/database.js @@ -417,7 +417,7 @@ module.exports = { row.push(new Date((txs[i].timestamp) * 1000).toUTCString()); data.push(row); } - return cb(data, req.query.draw, count); + return cb(data, count); }); }, diff --git a/views/includes/address_history.pug b/views/includes/address_history.pug index 3492eb6..c2c477b 100644 --- a/views/includes/address_history.pug +++ b/views/includes/address_history.pug @@ -27,7 +27,11 @@ script. iDisplayLength: displayLengthMax, lengthMenu: lengthMenuOpts, ajax: { - "url": '/ext/getaddresstxsajax/'+hashAddress + url: '/ext/getaddresstxsajax/' + hashAddress, + beforeSend: function(jqXHR, settings) { + settings.url = fixDatatableQuerystring(settings.url, 4); + return true; + } }, language: { paginate: { diff --git a/views/index.pug b/views/index.pug index 2cd37c4..a81f3bc 100644 --- a/views/index.pug +++ b/views/index.pug @@ -28,7 +28,13 @@ block content serverSide: true, iDisplayLength: displayLengthMax, lengthMenu: lengthMenuOpts, - ajax: '/ext/getlasttxs/0', + ajax: { + url: '/ext/getlasttxs/0', + beforeSend: function(jqXHR, settings) { + settings.url = fixDatatableQuerystring(settings.url, 5); + return true; + } + }, language: { paginate: { previous: '<', diff --git a/views/layout.pug b/views/layout.pug index 3ff8df4..031770a 100644 --- a/views/layout.pug +++ b/views/layout.pug @@ -27,6 +27,64 @@ html(lang='en') if active == 'reward' script(type='text/javascript', src='/js/Chart.min.js') script. + /* Special thanks to bobince for the removeURLParameter function: https://stackoverflow.com/a/1634841/3038650 */ + function removeURLParameter(url, parameter) { + //prefer to use l.search if you have a location/link object + var urlparts = url.split('?'); + if (urlparts.length >= 2) { + var prefix = encodeURIComponent(parameter) + '='; + var pars = urlparts[1].split(/[&;]/g); + + //reverse iteration as may be destructive + for (var i = pars.length; i-- > 0;) { + //idiom for string.startsWith + if (pars[i].lastIndexOf(prefix, 0) !== -1) + pars.splice(i, 1); + } + + return urlparts[0] + (pars.length > 0 ? '?' + pars.join('&') : ''); + } + + return url; + } + /* Remove unnecessary querystring values from ajax-enabled datatables */ + function fixDatatableQuerystring(url, columnCount) { + for (i = 0; i < columnCount; i++) { + if (url.indexOf('columns%5B' + i.toString() + '%5D') > -1) { + for (z = 0; z < 5; z++) { + var dataType; + + switch (z) { + case 0: + dataType = 'data'; + break; + case 1: + dataType = 'name'; + break; + case 2: + dataType = 'searchable'; + break; + case 3: + dataType = 'orderable'; + break; + case 4: + dataType = 'search'; + url = removeURLParameter(url, 'columns[' + i.toString() + '][' + dataType + '][value]'); + break; + } + + url = removeURLParameter(url, 'columns[' + i.toString() + '][' + dataType + ']' + (dataType == 'search' ? '[regex]' : '')); + } + } + } + + url = removeURLParameter(url, 'draw'); + url = removeURLParameter(url, 'search[value]'); + url = removeURLParameter(url, 'search[regex]'); + url = removeURLParameter(url, '_'); + + return url; + } $(document).ready(function() { function fixSocialLinkFontSize() { var fontSize = $('#footer-container').height() * (getSocialLinkHeight() / 100); diff --git a/views/movement.pug b/views/movement.pug index 2481dba..60bcb40 100644 --- a/views/movement.pug +++ b/views/movement.pug @@ -29,7 +29,13 @@ block content serverSide: true, iDisplayLength: displayLengthMax, lengthMenu: lengthMenuOpts, - ajax: '/ext/getlasttxs/#{min_amount}', + ajax: { + url: '/ext/getlasttxs/#{min_amount}', + beforeSend: function(jqXHR, settings) { + settings.url = fixDatatableQuerystring(settings.url, 3); + return true; + } + }, language: { paginate: { previous: '<',