|
|
|
/*! © SpryMedia Ltd - datatables.net/license */
|
|
|
|
|
|
|
|
(function( factory ){
|
|
|
|
if ( typeof define === 'function' && define.amd ) {
|
|
|
|
// AMD
|
|
|
|
define( ['jquery', 'datatables.net'], function ( $ ) {
|
|
|
|
return factory( $, window, document );
|
|
|
|
} );
|
|
|
|
}
|
|
|
|
else if ( typeof exports === 'object' ) {
|
|
|
|
// CommonJS
|
|
|
|
var jq = require('jquery');
|
|
|
|
var cjsRequires = function (root, $) {
|
|
|
|
if ( ! $.fn.dataTable ) {
|
|
|
|
require('datatables.net')(root, $);
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
if (typeof window !== 'undefined') {
|
|
|
|
module.exports = function (root, $) {
|
|
|
|
if ( ! root ) {
|
|
|
|
// CommonJS environments without a window global must pass a
|
|
|
|
// root. This will give an error otherwise
|
|
|
|
root = window;
|
|
|
|
}
|
|
|
|
|
|
|
|
if ( ! $ ) {
|
|
|
|
$ = jq( root );
|
|
|
|
}
|
|
|
|
|
|
|
|
cjsRequires( root, $ );
|
|
|
|
return factory( $, root, root.document );
|
|
|
|
};
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
cjsRequires( window, jq );
|
|
|
|
module.exports = factory( jq, window, window.document );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
// Browser
|
|
|
|
factory( jQuery, window, document );
|
|
|
|
}
|
|
|
|
}(function( $, window, document, undefined ) {
|
|
|
|
'use strict';
|
|
|
|
var DataTable = $.fn.dataTable;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Fairly simply, this plug-in will take the data from an API result set
|
|
|
|
* and sum it, returning the summed value. The data can come from any data
|
|
|
|
* source, including column data, cells or rows.
|
|
|
|
*
|
|
|
|
* Note that it will attempt to 'deformat' any string based data that is passed
|
|
|
|
* into it - i.e. it will strip any non-numeric characters in order to make a
|
|
|
|
* best effort attempt to sum all data types. This can be useful when working
|
|
|
|
* with formatting numbers such as currency. However the trade-off is that no
|
|
|
|
* error is thrown if non-numeric data is passed in. You should be aware of this
|
|
|
|
* in case unexpected values are returned - likely the input data is not what is
|
|
|
|
* expected.
|
|
|
|
*
|
|
|
|
* @name sum()
|
|
|
|
* @summary Sum the values in a data set.
|
|
|
|
* @author [Allan Jardine](http://datatables.net)
|
|
|
|
* @requires DataTables 1.10+
|
|
|
|
*
|
|
|
|
* @returns {Number} Summed value
|
|
|
|
*
|
|
|
|
* @example
|
|
|
|
* // Simply get the sum of a column
|
|
|
|
* var table = $('#example').DataTable();
|
|
|
|
* table.column( 3 ).data().sum();
|
|
|
|
*
|
|
|
|
* @example
|
|
|
|
* // Insert the sum of a column into the columns footer, for the visible
|
|
|
|
* // data on each draw
|
|
|
|
* $('#example').DataTable( {
|
|
|
|
* drawCallback: function () {
|
|
|
|
* var api = this.api();
|
|
|
|
* $( api.table().footer() ).html(
|
|
|
|
* api.column( 4, {page:'current'} ).data().sum()
|
|
|
|
* );
|
|
|
|
* }
|
|
|
|
* } );
|
|
|
|
*/
|
|
|
|
DataTable.Api.register('sum()', function () {
|
|
|
|
return this.flatten().reduce(function (a, b) {
|
|
|
|
if (typeof a === 'string') {
|
|
|
|
a = a.replace(/[^\d.-]/g, '') * 1;
|
|
|
|
}
|
|
|
|
if (typeof b === 'string') {
|
|
|
|
b = b.replace(/[^\d.-]/g, '') * 1;
|
|
|
|
}
|
|
|
|
return a + b;
|
|
|
|
}, 0);
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
return DataTable;
|
|
|
|
}));
|