mirror of
https://github.com/Mottie/tablesorter.git
synced 2024-11-15 23:54:22 +00:00
275 lines
20 KiB
Markdown
275 lines
20 KiB
Markdown
tablesorter (FORK) is a jQuery plugin for turning a standard HTML table with THEAD and TBODY tags into a sortable table without page refreshes.
|
|
tablesorter can successfully parse and sort many types of data including linked data in a cell.
|
|
|
|
### Notice!
|
|
|
|
* Because of the change to the internal cache, the tablesorter v2.16+ core, filter widget and pager (both plugin & widget) will only work with the same version or newer files.
|
|
|
|
### [Documentation](//mottie.github.io/tablesorter/docs/)
|
|
|
|
* See the [full documentation](//mottie.github.io/tablesorter/docs/).
|
|
* All of the [original document pages](//tablesorter.com/docs/) have been included.
|
|
* Information from my blog post on [undocumented options](//wowmotty.blogspot.com/2011/06/jquery-tablesorter-missing-docs.html) and lots of new demos have also been included.
|
|
* Change log moved from included text file into the [wiki documentation](//github.com/Mottie/tablesorter/wiki/Changes).
|
|
|
|
### Demos
|
|
|
|
* [Basic alpha-numeric sort Demo](//mottie.github.com/tablesorter/).
|
|
* Links to demo pages can be found within the main [documentation](//mottie.github.io/tablesorter/docs/).
|
|
* More demos & playgrounds - updated in the [wiki pages](//github.com/Mottie/tablesorter/wiki).
|
|
|
|
### Features
|
|
|
|
* Multi-column alphanumeric sorting and filtering.
|
|
* Multi-tbody sorting - see the [options](//mottie.github.io/tablesorter/docs/index.html#options) table on the main document page.
|
|
* Supports [Bootstrap v2 and 3](//mottie.github.io/tablesorter/docs/example-widget-bootstrap-theme.html)
|
|
* Parsers for sorting text, alphanumeric text, URIs, integers, currency, floats, IP addresses, dates (ISO, long and short formats) & time. [Add your own easily](//mottie.github.io/tablesorter/docs/example-parsers.html).
|
|
* Inline editing - see [demo](//mottie.github.io/tablesorter/docs/example-widget-editable.html)
|
|
* Support for ROWSPAN and COLSPAN on TH elements.
|
|
* Support secondary "hidden" sorting (e.g., maintain alphabetical sort when sorting on other criteria).
|
|
* Extensibility via [widget system](//mottie.github.io/tablesorter/docs/example-widgets.html).
|
|
* Cross-browser: IE 6.0+, FF 2+, Safari 2.0+, Opera 9.0+, Chrome 5.0+.
|
|
* Small code size, starting at 25K minified
|
|
* Works with jQuery 1.2.6+ (jQuery 1.4.1+ needed with some widgets).
|
|
* Works with jQuery 1.9+ ($.browser.msie was removed; needed in the original version).
|
|
|
|
### Licensing
|
|
|
|
* Copyright (c) 2007 Christian Bach.
|
|
* Original examples and docs at: [http://tablesorter.com](//tablesorter.com).
|
|
* Dual licensed under the [MIT](//www.opensource.org/licenses/mit-license.php) and [GPL](//www.gnu.org/licenses/gpl.html) licenses.
|
|
|
|
### Download
|
|
|
|
* Get [all files](https://github.com/Mottie/tablesorter/archive/master.zip)
|
|
* Use [bower](http://bower.io/): `bower install jquery.tablesorter`
|
|
* Use [node.js](http://nodejs.org/): `npm install tablesorter`
|
|
* CDNJS: [https://cdnjs.com/libraries/jquery.tablesorter](https://cdnjs.com/libraries/jquery.tablesorter)
|
|
|
|
### Related Projects
|
|
|
|
* [Plugin for Rails](//github.com/themilkman/jquery-tablesorter-rails). Maintained by [themilkman](//github.com/themilkman).
|
|
* [Bootsole](//alexweissman.github.io/bootsole/) (OOP templating engine using tablesorter) by [alexweissman](//github.com/alexweissman).
|
|
|
|
### Contributing
|
|
|
|
If you would like to contribute, please...
|
|
|
|
1. Fork.
|
|
2. Make changes in a branch & add unit tests.
|
|
3. Run `grunt test` (if qunit fails, run it again - it's fickle).
|
|
4. Create a pull request.
|
|
|
|
### Special Thanks
|
|
|
|
* Big shout-out to [Nick Craver](//github.com/NickCraver) for getting rid of the `eval()` function that was previously needed for multi-column sorting.
|
|
* Big thanks to [thezoggy](//github.com/thezoggy) for helping with code, themes and providing valuable feedback.
|
|
* Big thanks to [ThsSin-](//github.com/TheSin-) for taking over for a while and also providing valuable feedback.
|
|
* Also extra thanks to [christhomas](//github.com/christhomas) and [Lynesth](//github.com/Lynesth) for help with code.
|
|
* And, of course thanks to everyone else that has contributed, and continues to contribute to this forked project!
|
|
|
|
### Questions?
|
|
|
|
* Check the [FAQ](//github.com/Mottie/tablesorter/wiki/FAQ) page.
|
|
* Search the [main documentation](//mottie.github.io/tablesorter/docs/) (click the menu button in the upper left corner).
|
|
* Search the [issues](//github.com/Mottie/tablesorter/issues) to see if the question or problem has been brought up before, and hopefully resolved.
|
|
* If someone is available, ask your question in the `#tablesorter` IRC channel at freenode.net.
|
|
* Ask your question at [Stackoverflow](//stackoverflow.com/questions/tagged/tablesorter) using a tablesorter tag.
|
|
* Please don't open a [new issue](//github.com/Mottie/tablesorter/issues) unless it really is an issue with the plugin, or a feature request. Thanks!
|
|
|
|
### Recent Changes
|
|
|
|
View the [complete change log here](//github.com/Mottie/tablesorter/wiki/Changes).
|
|
|
|
#### <a name="v2.20.1">Version 2.20.1</a> (2/20/2015)
|
|
|
|
* Filter: Fixed a major issue with the filter widget not working properly.
|
|
|
|
#### <a name="v2.20.0">Version 2.20.0</a> (2/20/2015)
|
|
|
|
* Grunt build process
|
|
* Added code to use npm & grunt to build a custom widget file.
|
|
* An `example.json` file has been added as an example of how to set up a custom build file; see the [Customize](https://github.com/Mottie/tablesorter/wiki/Customize) wiki page for more details.
|
|
* With each build, the following occurs:
|
|
* `jquery.tablesorter.js` is copied to the `dist/js` folder.
|
|
* All `less` files are copied to the `dist/css/less` folder.
|
|
* All images, including the pager icons, is copied into the `dist/css/images` folder.
|
|
* A `jquery.tablesorter.widgets.js` file is created from the selected widgets into the `dist/js` folder, then copied back to the `js` folder to allow jsFiddle demos to continue working.
|
|
* A `.min.js` file is created for the core & widget file in the `dist/js` folder, then all parsers & widgets are compressed separately in the `dist/js/parsers` and `dist/js/widgets` folder, respectively.
|
|
* A `.min.css` file is created for all themes, dragtable, filter-formatter & pager styles.
|
|
* The black-ice theme within the distribution folder is renamed to `theme.blackice.min.css` (no dash). See [issue #785](https://github.com/Mottie/tablesorter/issues/785).
|
|
* Files - the following changes to files have been made for the Grunt build process (this might break a few jsFiddle demos):
|
|
* `jquery.metadata.js` has been moved into the `js/extras` folder.
|
|
* `jquery.tablesorter.widgets-filter-formatter.js`
|
|
* moved to the `js/widgets` folder
|
|
* Broken into two files, and renamed to `widget-filter-formatter-html5.js` and `widget-filter-formatter-jui.js`.
|
|
* `jquery.tablesorter.widgets-filter-formatter-select2.js`
|
|
* Moved into the `js/widgets` folder.
|
|
* Renamed to `widget-filter-formatter-select2.js`
|
|
* `jquery.tablesorter.widgets.js`
|
|
* Has been broken up into separate widget files: `widget-column.js`, `widget-filter.js`, `widget-resizable.js`, `widget-saveSort.js`, `widget-stickyHeaders.js`, `widget-storage.js` and `widget-uitheme.js`.
|
|
* A default build creates a file of the above widgets combined in the `dist/js` folder.
|
|
* A copy of this newly created combined widget file is then copied back to the `js/` folder to allow external demos (jsFiddle) to still work.
|
|
* Resolve jQuery unbinding issue
|
|
* When unbinding events in jQuery versions 1.7 to 1.8, if an event list contains double spaces
|
|
|
|
```js
|
|
$('table').unbind('a b');
|
|
```
|
|
|
|
all events will be removed from that element (see [this demo](http://jsfiddle.net/Mottie/zL6uory0/3/))!
|
|
* Unbinding of events updated in the Core plugin & pager addon, and the following widgets: cssStickHeaders, editable, filter, formatter, math, staticRow & stickyHeaders.
|
|
* Modified `config.cache` to only include non-info only tbodies.
|
|
* This modification effects the core & the following widgets: chart, filter, grouping, pager (widget & addon).
|
|
* Thanks to [prijutme4ty](https://github.com/prijutme4ty) for working on this change.
|
|
* See [pull request #822](https://github.com/Mottie/tablesorter/pull/822) for more details.
|
|
* Core
|
|
* Add `cssNoSort` option. Add the class name from that option to any element within a header will prevent a click on that element and any containing elements from causing a sort.
|
|
* Remove `cssAllowClicks` option. It wasn't working as intended and actually prevented sorting. It was replaced by it's opposite, the `cssNoSort` option.
|
|
* Make core work with jQuery v1.2.6, again.
|
|
* Make `getElementText` function public; with a bug fix from [prijutme4ty](https://github.com/prijutme4ty) in [pull](https://github.com/Mottie/tablesorter/pull/823).
|
|
* Docs
|
|
* Add a [css column & row highlighting demo](http://mottie.github.io/tablesorter/docs/example-css-highlighting.html).
|
|
* Update jQuery UI & remove "latest" from the file name.
|
|
* Filter
|
|
* Prevent javascript error when empty rows (`<tr></tr>`) are included in the tbody. Fixes [issue #819](https://github.com/Mottie/tablesorter/issues/819).
|
|
* Prevent javascript error when performing an "any-match" search triggered on the table without an included external `data-column="all"` input.
|
|
* Ensure that an "any-match" search is a string value.
|
|
* Added "any-match" specific column search by using `#:{query}` where `#` is a one-based column index and `{query}` is the query. Thanks to [MaksimProgr](https://github.com/MaksimProgr) for providing the code in [pull request #817](https://github.com/Mottie/tablesorter/pull/817). This also fixes [issue #747](https://github.com/Mottie/tablesorter/issues/747).
|
|
* Added `filter_columnAnyMatch` option to allow disabling the "any-match" specific column search.
|
|
* Pager
|
|
* Fix initial start page default for the widget only.
|
|
* Update pager `ajaxProcessing` code demo to prevent unordered JSON keys from adding content to incorrect columns. Fixes [issue #818](https://github.com/Mottie/tablesorter/issues/818).
|
|
* Parsers
|
|
* Fix checkbox parser, in the `parser-input-select.js` file, so that it now properly updates when changed.
|
|
|
|
#### <a name="v2.19.1">Version 2.19.1</a> (2/9/2015)
|
|
|
|
* Core
|
|
* Replace all double quote with a single - OCD made me do it!
|
|
* Save raw table cell text (unparsed) into the cache.
|
|
* Core/Widgets
|
|
* Fix a problem with event unbinding when using jQuery versions 1.7 & 1.8.
|
|
* When an `unbind` (or `off`) event string contains an untrimmed or central double space, **all** events on the element become unbound.
|
|
* See [jQuery bug](http://bugs.jquery.com/ticket/10705) or [this demo](http://jsfiddle.net/Mottie/zL6uory0/1/).
|
|
* Updated the core, and the cssStickyHeaders, editable, filter, formatter, math, pager (addon & widget), staticRow widgets and stickyHeaders widgets.
|
|
* Chart
|
|
* Add more data points.
|
|
* Filter
|
|
* Add a [second custom filter search type example](http://mottie.github.io/tablesorter/docs/example-widget-filter-custom-search2.html) which allows finding if the query number is within a range.
|
|
* Math
|
|
* Add `math_event` option.
|
|
* StaticRow
|
|
* Add `staticRow_event` option.
|
|
|
|
#### <a name="v2.19.0">Version 2.19.0</a> (2/7/2015)
|
|
|
|
* Core
|
|
* Add AMD/browserify support; See [pull #786](https://github.com/Mottie/tablesorter/pull/786), thanks to [mwiencek](https://github.com/mwiencek)!
|
|
* Resort variable can now contain a new sort. See [issue #782](https://github.com/Mottie/tablesorter/issues/782).
|
|
* Prevent resort when `serverSideSorting` is `true`. Fixes [issue #764](https://github.com/Mottie/tablesorter/issues/764).
|
|
* Add `resort` option. It is used as the fallback value when no resort parameter is included with the "updateAll", "update", "addRows" and "updateCell" methods.
|
|
* Add `removeWidget` function which calls the widget `remove` function & removes the named widget from the `config.widget` option.
|
|
* A `refreshing` parameter was added to the widget remove function; when `true` it indicates that a `refreshWidgets` method was triggered and that the widget will only be temporarily removed.
|
|
* Make fixColumnWidth a public function (`$.tablesorter.fixColumnWidth`). Calling it will refresh set column widths dynamically. See [issue #680](https://github.com/Mottie/tablesorter/issues/680).
|
|
* The default `textExtraction` function has been optimized - `node.innerText` was completely removed as it is significantly slower in IE.
|
|
* Modified the "updateCell" method to not reapply widgets if the resort parameter is `false`; this may resolve issue with widgets causing elements to lose focus.
|
|
* Updated the `refreshWidgets` to use the `removeWidget` function. Once the widgets have been refreshed a `"refreshComplete"` event will be triggered.
|
|
* Updated `applyWidget` function to allow passing a callback function.
|
|
* Prevent adding multiple icons on refresh.
|
|
* Trim header text added to aria label.
|
|
* The `updateAll` method no longer restores headers since it is only refreshing.
|
|
* Fix parser check while building cache which can cause unresolving parsers in case the first tbody is empty and remaining tbodies have less rows than a number of tbody. See [pull #814](https://github.com/Mottie/tablesorter/pull/814). Thanks [prijutme4ty](https://github.com/prijutme4ty)!
|
|
* Docs
|
|
* Specify pager's `pageSet` method requires a one-based index value.
|
|
* Miscellaneous corrections & fixes. Thanks [prijutme4ty](https://github.com/prijutme4ty)!
|
|
* Remove `uitheme` widget option (it was removed in v2.14.0, but not properly documented). Pertinent information on how to modify the uitheme widget class names was moved to the core `theme` documentation.
|
|
* Add a new pager variables section which contains some useful variables within the pager object (`table.config.pager`).
|
|
* Update "jQuery data" demo to show the difference between setting a data-attribute and jQuery data directly.
|
|
* Add api documentation for using the `getColumnData` function.
|
|
* Parsers
|
|
* Add countdown parser (hh:mm:ss) - demo included with the [duration parser](http://mottie.github.io/tablesorter/docs/example-parsers-duration.html).
|
|
* Update input-select parser to use the `resort` option.
|
|
* Widgets (general)
|
|
* Build widget & storage extension: Pass `"null"` to `$.parseJSON` as a fallback. Fixes [issue #586](https://github.com/Mottie/tablesorter/issues/586).
|
|
* Update `remove` widget function for columnSelector, cssStickyHeaders, math, pager, repeatHeaders, saveSort & stickyHeaders.
|
|
* Widgets removed from beta: alignChar, columnSelector, math, output, print, reflow & staticRow.
|
|
* AlignChar:
|
|
* Don't add align character when no content is right of it. Prevents adding a hanging decimal, e.g. `3000.`.
|
|
* Chart widget (New; beta):
|
|
* Generic chart widget used to basically extract data from the table and output in multiple formats.
|
|
* Current chart libraries supported: Google charts, Highcharts & FusionCharts.
|
|
* Some additional processing may be required to add extra variables (graph colors, labels, etc).
|
|
* A [demo is available here](http://mottie.github.io/tablesorter/docs/example-widget-chart.html).
|
|
* An example of this widget is also available [here](http://codepen.io/TheSin/pen/GgEeEj).
|
|
* Thanks to [TheSin-](https://github.com/TheSin-) for creating this widget!
|
|
* ColumnSelector:
|
|
* Fix column index issue, again.
|
|
* The `refreshColumnSelector` method has been updated to accept a parameter ([get more details](http://mottie.github.io/tablesorter/docs/example-widget-column-selector.html#methods)):
|
|
* If an array of zero-based column indexes is passed by this method, "auto" mode will be disabled & only columns within the array will be shown - critical or disabled columns will always be shown.
|
|
* If a non-array is passed by this method, the "auto" mode will be enabled.
|
|
* Fixes [issue #798](https://github.com/Mottie/tablesorter/issues/798).
|
|
* A change in "auto" checkbox now triggers a "columnUpdate" event.
|
|
* Dragtable (New; beta)
|
|
* The [dragtable jQuery UI widget](http://akottr.github.io/dragtable/) adds column reordering to a table.
|
|
* This isn't a tablesorter widget, but a modification made to a jQuery UI widget to better integrate with tablesorter - [demo](http://mottie.github.io/tablesorter/docs/example-dragtable.html).
|
|
* A modified version of dragtable has been included in the "extras" folder; this is a jQuery UI widget, not a tablesorter widget!
|
|
|
|
```js
|
|
$(function () {
|
|
$('table')
|
|
.dragtable({
|
|
dragHandle: '.table-handle',
|
|
excludeFooter: true
|
|
})
|
|
.tablesorter({
|
|
theme: 'blue',
|
|
selectorSort: '.sort',
|
|
widgets: ['zebra', 'filter']
|
|
});
|
|
});
|
|
```
|
|
|
|
* This modified version, so far, allows column reordering to work with the filter & resizable widgets.
|
|
* Additional work will be required to get this jQuery UI widget to work with the scroller, columnSelector & stickyHeaders widgets.
|
|
* Fixes issue [#781](https://github.com/Mottie/tablesorter/issues/781), and portions of issue [#215](https://github.com/Mottie/tablesorter/issues/215) and [#186](https://github.com/Mottie/tablesorter/issues/186).
|
|
* Editable
|
|
* Update to add a `editable_columnsArray` which is created from the `editable_columns` option. When `editable_columns` contains a string (e.g. `0-3`), this option will contain an array of zero-based column indexes.
|
|
* The dragtable mod widget can then use this option to rearrange and maintain editable columns properly.
|
|
* Filter
|
|
* Hide filter row using the `filtered` class name (`table.config.widgetOptions.filter_filteredRow`).
|
|
* Select source, and unparsed filter text now priorities data from the `textAttribute`. Fixes issues with Formatter widget - see [issue #812](https://github.com/Mottie/tablesorter/issues/812).
|
|
* Update select2 filterFormatter code to properly escape regexp characters. Fixes [issue #796](https://github.com/Mottie/tablesorter/issues/796).
|
|
* Normalize `table` parameter for public functions.
|
|
* Formatter (New; beta)
|
|
* This new widget allows you to apply formatting to the columns ([demo](http://mottie.github.io/tablesorter/docs/example-widget-formatter.html)).
|
|
* Fixes [issue #812](https://github.com/Mottie/tablesorter/issues/812).
|
|
* Output
|
|
* Fix trim spaces for header cells.
|
|
* Pager
|
|
* `pageReset` now used while filtering. See [issue #778](https://github.com/Mottie/tablesorter/issues/778).
|
|
* Get most up-to-date filter before setting `pageReset`. Fixes [issue #783](https://github.com/Mottie/tablesorter/issues/783).
|
|
* `filteredRows` now properly calculated when first `tbody` is set with a `cssInfoBlock` class name`.
|
|
* Page size resets to original page setting instead of always 10.
|
|
* Add `pageAndSize` method to set both the page & size.
|
|
* Add `pagerUpdate` method to force a pager update; even if no ajax parameters have changed. Fixes [issue #801](https://github.com/Mottie/tablesorter/issues/801).
|
|
* Add `cachedIndex` variable which is useful if you need to find the currently visible rows within the pager in the internal cache (`table.config.cache`). See the [documentation](http://mottie.github.io/tablesorter/docs/#variable-pager-cache-index) for an example.
|
|
* Update goto selector independently of other elements. Fixes [issue #811](https://github.com/Mottie/tablesorter/issues/811).
|
|
* Modified to apply widgets & fire "pagerComplete" after the cache is built; this specifically applies to ajax tables.
|
|
* Print
|
|
* Ignore columnSelector "auto" setting when `columnSelector_mediaquery` option is disabled (`false`). Fixes [issue #808](https://github.com/Mottie/tablesorter/issues/808).
|
|
* Reflow
|
|
* Trim stored header text.
|
|
* Scroller
|
|
* Resizing & browser zooming should now show proper widths. Fixes issues [#680](https://github.com/Mottie/tablesorter/issues/680) & [#634](https://github.com/Mottie/tablesorter/issues/634).
|
|
* UITheme
|
|
* Now updates properly when dynamically changing the `table.config.theme` option.
|
|
* During an update, add inner wrapper to specific columns that are missing it.
|
|
* Add separate sort class names to both the header & icon element; breaks old demos, but falls in-line with the addition of core css icon class settings in v2.18.3.
|
|
* Themes
|
|
* Add filter row background color; it appears that Chrome uses the `<tr>` background color when the `hideme` class is added to the row.
|
|
* Updated Bootstrap to 3.3.2.
|
|
* Testing
|
|
* Update QUnit.
|
|
* Remove jsHint checks.
|