Absolute sorting

Keep one or more items at the top and/or bottom of a table when sorting

  • Author: SpryMedia Ltd

When sorting a DataTable you might find that you want to keep a specific item at the top or bottom of the table. For example when sorting a column of numbers, if a value is null or N/A you might want to keep it at the bottom of the table, regardless of if ascending or descending sorting is applied. This plug-in provides that ability.

You must call the DataTable.absoluteOrder with information about the value(s) you wish to make absolute in the sorting order and store the returned value, assigning it to the columns.type option for the column you wish this sorting to be applied to.

For number based columns a DataTable.absoluteOrderNumber function is also available.

Use

This plug-in can be obtained and used in multiple different ways.

Browser

This plug-in is available on the DataTables CDN:

JS

The plug-in will then automatically register itself against a global DataTables instance. This file can also be used if you are using an AMD loader such as Require.js.

Note that if you are using multiple plug-ins, it can be beneficial in terms of performance to combine the plug-ins into a single file and host it on your own server, rather than making multiple requests to the DataTables CDN.

NPM

The plug-ins are all available on NPM (which can also be used with Yarn or any other Javascript package manager) as part of the datatables.net-plugins package. To use this plug-in, first install the plug-ins package:

npm install datatables.net-plugins

Then import datatables.net, any other DataTables extensions you need, plus the plug-in:

import DataTable from 'datatables.net';
import 'datatables.net-plugins/sorting/absolute.mjs';

Example

var namesType = DataTable.absoluteOrder( [
    { value: '', position: 'top' }
  ] );

  var numbersType = DataTable.absoluteOrderNumber( [
    { value: 'N/A', position: 'bottom' }
  ] );

  new DataTable('#example', {
    columnDefs: [
      { type: namesType, targets: 0 },
      { type: numbersType, targets: 1 }
    ]
  } );

Version control

If you have any ideas for how this plug-in can be improved, or spot anything that is in error, it is available on GitHub and pull requests are very welcome!