From 14d4ecbf9b9af798a53d9d94c65632f7ef386aba Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Wed, 24 Sep 2014 17:16:01 +0200 Subject: [PATCH] Bug 12987: Update table footer with the visible rows This patch is the preparation step for others. On acqui/acqui-home.pl and admin/aqbudgets.pl, it will be possible to see the totals in the footer updated with the filtered rows. Test plan: This cannot be tested alone, you have to apply it with others (see the "Blocked" bug reports). --- .../prog/en/includes/format_price.inc | 27 ++++++++++++++++++ koha-tmpl/intranet-tmpl/prog/en/js/datatables.js | 32 ++++++++++++++++++++++ 2 files changed, 59 insertions(+) create mode 100644 koha-tmpl/intranet-tmpl/prog/en/includes/format_price.inc diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/format_price.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/format_price.inc new file mode 100644 index 0000000..b0e5a8d --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/format_price.inc @@ -0,0 +1,27 @@ +[% USE Koha %] + diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/datatables.js b/koha-tmpl/intranet-tmpl/prog/en/js/datatables.js index 49ccb74..838f27e 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/js/datatables.js +++ b/koha-tmpl/intranet-tmpl/prog/en/js/datatables.js @@ -607,3 +607,35 @@ function parse_callnumber ( html ) { return ""; } } + +// see http://www.datatables.net/examples/advanced_init/footer_callback.html +function footer_column_sum( api, column_numbers ) { + // Remove the formatting to get integer data for summation + var intVal = function ( i ) { + if ( typeof i === 'number' ) { + if ( isNaN(i) ) return 0; + return i; + } else if ( typeof i === 'string' ) { + var value = i.replace(/[a-zA-Z ,.]/g, '')*1; + if ( isNaN(value) ) return 0; + return value; + } + return 0; + }; + + + for ( var indice = 0 ; indice < column_numbers.length ; indice++ ) { + var column_number = column_numbers[indice]; + + var total = 0; + var cells = api.column( column_number, { page: 'current' } ).nodes().to$().find("span.total_amount"); + $(cells).each(function(){ + total += intVal( $(this).html() ); + }); + total /= 100; // Hard-coded decimal precision + + // Update footer + $( api.column( column_number ).footer() ).html(total.format_price()); + }; +} + -- 2.1.0