Filter unnecessary data from ajax-enabled datatables

This commit is contained in:
joeuhren
2020-12-17 23:55:57 -07:00
parent 474bb3ba9f
commit 7a1f4a23d5
6 changed files with 80 additions and 6 deletions
+2 -2
View File
@@ -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});
});
});
+1 -1
View File
@@ -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);
});
},
+5 -1
View File
@@ -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: {
+7 -1
View File
@@ -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: '<',
+58
View File
@@ -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);
+7 -1
View File
@@ -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: '<',