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/sorting/enum.js

90 lines
2.3 KiB
JavaScript

/*! © 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;
/**
* Sort data by a defined enumerated (enum) list. The options for the values in
* the enum are defined by passing the values in an array to the method
* `DataTable.enum`. Type detection and sorting plug-ins for DataTables will
* automatically be generated and added to the table.
*
* For full details and instructions please see [this DataTables blog
* post](//datatables.net/blog/2016-06-16).
*
* @name enum
* @summary Dynamically create enum sorting options for a DataTable
* @author [SpryMedia Ltd](http://datatables.net)
*
* @example
* DataTable.enum( [ 'High', 'Medium', 'Low' ] );
*
* new DataTable('#myTable');
*/
var unique = 0;
var types = DataTable.ext.type;
// Using form DataTable.enum breaks at least YuiCompressor since enum is
// a reserved word in JavaScript
DataTable['enum'] = function (arr) {
var name = 'enum-' + unique++;
var lookup = window.Map ? new Map() : {};
for (var i = 0, ien = arr.length; i < ien; i++) {
lookup[arr[i]] = i;
}
// Add type detection
types.detect.unshift(function (d) {
return lookup[d] !== undefined ? name : null;
});
// Add sorting method
types.order[name + '-pre'] = function (d) {
return lookup[d];
};
};
return DataTable;
}));