You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Plugins/dataRender/datetime.mjs

93 lines
2.9 KiB
JavaScript

/*! © SpryMedia Ltd - datatables.net/license */
import jQuery from 'jquery';
import DataTable from 'datatables.net';
// Allow reassignment of the $ variable
let $ = jQuery;
/**
* NOTE - As of DataTables 1.12, DataTables has a built in date / time renderer
* which should be used in place of this renderer. See
* [the manual](https://datatables.net/manual/data/renderers#Date-and-time-helpers)
* for details.
*
* Date / time formats often from back from server APIs in a format that you
* don't wish to display to your end users (ISO8601 for example). This rendering
* helper can be used to transform any source date / time format into something
* which can be easily understood by your users when reading the table, and also
* by DataTables for sorting the table.
*
* The [MomentJS library](http://momentjs.com/) is used to accomplish this and
* you simply need to tell it which format to transfer from, to and specify a
* locale if required.
*
* This function should be used with the `dt-init columns.render` configuration
* option of DataTables.
*
* It accepts one, two or three parameters:
*
* * `DataTable.render.moment( to );`
* * `DataTable.render.moment( from, to );`
* * `DataTable.render.moment( from, to, locale );`
*
* Where:
*
* * `to` - the format that will be displayed to the end user
* * `from` - the format that is supplied in the data (the default is ISO8601 -
* `YYYY-MM-DD`)
* * `locale` - the locale which MomentJS should use - the default is `en`
* (English).
*
* @name datetime
* @summary Convert date / time source data into one suitable for display
* @author [Allan Jardine](http://datatables.net)
* @requires DataTables 1.10+, Moment.js 1.7+
*
* @example
* // Convert ISO8601 dates into a simple human readable format
* $('#example').DataTable( {
* columnDefs: [ {
* targets: 1,
* render: DataTable.render.moment( 'Do MMM YYYY' )
* } ]
* } );
*
* @example
* // Specify a source format - in this case a unix timestamp
* $('#example').DataTable( {
* columnDefs: [ {
* targets: 2,
* render: DataTable.render.moment( 'X', 'Do MMM YY' )
* } ]
* } );
*
* @example
* // Specify a source format and locale
* $('#example').DataTable( {
* columnDefs: [ {
* targets: 2,
* render: DataTable.render.moment( 'YYYY/MM/DD', 'Do MMM YY', 'fr' )
* } ]
* } );
*/
DataTable.render.moment = function (from, to, locale) {
// Argument shifting
if (arguments.length === 1) {
to = from;
from = 'YYYY-MM-DD';
}
return function (d, type, row) {
if (!d) {
return type === 'sort' || type === 'type' ? 0 : d;
}
var m = window.moment(d, from, locale, true);
// Order and type get a number value from Moment, everything else
// sees the rendered value
return m.format(type === 'sort' || type === 'type' ? 'x' : to);
};
};
export default DateTime;