| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- /**
- * 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://sprymedia.co.uk)
- * @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().to$().html(
- * api.column( 4, {page:'current'} ).data().sum()
- * );
- * }
- * } );
- */
-
- jQuery.fn.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 );
- } );
|