I am using MySQL to sum data then display it in datatable but since database is bigger it became very slow I am trying a new approach where I use client side to do calculation, tried every code I could find but keep getting this error :
$(...).DataTable(...).column(...).data(...).sum is not a function
I need to sum all values of column(5) where column(1) value = column(2) value
There is no “sum” in Datatables.
If I use the documentation, you have a footer callback
https://datatables.net/examples/advanced_init/footer_callback.html
Something like this
const $myTable = new DataTable('#example', {
footerCallback: (row, data, start, end, display) => {
let api = this.api();
// Get the data for columns 1, 2, and 5
let column1Data = api.column(1).data();
let column2Data = api.column(2).data();
let column5Data = api.column(5).data();
// Total over all pages (column 5 where column 1 = column 2)
let total = column1Data
.map((value, index) => value == column2Data[index] ? +column5Data[index] || 0 : 0)
.reduce((a, b) => a + b, 0);
// Total over this page (visible page)
let pageTotal = displayedRows
.map(index => column1Data[index] == column2Data[index] ? +column5Data[index] || 0 : 0)
.reduce((a, b) => a + b, 0);
$(api.column(5).footer()).html(
'$' + pageTotal + ' ( $' + total + ' total)'
);
}
});