LengthLinks

Deep linking options parsing support for DataTables

This feature plug-in for DataTables provides a function which will take DataTables options from the browser's URL search string and return an object that can be used to construct a DataTable. This allows deep linking to be easily implemented with DataTables - for example a URL might be myTable?displayStart=10 which will automatically cause the second page of the DataTable to be displayed.

This plug-in works on a whitelist basis - you must specify which initialisation parameters you want the URL search string to specify. Any parameter given in the URL which is not listed will be ignored (e.g. you are unlikely to want to let the URL search string specify the ajax option).

This specification is done by passing an array of property names to the DataTable.deepLink function. If you do which to allow every parameter (I wouldn't recommend it) you can use all instead of an array.

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/features/deepLink/dist/dataTables.deepLink.mjs';

Examples

// Allow a display start point and search string to be specified
 new DataTable(
   '#example',
   DataTable.deepLink(['pageLength', 'search.search'])
 );
// As above, but with a default search
 var options = DataTable.deepLink(['displayStart', 'search.search']);

 new DataTable(
   '#myTable',
   DataTable.util.object.assignDeep({
     search: { search: 'Initial search value' }
   }, options)
 );

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!