version bump

This commit is contained in:
Mottie 2015-05-17 15:32:53 -05:00
parent 00c32a1774
commit 13e3d0593d
48 changed files with 4137 additions and 3174 deletions

117
README.md
View File

@ -1,5 +1,5 @@
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.
tablesorter can successfully parse and sort many types of data including linked data in a cell. This forked version adds lots of new enhancements including: alphanumeric sorting, pager callback functons, multiple widgets providing column styling, ui theme application, sticky headers, column filters and resizer, as well as extended documentation with a lot more demos.
### Notice!
@ -82,6 +82,83 @@ If you would like to contribute, please...
View the [complete change log here](//github.com/Mottie/tablesorter/wiki/Changes).
#### <a name="v2.22.0">Version 2.22.0</a> (5/17/2015)
* Docs
* Lots of minor version updates, spelling corrections & clarifications in wording.
* Update box-sizing styles ([ref](http://www.paulirish.com/2012/box-sizing-border-box-ftw/)).
* Update `characterEquivalents` cross-reference to correctly match the code of the plugin.
* Add Build table widget example resulting HTML for the json example.
* Grunt build
* `package.json` files now points to the entire "dist" folder. See [issue #881](https://github.com/Mottie/tablesorter/issues/881).
* Add `grunt quick` build to only update widget & parser files; it skips updating the dates in the widgets & combined files.
* Core
* The `isDigit` function now reports `false` on empty strings. See [issue #865](https://github.com/Mottie/tablesorter/issues/865).
* Add pointer events options (`pointerClick`, `pointerDown` and `pointerUp`). Fixes [issue #885](https://github.com/Mottie/tablesorter/issues/885).
* Prevent js error when using the `computeColumnIndex` function on empty tables (used by the math widget). Fixes [issue #889](https://github.com/Mottie/tablesorter/issues/889).
* Prevent js error when `sortList` includes an out-of-bounds column. Fixes [issue #908](https://github.com/Mottie/tablesorter/issues/908).
* Centralize extractor & parser code; this code is used by the main build cache loop and the "addRows" & "updateCell" methods.
* Child row content is now properly stored in row data as an array of arrays.
* Add "o" to `sortLocaleCompare` replacement table & update docs.
* Replace all instances of using jQuery each with plain javascript. Fixes [issue #827](https://github.com/Mottie/tablesorter/issues/827).
* Editable
* Modify `trimContent` option & use HTML to modify text. Fixes [issue #886](https://github.com/Mottie/tablesorter/issues/886).
* Fix `selectAll` & change `tbody` mouseleave to complete editing to `thead` mouseenter. Fixes [issue #848](https://github.com/Mottie/tablesorter/issues/848).
* Only make table cell child div/span contenteditable. See [issue #900](https://github.com/Mottie/tablesorter/issues/900).
* Add remove widget code & allow dynamic updating if the "no-edit" class changes. Fixes [issue #900](https://github.com/Mottie/tablesorter/issues/900).
* Filter
* Regex filter searches now cache the created regex object for each query to optimize speed & a regex search now properly uses case-sensitive content
* Add `data` parameter to `filter_functions`. This is the same data used by the filter search type functions. See [issue #891](https://github.com/Mottie/tablesorter/issues/891).
* Any match searches which target specific columns will no longer save each filter to its respective column; see ["AnyMatch Searches"](http://mottie.github.io/tablesorter/docs/example-widget-filter-any-match.html#anymatch_searches) documentation.
* Operator filter searchs now ignore empty strings (because `"" < 10` is `true`).
* Clean up `parseFilter` function.
* Add `filter_childByColumn` option.
* Setting this to `true` allows searching through the child rows by column.
* When `false`, the search behaves as before and all child row content is included in the search of every column.
* See a [demo here](http://mottie.github.io/tablesorter/docs/example-child-rows-filtered.html#child-by-column).
* Fixes issues [#396](https://github.com/Mottie/tablesorter/issues/396) &amp; [#574](https://github.com/Mottie/tablesorter/issues/574).
* Code cleanup - added a bunch of whitespace & forced line wraps at around 120.
* Prevent setFilter function from setting the same filters after an update. Fixes issues [#903](https://github.com/Mottie/tablesorter/issues/903) &amp; [#733](https://github.com/Mottie/tablesorter/issues/733).
* Grouping
* Add keyboard accessibility to group headers. See [issue #260](https://github.com/Mottie/tablesorter/issues/260).
* Math
* Fix issues with `isNaN('') // false`. See [issue #873](https://github.com/Mottie/tablesorter/issues/873).
* Reapply column indexing after updates & prevent js error on empty tables. Fixes [issue #889](https://github.com/Mottie/tablesorter/issues/889).
* Reduce update time to 20ms. See [issue #898](https://github.com/Mottie/tablesorter/issues/898).
* Exclude ignored cells even if `math_ignore` is empty. Fixes [issue #896](https://github.com/Mottie/tablesorter/issues/896).
* Output
* Add BOM back to downloaded file. Fixes [issue #862](https://github.com/Mottie/tablesorter/issues/862).
* Add `output_hiddenColumns` option. Fixes [issue #869](https://github.com/Mottie/tablesorter/issues/869).
* Add known issues section about downloading in Safari.
* Pager (addon & widget)
* Replace all instances of using jQuery each with plain javascript. Fixes [issue #827](https://github.com/Mottie/tablesorter/issues/827).
* Resizable
* Refreshing the widget will now preserve the storage. See [issue #874](https://github.com/Mottie/tablesorter/issues/874).
* Scroller
* Set `overflow-x` auto & apply border-box to scroller. See [issue #135](https://github.com/Mottie/tablesorter/issues/135).
* Remove `pointer-events: none` from fixed column. See [issue #878](https://github.com/Mottie/tablesorter/issues/878).
* Hide fixed column scrollbar in IE9 & older. See [issue #135](https://github.com/Mottie/tablesorter/issues/135).
* Update `pointer-events` and tabbing accessibility. See [issue #135](https://github.com/Mottie/tablesorter/issues/135).
* `setFixedColumnSize` now properly updates with no set size.
* Add `scroller_addFixedOverlay`
* When `true`, a fixed column overlay is added for additional styling. See [issue #887](https://github.com/Mottie/tablesorter/issues/887).
* It includes css [`pointer-events`](http://caniuse.com/#search=pointer-events) set to `none` to allow interaction with elements underneath; make sure your browser supports it!
* Fix selector issue in the remove function.
* Properly refresh column size after an update. Fixes the third part of [issue #906](https://github.com/Mottie/tablesorter/issues/906).
* Parsers
* Add "inputs-numeric" parser. Fixes [issue #888](https://github.com/Mottie/tablesorter/issues/888).
* Add [jQuery Globalize](https://github.com/jquery/globalize) [date](http://jsfiddle.net/Mottie/0j18Lw8r/) & [number](http://jsfiddle.net/Mottie/0j18Lw8r/) parsers.
* "namedNumbers" parser: ignores adjacent puncutation. Fixes [issue #890](https://github.com/Mottie/tablesorter/issues/890).
* input-select parsers:
* Clean up & add event namespaces.
* Now return an empty string if the value is empty; previously, it would return the cell text when the value was empty.
* Network "MAC" parser:
* Return the original string if the address is grossly invalid. Fixes [issue #895](https://github.com/Mottie/tablesorter/issues/895).
* No longer auto-detect as iPv6. See [issue #895](https://github.com/Mottie/tablesorter/issues/895).
* Themes
* Declare font-weight separately. Thanks [nikolas](https://github.com/nikolas) ([pull #866](https://github.com/Mottie/tablesorter/pull/868))!
* Update Boostrap v2.x theme, and add a [Bootstrap v2.x demo](http://mottie.github.io/tablesorter/docs/example-widget-bootstrap-theme-v2.html).
#### <a name="v2.21.5">Version 2.21.5</a> (4/8/2015)
* Filter
@ -106,41 +183,3 @@ View the [complete change log here](//github.com/Mottie/tablesorter/wiki/Changes
* This will work around, but not resolve, [issue #855](https://github.com/Mottie/tablesorter/issues/855).
* Extras
* Update `semver.js` & `semver-mod.js` to v4.3.3.
#### <a name="v2.21.3">Version 2.21.3</a> (3/26/2015)
* Core
* Fix icon targeting for class names
* Modified sort initiation method. A "click" event can now be triggered on a header to initiate a sort - [issue #849](https://github.com/Mottie/tablesorter/pull/849). Thanks [johnjameswhitman](https://github.com/johnjameswhitman).
* General code cleanup; mostly changing `tagName` to `nodeName`.
* Modified, then removed all references to `config.$extraTables` and `config.$extraHeaders` as it was causing a memory leak.
* Docs
* Update jQuery to v1.11.2.
* Update Bootstrap to v3.3.4.
* Grunt Build
* Add custom build file name. See [issue #829](https://github.com/Mottie/tablesorter/issues/829).
* The default custom build file name is now "jquery.tablesorter.custom-widgets.js".
* See the [Customize wiki page](https://github.com/Mottie/tablesorter/wiki/Customize#custom-build) for more details.
* Filter
* Make "disabled" a modifiable class name - modify it in `$.tablesorter.css.filterDisabled`.
* Select2 filter formatter now escapes forward slashes.
* Output:
* Minor code tweak.
* Pager:
* Make `pagerUpdate` method page parameter optional. It was previously required or the page would reset to `0`.
* Remove "refreshComplete" bind on destroy. Fixes [issue #854](https://github.com/Mottie/tablesorter/issues/854).
* Resizable:
* Major overhaul of this widget to now make it compatible with the stickyHeaders widget.
* Sadly, it still doesn't work properly with the updated scroller widget; it's on my to-do list!
* Add a `resizable_targetLast` option to automatically target the last column for resize; instead of needing to hold shift while dragging.
* Scroller:
* Added fixed column support! Fixes issues [#135](https://github.com/Mottie/tablesorter/issues/135), [#689](https://github.com/Mottie/tablesorter/issues/689), [#763](https://github.com/Mottie/tablesorter/issues/763) and [https://github.com/Mottie/tablesorter/issues/804](#804).
* Check out the third table in the [scroller widget demo](http://mottie.github.io/tablesorter/docs/example-widget-scroller.html#group) - change the slider to adjust the number of fixed columns.
* Storage:
* Add option (`widgetOptions.storage_useSessionStorage`) to allow switching from local to session storage. Fixes [#851](https://github.com/Mottie/tablesorter/issues/851).
* Add a bunch of other storage widget options including `storage_tableId`, `storage_group`, `storage_fixedUrl` and `storage_page`. See the [documentation on how they might be useful](http://mottie.github.io/tablesorter/docs/#widget-storage-fixed-url).
* Deprecated `config.fixedUrl` in favor of the `widgetOptions.storage_fixedUrl` option.
* Themes
* Add "hover" class to all hover definitions (for the scroller widget mostly).
* Remove filter element offsetting margins.
* Target `background-color` instead of `background`. Fixes [issue #853](https://github.com/Mottie/tablesorter/issues/853).

View File

@ -1,6 +1,6 @@
/*!
* tablesorter (FORK) pager plugin
* updated 3/26/2015 (v2.21.3)
* updated 5/17/2015 (v2.22.0)
*/
/*jshint browser:true, jquery:true, unused:false */
;(function($) {

View File

@ -1,6 +1,6 @@
{
"name": "tablesorter",
"version": "2.21.5",
"version": "2.22.0",
"dependencies": {
"jquery": ">=1.2.6"
},

View File

@ -1 +1 @@
.tablesorter-bootstrap{width:100%}.tablesorter-bootstrap .tablesorter-header,.tablesorter-bootstrap tfoot td,.tablesorter-bootstrap tfoot th{font:14px/20px Arial,Sans-serif;font-weight:700;position:relative;padding:8px;margin:0 0 18px;list-style:none;background-color:#FBFBFB;background-image:-moz-linear-gradient(top,#fff,#efefef);background-image:-ms-linear-gradient(top,#fff,#efefef);background-image:-webkit-gradient(linear,0 0,0 100%,from(white),to(#efefef));background-image:-webkit-linear-gradient(top,#fff,#efefef);background-image:-o-linear-gradient(top,#fff,#efefef);background-image:linear-gradient(to bottom,#fff,#efefef);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#efefef', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 1px 0 #fff;-moz-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}.tablesorter-bootstrap .tablesorter-header{cursor:pointer}.tablesorter-bootstrap .tablesorter-header-inner{position:relative;padding:4px 18px 4px 4px}.tablesorter-bootstrap .tablesorter-header i.tablesorter-icon{position:absolute;right:2px;top:50%;margin-top:-7px;width:14px;height:14px;background-repeat:no-repeat;line-height:14px;display:inline-block}.tablesorter-bootstrap .bootstrap-icon-unsorted{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAOCAYAAAD5YeaVAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAWVJREFUeNqUUL9Lw2AUTGP8mqGlpBQkNeCSRcckEBcHq1jImMElToKuDvpHFMGhU0BQcHBwLji6CE1B4uB/INQsDi4d2jQ/fPeZxo764OV6915f7lLJ81xot9tCURXqdVEUr7IsO6ffH9Q5BlEUCaLwWxWqTcbYnaIoh0Dw4gAvcWlxq1qt9hqNxg6hUGAP+uIPUrGs0qXLer2+v/pTX6QpxLtkc2U2m53ACb8sSdIDXerSEms2m6+DweAICA4d89KGbduf9MpEVdXQ9/2LVqv1CASHjjn3iq/x1xKFfxQPqGnada1W86bT6SiO42OS3qk3KPStLMvbk8nkfjwen/LLuq6blFymMB0KdUPSGhAcOualjX6/f0bCiC7NaWGPQr0BwaFjzn0gYJqmLAiCA8/zni3LmhuGkQPBoWPOPwQeaPIqD4fDruu6L6Zp5kBw6IudchmdJAkLw3DXcZwnIPjy/FuAAQCiqqWWCAFKcwAAAABJRU5ErkJggg==)}.tablesorter-bootstrap .icon-white.bootstrap-icon-unsorted{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAOBAMAAAALT/umAAAAKlBMVEUAAAD///////////////////////////////////////////////////+Gu8ovAAAADXRSTlMA4EXKBtQqvR0+sxmalc142gAAAFdJREFUCNdjYGDoamAAAjZbMxCVfvd6AgMDd+3du9UMDKx3hWSvMjBwXZww8RYDGuC53NB8h4GB8a617UUGBs7Yu3cjGRhYVO9eVQFKOskKOQApFmUgBwBZ+xXRTttNdAAAAABJRU5ErkJggg==)}.tablesorter-bootstrap tr.odd>td{background-color:#f9f9f9}.tablesorter-bootstrap tbody>.even:hover>td,.tablesorter-bootstrap tbody>.odd:hover>td,.tablesorter-bootstrap tbody>tr.hover>td{background-color:#f5f5f5}.tablesorter-bootstrap tr.even>td{background-color:#fff}.tablesorter-bootstrap .tablesorter-processing{background-image:url(data:image/gif;base64,R0lGODlhFAAUAKEAAO7u7lpaWgAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQBCgACACwAAAAAFAAUAAACQZRvoIDtu1wLQUAlqKTVxqwhXIiBnDg6Y4eyx4lKW5XK7wrLeK3vbq8J2W4T4e1nMhpWrZCTt3xKZ8kgsggdJmUFACH5BAEKAAIALAcAAAALAAcAAAIUVB6ii7jajgCAuUmtovxtXnmdUAAAIfkEAQoAAgAsDQACAAcACwAAAhRUIpmHy/3gUVQAQO9NetuugCFWAAAh+QQBCgACACwNAAcABwALAAACE5QVcZjKbVo6ck2AF95m5/6BSwEAIfkEAQoAAgAsBwANAAsABwAAAhOUH3kr6QaAcSrGWe1VQl+mMUIBACH5BAEKAAIALAIADQALAAcAAAIUlICmh7ncTAgqijkruDiv7n2YUAAAIfkEAQoAAgAsAAAHAAcACwAAAhQUIGmHyedehIoqFXLKfPOAaZdWAAAh+QQFCgACACwAAAIABwALAAACFJQFcJiXb15zLYRl7cla8OtlGGgUADs=);position:absolute;z-index:1000}caption{background-color:#fff}.tablesorter-bootstrap .tablesorter-filter-row input.tablesorter-filter,.tablesorter-bootstrap .tablesorter-filter-row select.tablesorter-filter{width:98%;margin:0;padding:4px 6px;background-color:#fff;color:#333;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:height .1s ease;-moz-transition:height .1s ease;-o-transition:height .1s ease;transition:height .1s ease}.tablesorter-bootstrap .tablesorter-filter-row .tablesorter-filter.disabled{background-color:#eee;cursor:not-allowed}.tablesorter-bootstrap .tablesorter-filter-row{background-color:#eee}.tablesorter-bootstrap .tablesorter-filter-row td{background-color:#eee;line-height:normal;text-align:center;padding:4px 6px;vertical-align:middle;-webkit-transition:line-height .1s ease;-moz-transition:line-height .1s ease;-o-transition:line-height .1s ease;transition:line-height .1s ease}.tablesorter-bootstrap .tablesorter-filter-row.hideme td{padding:2px;margin:0;line-height:0}.tablesorter-bootstrap .tablesorter-filter-row.hideme *{height:1px;min-height:0;border:0;padding:0;margin:0;opacity:0;filter:alpha(opacity=0)}.tablesorter .filtered{display:none}.tablesorter-bootstrap .tablesorter-pager select{padding:4px 6px}.tablesorter-bootstrap .tablesorter-pager .pagedisplay{border:0}.tablesorter .tablesorter-errorRow td{text-align:center;cursor:pointer;background-color:#e6bf99}
.tablesorter-bootstrap{width:100%}.tablesorter-bootstrap .tablesorter-header,.tablesorter-bootstrap tfoot td,.tablesorter-bootstrap tfoot th{font:14px/20px Arial,Sans-serif;font-weight:700;position:relative;padding:8px;margin:0 0 18px;list-style:none;background-color:#FBFBFB;background-image:-moz-linear-gradient(top,#fff,#efefef);background-image:-ms-linear-gradient(top,#fff,#efefef);background-image:-webkit-gradient(linear,0 0,0 100%,from(white),to(#efefef));background-image:-webkit-linear-gradient(top,#fff,#efefef);background-image:-o-linear-gradient(top,#fff,#efefef);background-image:linear-gradient(to bottom,#fff,#efefef);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#efefef', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 1px 0 #fff;-moz-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}.tablesorter-bootstrap .tablesorter-header{cursor:pointer}.tablesorter-bootstrap .tablesorter-header-inner{position:relative;padding:4px 18px 4px 4px}.tablesorter-bootstrap .tablesorter-header i.tablesorter-icon{position:absolute;right:2px;top:50%;margin-top:-7px;width:14px;height:14px;background-repeat:no-repeat;line-height:14px;display:inline-block}.tablesorter-bootstrap .bootstrap-icon-unsorted{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAOCAYAAAD5YeaVAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAWVJREFUeNqUUL9Lw2AUTGP8mqGlpBQkNeCSRcckEBcHq1jImMElToKuDvpHFMGhU0BQcHBwLji6CE1B4uB/INQsDi4d2jQ/fPeZxo764OV6915f7lLJ81xot9tCURXqdVEUr7IsO6ffH9Q5BlEUCaLwWxWqTcbYnaIoh0Dw4gAvcWlxq1qt9hqNxg6hUGAP+uIPUrGs0qXLer2+v/pTX6QpxLtkc2U2m53ACb8sSdIDXerSEms2m6+DweAICA4d89KGbduf9MpEVdXQ9/2LVqv1CASHjjn3iq/x1xKFfxQPqGnada1W86bT6SiO42OS3qk3KPStLMvbk8nkfjwen/LLuq6blFymMB0KdUPSGhAcOualjX6/f0bCiC7NaWGPQr0BwaFjzn0gYJqmLAiCA8/zni3LmhuGkQPBoWPOPwQeaPIqD4fDruu6L6Zp5kBw6IudchmdJAkLw3DXcZwnIPjy/FuAAQCiqqWWCAFKcwAAAABJRU5ErkJggg==)}.tablesorter-bootstrap .icon-white.bootstrap-icon-unsorted{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAOBAMAAAALT/umAAAAKlBMVEUAAAD///////////////////////////////////////////////////+Gu8ovAAAADXRSTlMA4EXKBtQqvR0+sxmalc142gAAAFdJREFUCNdjYGDoamAAAjZbMxCVfvd6AgMDd+3du9UMDKx3hWSvMjBwXZww8RYDGuC53NB8h4GB8a617UUGBs7Yu3cjGRhYVO9eVQFKOskKOQApFmUgBwBZ+xXRTttNdAAAAABJRU5ErkJggg==)}.tablesorter-bootstrap tr.odd>td{background-color:#f9f9f9}.tablesorter-bootstrap tbody>.even:hover>td,.tablesorter-bootstrap tbody>.odd:hover>td,.tablesorter-bootstrap tbody>tr.hover>td{background-color:#f5f5f5}.tablesorter-bootstrap tbody>tr.even>td{background-color:#fff}.tablesorter-bootstrap .tablesorter-processing{background-image:url(data:image/gif;base64,R0lGODlhFAAUAKEAAO7u7lpaWgAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQBCgACACwAAAAAFAAUAAACQZRvoIDtu1wLQUAlqKTVxqwhXIiBnDg6Y4eyx4lKW5XK7wrLeK3vbq8J2W4T4e1nMhpWrZCTt3xKZ8kgsggdJmUFACH5BAEKAAIALAcAAAALAAcAAAIUVB6ii7jajgCAuUmtovxtXnmdUAAAIfkEAQoAAgAsDQACAAcACwAAAhRUIpmHy/3gUVQAQO9NetuugCFWAAAh+QQBCgACACwNAAcABwALAAACE5QVcZjKbVo6ck2AF95m5/6BSwEAIfkEAQoAAgAsBwANAAsABwAAAhOUH3kr6QaAcSrGWe1VQl+mMUIBACH5BAEKAAIALAIADQALAAcAAAIUlICmh7ncTAgqijkruDiv7n2YUAAAIfkEAQoAAgAsAAAHAAcACwAAAhQUIGmHyedehIoqFXLKfPOAaZdWAAAh+QQFCgACACwAAAIABwALAAACFJQFcJiXb15zLYRl7cla8OtlGGgUADs=);position:absolute;z-index:1000}caption{background-color:#fff}.tablesorter-bootstrap .tablesorter-filter-row input.tablesorter-filter,.tablesorter-bootstrap .tablesorter-filter-row select.tablesorter-filter{height:28px;width:98%;margin:0;padding:4px 6px;background-color:#fff;color:#333;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:height .1s ease;-moz-transition:height .1s ease;-o-transition:height .1s ease;transition:height .1s ease}.tablesorter-bootstrap .tablesorter-filter-row .tablesorter-filter.disabled{background-color:#eee;cursor:not-allowed}.tablesorter-bootstrap .tablesorter-filter-row{background-color:#ddd}.tablesorter-bootstrap .tablesorter-filter-row td{background-color:#eee;line-height:normal;text-align:center;padding:4px 6px;vertical-align:middle;-webkit-transition:line-height .1s ease;-moz-transition:line-height .1s ease;-o-transition:line-height .1s ease;transition:line-height .1s ease}.tablesorter-bootstrap tr.tablesorter-filter-row.hideme td{padding:2px;margin:0;line-height:0}.tablesorter-bootstrap tr.tablesorter-filter-row.hideme *{height:1px;min-height:0;border:0;padding:0;margin:0;opacity:0;filter:alpha(opacity=0)}.tablesorter .filtered{display:none}.tablesorter-bootstrap .tablesorter-pager select{padding:4px 6px}.tablesorter-bootstrap .tablesorter-pager .pagedisplay{border:0}.tablesorter .tablesorter-errorRow td{text-align:center;cursor:pointer;background-color:#e6bf99}

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -8,7 +8,7 @@
}
}(function($) {
/*! TableSorter (FORK) v2.21.5 *//*
/*! TableSorter (FORK) v2.22.0 *//*
* Client-side table sorting with ease!
* @requires jQuery v1.2.6+
*
@ -36,7 +36,7 @@
var ts = this;
ts.version = '2.21.5';
ts.version = '2.22.0';
ts.parsers = [];
ts.widgets = [];
@ -200,7 +200,11 @@
$node = node.jquery ? node : $(node);
if (typeof(t) === 'string') {
// check data-attribute first when set to 'basic'; don't use node.innerText - it's really slow!
return $.trim( ( t === 'basic' ? $node.attr(c.textAttribute) || node.textContent : node.textContent ) || $node.text() || '' );
// http://www.kellegous.com/j/2013/02/27/innertext-vs-textcontent/
return $.trim(
( t === 'basic' ? $node.attr(c.textAttribute) || node.textContent : node.textContent ) ||
$node.text()
);
} else {
if (typeof(t) === 'function') {
return $.trim( t($node[0], c.table, cellIndex) );
@ -209,7 +213,7 @@
}
}
// fallback
return $.trim( $node[0].textContent || $node.text() || '' );
return $.trim( $node[0].textContent || $node.text() );
};
function detectParserForColumn(table, rows, rowIndex, cellIndex) {
@ -245,12 +249,15 @@
// centralized function to extract/parse cell contents
function getParsedText( c, cell, colIndex, txt ) {
var val = '',
if ( typeof txt === 'undefined' ) {
txt = ts.getElementText( c, cell, colIndex );
}
// if no parser, make sure to return the txt
var val = '' + txt,
parser = c.parsers[ colIndex ],
extractor = c.extractors[ colIndex ];
txt = txt || ts.getElementText( c, cell, colIndex );
if ( parser ) {
// do extract before parsing if there is one
// do extract before parsing, if there is one
if ( extractor && typeof extractor.format === 'function' ) {
txt = extractor.format( txt, c.table, cell, colIndex );
}
@ -330,7 +337,7 @@
/* utils */
function buildCache(table) {
var cc, t, v, i, j, k, $row, cols, cacheTime,
totalRows, rowData, colMax,
totalRows, rowData, prevRowData, colMax,
c = table.config,
$tb = c.$tbodies,
parsers = c.parsers;
@ -363,33 +370,40 @@
raw: [] // original row text
};
/** Add the table data to main data array */
$row = $($tb[k].rows[i]);
$row = $( $tb[ k ].rows[ i ] );
cols = [];
// if this is a child row, add it to the last row's children and continue to the next row
// ignore child row class, if it is the first row
if ($row.hasClass(c.cssChildRow) && i !== 0) {
if ( $row.hasClass( c.cssChildRow ) && i !== 0 ) {
t = cc.normalized.length - 1;
cc.normalized[t][c.columns].$row = cc.normalized[t][c.columns].$row.add($row);
prevRowData = cc.normalized[ t ][ c.columns ];
prevRowData.$row = prevRowData.$row.add( $row );
// add 'hasChild' class name to parent row
if (!$row.prev().hasClass(c.cssChildRow)) {
$row.prev().addClass(ts.css.cssHasChild);
if ( !$row.prev().hasClass( c.cssChildRow ) ) {
$row.prev().addClass( ts.css.cssHasChild );
}
// save child row content (un-parsed!)
rowData.child[t] = $.trim( $row[0].textContent || $row.text() || '' );
v = $row.children( 'th, td' );
t = prevRowData.child.length;
prevRowData.child[ t ] = [];
// child row content does not account for colspans/rowspans; so indexing may be off
for ( j = 0; j < c.columns; j++ ) {
prevRowData.child[ t ][ j ] = getParsedText( c, v[ j ], j );
}
// go to the next for loop
continue;
}
rowData.$row = $row;
rowData.order = i; // add original row position to rowCache
for ( j = 0; j < c.columns; ++j ) {
if (typeof parsers[j] === 'undefined') {
if (c.debug) {
log('No parser found for cell:', $row[0].cells[j], 'does it have a header?');
if (typeof parsers[ j ] === 'undefined') {
if ( c.debug ) {
log( 'No parser found for cell:', $row[ 0 ].cells[ j ], 'does it have a header?' );
}
continue;
}
t = ts.getElementText(c, $row[0].cells[j], j);
rowData.raw.push(t); // save original row text
t = ts.getElementText( c, $row[ 0 ].cells[j], j );
rowData.raw.push( t ); // save original row text
v = getParsedText( c, $row[ 0 ].cells[ j ], j, t );
cols.push( v );
if ( ( parsers[ j ].type || '' ).toLowerCase() === 'numeric' ) {
@ -406,11 +420,11 @@
c.totalRows += cc.normalized.length;
}
if (c.showProcessing) {
ts.isProcessing(table); // remove processing icon
if ( c.showProcessing ) {
ts.isProcessing( table ); // remove processing icon
}
if (c.debug) {
benchmark('Building cache for ' + totalRows + ' rows', cacheTime);
if ( c.debug ) {
benchmark( 'Building cache for ' + totalRows + ' rows', cacheTime );
}
}
@ -550,14 +564,15 @@
}
function updateHeader(table) {
var s, $th, col,
c = table.config;
c.$headers.each(function(index, th){
$th = $(th);
var index, s, $th, col,
c = table.config,
len = c.$headers.length;
for ( index = 0; index < len; index++ ) {
$th = c.$headers.eq( index );
col = ts.getColumnData( table, c.headers, index, true );
// add 'sorter-false' class if 'parser-false' is set
s = ts.getData( th, col, 'sorter' ) === 'false' || ts.getData( th, col, 'parser' ) === 'false';
th.sortDisabled = s;
s = ts.getData( $th, col, 'sorter' ) === 'false' || ts.getData( $th, col, 'parser' ) === 'false';
$th[0].sortDisabled = s;
$th[ s ? 'addClass' : 'removeClass' ]('sorter-false').attr('aria-disabled', '' + s);
// aria-controls - requires table ID
if (table.id) {
@ -567,11 +582,11 @@
$th.attr('aria-controls', table.id);
}
}
});
}
}
function setHeadersCss(table) {
var f, i, j,
var f, h, i, j, $headers, $h, nextSort, txt,
c = table.config,
list = c.sortList,
len = list.length,
@ -615,14 +630,19 @@
}
}
// add verbose aria labels
c.$headers.not('.sorter-false').each(function(){
var $this = $(this),
nextSort = this.order[(this.count + 1) % (c.sortReset ? 3 : 2)],
txt = $.trim( $this.text() ) + ': ' +
ts.language[ $this.hasClass(ts.css.sortAsc) ? 'sortAsc' : $this.hasClass(ts.css.sortDesc) ? 'sortDesc' : 'sortNone' ] +
len = c.$headers.length;
$headers = c.$headers.not('.sorter-false');
for ( i = 0; i < len; i++ ) {
$h = $headers.eq( i );
if ( $h.length ) {
h = $headers[ i ];
nextSort = h.order[ ( h.count + 1 ) % ( c.sortReset ? 3 : 2 ) ],
txt = $.trim( $h.text() ) + ': ' +
ts.language[ $h.hasClass( ts.css.sortAsc ) ? 'sortAsc' : $h.hasClass( ts.css.sortDesc ) ? 'sortDesc' : 'sortNone' ] +
ts.language[ nextSort === 0 ? 'nextAsc' : nextSort === 1 ? 'nextDesc' : 'nextNone' ];
$this.attr('aria-label', txt );
});
$h.attr( 'aria-label', txt );
}
}
}
function updateHeaderSortCount( table, list ) {
@ -635,9 +655,10 @@
val = sortList[indx];
// ensure all sortList values are numeric - fixes #127
col = parseInt(val[0], 10);
// make sure header exists
header = c.$headerIndexed[col][0];
if (header) { // prevents error if sorton array is wrong
// prevents error if sorton array is wrong
if ( col < c.columns && c.$headerIndexed[col] ) {
// make sure header exists
header = c.$headerIndexed[col][0];
// o.count = o.count + 1;
dir = ('' + val[1]).match(/^(1|d|s|o|n)/);
dir = dir ? dir[0] : '';
@ -681,10 +702,11 @@
// let any updates complete before initializing a sort
return setTimeout(function(){ initSort(table, cell, event); }, 50);
}
var arry, indx, col, order, s,
var arry, indx, i, col, order, s, $header,
c = table.config,
key = !event[c.sortMultiSortKey],
$table = c.$table;
$table = c.$table,
len = c.$headers.length;
// Only call sortStart if sorting is enabled
$table.trigger('sortStart', table);
// get current column sort order
@ -692,12 +714,13 @@
// reset all sorts on non-current column - issue #30
if (c.sortRestart) {
indx = cell;
c.$headers.each(function() {
for ( i = 0; i < len; i++ ) {
$header = c.$headers.eq( i );
// only reset counts on columns that weren't just clicked on and if not included in a multisort
if (this !== indx && (key || !$(this).is('.' + ts.css.sortDesc + ',.' + ts.css.sortAsc))) {
this.count = -1;
if ( $header[0] !== indx && ( key || !$header.is('.' + ts.css.sortDesc + ',.' + ts.css.sortAsc) ) ) {
$header[0].count = -1;
}
});
}
}
// get current column index
indx = parseInt( $(cell).attr('data-column'), 10 );
@ -1213,7 +1236,7 @@
// automatically add a colgroup with col elements set to a percentage width
ts.fixColumnWidth = function(table) {
table = $(table)[0];
var overallWidth, percent,
var overallWidth, percent, $tbodies, len, index,
c = table.config,
colgroup = c.$table.children('colgroup');
// remove plugin-added colgroup, in case we need to refresh the widths
@ -1224,10 +1247,12 @@
colgroup = $('<colgroup class="' + ts.css.colgroup + '">');
overallWidth = c.$table.width();
// only add col for visible columns - fixes #371
c.$tbodies.find('tr:first').children(':visible').each(function() {
percent = parseInt( ( $(this).width() / overallWidth ) * 1000, 10 ) / 10 + '%';
$tbodies = c.$tbodies.find('tr:first').children(':visible'); //.each(function()
len = $tbodies.length;
for ( index = 0; index < len; index++ ) {
percent = parseInt( ( $tbodies.eq( index ).width() / overallWidth ) * 1000, 10 ) / 10 + '%';
colgroup.append( $('<col>').css('width', percent) );
});
}
c.$table.prepend(colgroup);
}
};
@ -1419,17 +1444,20 @@
// restore headers
ts.restoreHeaders = function(table){
var $cell,
c = $(table)[0].config;
var index, $cell,
c = $(table)[0].config,
$headers = c.$table.find( c.selectorHeaders ),
len = $headers.length;
// don't use c.$headers here in case header cells were swapped
c.$table.find(c.selectorHeaders).each(function(i){
$cell = $(this);
for ( index = 0; index < len; index++ ) {
// c.$table.find(c.selectorHeaders).each(function(i){
$cell = $headers.eq( index );
// only restore header cells if it is wrapped
// because this is also used by the updateAll method
if ($cell.find('.' + ts.css.headerIn).length){
$cell.html( c.headerContent[i] );
if ( $cell.find( '.' + ts.css.headerIn ).length ) {
$cell.html( c.headerContent[ index ] );
}
});
}
};
ts.destroy = function(table, removeClasses, callback){
@ -1589,8 +1617,8 @@
'E' : '\u00c9\u00c8\u00ca\u00cb\u011a\u0118', // ÉÈÊËĚĘ
'i' : '\u00ed\u00ec\u0130\u00ee\u00ef\u0131', // íìİîïı
'I' : '\u00cd\u00cc\u0130\u00ce\u00cf', // ÍÌİÎÏ
'o' : '\u00f3\u00f2\u00f4\u00f5\u00f6', // óòôõö
'O' : '\u00d3\u00d2\u00d4\u00d5\u00d6', // ÓÒÔÕÖ
'o' : '\u00f3\u00f2\u00f4\u00f5\u00f6\u014d', // óòôõöō
'O' : '\u00d3\u00d2\u00d4\u00d5\u00d6\u014c', // ÓÒÔÕÖŌ
'ss': '\u00df', // ß (s sharp)
'SS': '\u1e9e', // ẞ (Capital sharp s)
'u' : '\u00fa\u00f9\u00fb\u00fc\u016f', // úùûüů
@ -2116,7 +2144,7 @@
id: 'zebra',
priority: 90,
format: function(table, c, wo) {
var $tb, $tv, $tr, row, even, time, k,
var $tv, $tr, row, even, time, k, i, len,
child = new RegExp(c.cssChildRow, 'i'),
b = c.$tbodies.add( $( c.namespace + '_extra_table' ).children( 'tbody' ) );
if (c.debug) {
@ -2125,17 +2153,17 @@
for (k = 0; k < b.length; k++ ) {
// loop through the visible rows
row = 0;
$tb = b.eq(k);
$tv = $tb.children('tr:visible').not(c.selectorRemove);
// revered back to using jQuery each - strangely it's the fastest method
/*jshint loopfunc:true */
$tv.each(function(){
$tr = $(this);
$tv = b.eq( k ).children( 'tr:visible' ).not( c.selectorRemove );
len = $tv.length;
for ( i = 0; i < len; i++ ) {
$tr = $tv.eq( i );
// style child rows the same way the parent row was styled
if (!child.test(this.className)) { row++; }
even = (row % 2 === 0);
$tr.removeClass(wo.zebra[even ? 1 : 0]).addClass(wo.zebra[even ? 0 : 1]);
});
if ( !child.test( $tr[0].className ) ) { row++; }
even = ( row % 2 === 0 );
$tr
.removeClass( wo.zebra[ even ? 1 : 0 ] )
.addClass( wo.zebra[ even ? 0 : 1 ] );
}
}
},
remove: function(table, c, wo, refreshing){

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -1,4 +1,4 @@
/*! Parser: jQuery Globalize - updated 5/2/2015 (v2.21.6) */
/*! Parser: jQuery Globalize - updated 5/17/2015 (v2.22.0) */
!function(a){"use strict";/*! jQuery Globalize date parser (https://github.com/jquery/globalize#date-module) */
a.tablesorter.addParser({id:"globalize-date",is:function(){return!1},format:function(a,b,c,d){var e=b.config,f=e.globalize&&(e.globalize[d]||e.globalize)||{},g=Globalize&&Globalize.dateParser?Globalize.dateParser(f)(a):a?new Date(a):a;return g instanceof Date&&isFinite(g)?g.getTime():a},type:"numeric"}),/*! jQuery Globalize number parser (https://github.com/jquery/globalize#number-module) */
a.tablesorter.addParser({id:"globalize-number",is:function(){return!1},format:function(b,c,d,e){var f=c.config,g=f.globalize&&(f.globalize[e]||f.globalize)||{},h=Globalize&&Globalize.numberParser?Globalize.numberParser(g)(b):b?a.tablesorter.formatFloat((b||"").replace(/[^\w,. \-()]/g,""),c):b;return b&&"number"==typeof h?h:b},type:"numeric"})}(jQuery);

View File

@ -1,2 +1,2 @@
/*! Parser: input & select - updated 4/28/2015 (v2.21.6) */
!function(a){"use strict";var b=function(){};a.tablesorter.addParser({id:"inputs",is:function(){return!1},format:function(b,c,d){return a(d).find("input").val()||b},parsed:!0,type:"text"}),a.tablesorter.addParser({id:"inputs-numeric",is:function(){return!1},format:function(b,c,d){var e=a(d).find("input").val()||b,f=a.tablesorter.formatFloat((e||"").replace(/[^\w,. \-()]/g,""),c);return b&&"number"==typeof f?f:b?a.trim(b&&c.config.ignoreCase?b.toLocaleLowerCase():b):b},parsed:!0,type:"numeric"}),a.tablesorter.addParser({id:"checkbox",is:function(){return!1},format:function(b,c,d,e){var f=a(d),g=c.config.widgetOptions,h=g.group_checkbox?g.group_checkbox:["checked","unchecked"],i=f.find('input[type="checkbox"]'),j=i.length?i[0].checked:"";return f.closest("tr").toggleClass("checked checked-"+e,j),i.length?h[j?0:1]:b},parsed:!0,type:"text"}),a.tablesorter.addParser({id:"select",is:function(){return!1},format:function(b,c,d){return a(d).find("select").val()||b},parsed:!0,type:"text"}),a.tablesorter.addParser({id:"select-text",is:function(){return!1},format:function(b,c,d){var e=a(d).find("select");return e.length?e.find("option:selected").text()||"":b},parsed:!0,type:"text"}),a.tablesorter.addParser({id:"textarea",is:function(){return!1},format:function(b,c,d){return a(d).find("textarea").val()||b},parsed:!0,type:"text"}),a(function(){a("table").on("tablesorter-initialized updateComplete",function(){var c=".parser-forms",d=function(b){b&&a(":focus").blur()};a(this).children("tbody").off(c).on("mouseleave"+c,function(a){d("TBODY"===a.target.nodeName)}).on("focus"+c,"select, input, textarea",function(){a(this).data("ts-original-value",this.value)}).on("blur"+c,"input, textarea",function(){this.value=a(this).data("ts-original-value")}).on("change keyup ".split(" ").join(c+" "),"select, input, textarea",function(c){if(27===c.which)return void(this.value=a(this).data("ts-original-value"));if("change"===c.type||"keyup"===c.type&&13===c.which&&("INPUT"===c.target.nodeName||"TEXTAREA"===c.target.nodeName&&c.altKey)){var d,e=a(c.target),f=e.closest("td"),g=f.closest("table"),h=f[0].cellIndex,i=g[0].config||!1,j=i&&i.$headerIndexed&&i.$headerIndexed[h]||[],k=e.val();if(j.length&&(j.hasClass("parser-false")||j.hasClass("sorter-false")&&j.hasClass("filter-false")))return;(k!==e.data("ts-original-value")||"checkbox"===c.target.type)&&(e.data("ts-original-value",k),g.trigger("updateCell",[f,d,function(){b(c,g,e)}]))}})})})}(jQuery);
/*! Parser: input & select - updated 5/17/2015 (v2.22.0) */
!function(a){"use strict";var b=function(){};a.tablesorter.addParser({id:"inputs",is:function(){return!1},format:function(b,c,d){var e=a(d).find("input");return e.length?e.val():b},parsed:!0,type:"text"}),a.tablesorter.addParser({id:"inputs-numeric",is:function(){return!1},format:function(b,c,d){var e=a(d).find("input"),f=e.length?e.val():b,g=a.tablesorter.formatFloat((f||"").replace(/[^\w,. \-()]/g,""),c);return b&&"number"==typeof g?g:b?a.trim(b&&c.config.ignoreCase?b.toLocaleLowerCase():b):b},parsed:!0,type:"numeric"}),a.tablesorter.addParser({id:"checkbox",is:function(){return!1},format:function(b,c,d,e){var f=a(d),g=c.config.widgetOptions,h=g.group_checkbox?g.group_checkbox:["checked","unchecked"],i=f.find('input[type="checkbox"]'),j=i.length?i[0].checked:"";return f.closest("tr").toggleClass("checked checked-"+e,j),i.length?h[j?0:1]:b},parsed:!0,type:"text"}),a.tablesorter.addParser({id:"select",is:function(){return!1},format:function(b,c,d){var e=a(d).find("select");return e.length?e.val():b},parsed:!0,type:"text"}),a.tablesorter.addParser({id:"select-text",is:function(){return!1},format:function(b,c,d){var e=a(d).find("select");return e.length?e.find("option:selected").text()||"":b},parsed:!0,type:"text"}),a.tablesorter.addParser({id:"textarea",is:function(){return!1},format:function(b,c,d){var e=a(d).find("textarea");return e.length?e.val():b},parsed:!0,type:"text"}),a(function(){a("table").on("tablesorter-initialized updateComplete",function(){var c=".parser-forms",d=function(b){b&&a(":focus").blur()};a(this).children("tbody").off(c).on("mouseleave"+c,function(a){d("TBODY"===a.target.nodeName)}).on("focus"+c,"select, input, textarea",function(){a(this).data("ts-original-value",this.value)}).on("blur"+c,"input, textarea",function(){this.value=a(this).data("ts-original-value")}).on("change keyup ".split(" ").join(c+" "),"select, input, textarea",function(c){if(27===c.which)return void(this.value=a(this).data("ts-original-value"));if("change"===c.type||"keyup"===c.type&&13===c.which&&("INPUT"===c.target.nodeName||"TEXTAREA"===c.target.nodeName&&c.altKey)){var d,e=a(c.target),f=e.closest("td"),g=f.closest("table"),h=f[0].cellIndex,i=g[0].config||!1,j=i&&i.$headerIndexed&&i.$headerIndexed[h]||[],k=e.val();if(j.length&&(j.hasClass("parser-false")||j.hasClass("sorter-false")&&j.hasClass("filter-false")))return;(k!==e.data("ts-original-value")||"checkbox"===c.target.type)&&(e.data("ts-original-value",k),g.trigger("updateCell",[f,d,function(){b(c,g,e)}]))}})})})}(jQuery);

View File

@ -1,4 +1,4 @@
/*! Parser: network - updated 5/4/2015 (v2.21.6) */
/*! Parser: network - updated 5/17/2015 (v2.22.0) */
!function(a){"use strict";var b,c,d=a.tablesorter;/*! IPv6 Address parser (WIP) */
a.extend(d.regex,{},{ipv4Validate:/((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})/,ipv4Extract:/([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})/,ipv6Validate:/^\s*((([0-9a-f]{1,4}:){7}([0-9a-f]{1,4}|:))|(([0-9a-f]{1,4}:){6}(:[0-9a-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){5}(((:[0-9a-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){4}(((:[0-9a-f]{1,4}){1,3})|((:[0-9a-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){3}(((:[0-9a-f]{1,4}){1,4})|((:[0-9a-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){2}(((:[0-9a-f]{1,4}){1,5})|((:[0-9a-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){1}(((:[0-9a-f]{1,4}){1,6})|((:[0-9a-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9a-f]{1,4}){1,7})|((:[0-9a-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$/i}),d.addParser({id:"ipv6Address",is:function(a){return d.regex.ipv6Validate.test(a)},format:function(a,b){var c,e,f,g,h,i=b?"boolean"==typeof b?b:b&&b.config.ipv6HexFormat||!1:!1,j="",k="",l=8;if(a=a.replace(/\s*/g,""),d.regex.ipv4Validate.test(a)){for(g=a.match(d.regex.ipv4Extract),e="",c=1;c<g.length;c++)e+=("00"+parseInt(g[c],10).toString(16)).slice(-2)+(2===c?":":"");a=a.replace(d.regex.ipv4Extract,e)}if(-1==a.indexOf("::"))j=a;else{for(f=a.split("::"),h=0,c=0;c<f.length;c++)h+=f[c].split(":").length;for(j+=f[0]+":",c=0;l-h>c;c++)j+="0000:";j+=f[1]}for(g=j.split(":"),c=0;l>c;c++)g[c]=i?("0000"+g[c]).slice(-4):("00000"+(parseInt(g[c],16)||0)).slice(-5),k+=c!=l-1?g[c]+":":g[c];return i?k:k.replace(/:/g,"")},type:"numeric"}),c=function(a){return/^\d{1,3}[\.]\d{1,3}[\.]\d{1,3}[\.]\d{1,3}$/.test(a)},b=function(a,b){var c,e=a?a.split("."):"",f="",g=e.length;for(c=0;g>c;c++)f+=("000"+e[c]).slice(-3);return a?d.formatFloat(f,b):a},/*! Parser: ipv4Address (a.k.a. ipAddress) */
d.addParser({id:"ipAddress",is:c,format:b,type:"numeric"}),d.addParser({id:"ipv4Address",is:c,format:b,type:"numeric"}),/*! Parser: MAC address */

View File

@ -1,2 +1,2 @@
/*! Widget: editable - updated 2/9/2015 (v2.19.1) */
/*! Widget: editable - updated 5/17/2015 (v2.22.0) */
!function(a){"use strict";var b=a.tablesorter.editable={namespace:".tseditable",lastEdited:"tseditable-last-edited-cell",editComplete:function(a,c,d,e){d.removeClass(b.lastEdited).trigger(c.editable_editComplete,[a]),e&&setTimeout(function(){d.focus()},50)},selectAll:function(a){setTimeout(function(){var b,c;document.body.createTextRange?(b=document.body.createTextRange(),b.moveToElementText(a),b.select()):window.getSelection&&(c=window.getSelection(),b=document.createRange(),b.selectNodeContents(a),c.removeAllRanges(),c.addRange(b))},100)},getColumns:function(b,c){var d,e,f=[],g=[];if(!c.editable_columnsArray&&"string"===a.type(c.editable_columns)&&c.editable_columns.indexOf("-")>=0)for(e=c.editable_columns.split(/\s*-\s*/),d=parseInt(e[0],10)||0,e=parseInt(e[1],10)||b.columns-1,e>b.columns&&(e=b.columns-1);e>=d;d++)f.push(d),g.push("td:nth-child("+(d+1)+")");else a.isArray(c.editable_columns)&&a.each(c.editable_columnsArray||c.editable_columns,function(a,c){c<b.columns&&(f.push(c),g.push("td:nth-child("+(c+1)+")"))});return c.editable_columnsArray||(c.editable_columnsArray=f,c.editable_columnsArray.sort(function(a,b){return a-b})),g},update:function(c,d){var e,f=a("<div>").wrapInner(d.editable_wrapContent).children().length||a.isFunction(d.editable_wrapContent),g=b.getColumns(c,d).join(",");c.$tbodies.find(g).find("[contenteditable]").prop("contenteditable",!1),c.$tbodies.find(g).not("."+d.editable_noEdit).each(function(){e=a(this),f&&0===e.children("div, span").length&&e.wrapInner(d.editable_wrapContent),e.children("div, span").length?e.children("div, span").not("."+d.editable_noEdit).each(function(){var b=a(this);d.editable_trimContent&&b.html(function(b,c){return a.trim(c)}),b.prop("contenteditable",!0)}):(d.editable_trimContent&&e.html(function(b,c){return a.trim(c)}),e.prop("contenteditable",!0))})},bindEvents:function(c,d){var e=b.namespace;c.$table.off("updateComplete pagerComplete ".split(" ").join(e+" ").replace(/\s+/g," ")).on("updateComplete pagerComplete ".split(" ").join(e+" "),function(){b.update(c,c.widgetOptions)}).children("thead").add(a(c.namespace+"_extra_table").children("thead")).off("mouseenter"+e).on("mouseenter"+e,function(){c.$table.data("contentFocused")&&(c.$table.data("contentFocused",!0),a(":focus").trigger("focusout"))}),c.$tbodies.off("focus blur focusout keydown ".split(" ").join(e+" ").replace(/\s+/g," ")).on("focus"+e,"[contenteditable]",function(f){clearTimeout(a(this).data("timer")),c.$table.data("contentFocused",f.target);var g=a(this),h=d.editable_selectAll,i=g.closest("td").index(),j=g.html();d.editable_trimContent&&(j=a.trim(j)),g.off("keydown"+e).on("keydown"+e,function(a){d.editable_enterToAccept&&13===a.which&&a.preventDefault()}),g.data({before:j,original:j}),"function"==typeof d.editable_focused&&d.editable_focused(j,i,g),h&&("function"==typeof h?h(j,i,g)&&b.selectAll(g[0]):b.selectAll(g[0]))}).on("blur focusout keydown ".split(" ").join(e+" "),"[contenteditable]",function(f){if(c.$table.data("contentFocused")){var g,h,i=!1,j=a(f.target),k=j.html(),l=j.closest("td").index();if(d.editable_trimContent&&(k=a.trim(k)),27===f.which)return j.html(j.data("original")).trigger("blur"+e),c.$table.data("contentFocused",!1),!1;if(g=13===f.which&&(d.editable_enterToAccept||f.altKey)||d.editable_autoAccept&&"keydown"!==f.type,g&&j.data("before")!==k){if(h=d.editable_validate,i=k,"function"==typeof h?i=h(k,j.data("original"),l,j):"function"==typeof(h=a.tablesorter.getColumnData(c.table,h,l))&&(i=h(k,j.data("original"),l,j)),g&&i!==!1)return c.$table.find("."+b.lastEdited).removeClass(b.lastEdited),j.addClass(b.lastEdited).html(i).data("before",i).data("original",i).trigger("change"),c.$table.trigger("updateCell",[j.closest("td"),!1,function(){d.editable_autoResort?setTimeout(function(){c.$table.trigger("sorton",[c.sortList,function(){b.editComplete(c,d,c.$table.find("."+b.lastEdited),!0)},!0])},10):b.editComplete(c,d,c.$table.find("."+b.lastEdited))}]),!1}else i||"keydown"===f.type||(clearTimeout(j.data("timer")),j.data("timer",setTimeout(function(){a.isFunction(d.editable_blur)&&(k=j.html(),d.editable_blur(d.editable_trimContent?a.trim(k):k,l,j))},100)),j.html(j.data("original")))}})},destroy:function(a,c){var d=b.namespace,e=b.getColumns(a,c),f="updateComplete pagerComplete ".split(" ").join(d+" ").replace(/\s+/g," ");a.$table.off(f),f="focus blur focusout keydown ".split(" ").join(d+" ").replace(/\s+/g," "),a.$tbodies.off(f).find(e.join(",")).find("[contenteditable]").prop("contenteditable",!1)}};a.tablesorter.addWidget({id:"editable",options:{editable_columns:[],editable_enterToAccept:!0,editable_autoAccept:!0,editable_autoResort:!1,editable_wrapContent:"<div>",editable_trimContent:!0,editable_validate:null,editable_focused:null,editable_blur:null,editable_selectAll:!1,editable_noEdit:"no-edit",editable_editComplete:"editComplete"},init:function(a,c,d,e){e.editable_columns.length&&(b.update(d,e),b.bindEvents(d,e))},remove:function(a,c,d,e){e||b.destroy(c,d)}})}(jQuery);

File diff suppressed because one or more lines are too long

View File

@ -1,4 +1,4 @@
/*! Widget: math - updated 2/9/2015 (v2.19.1) */
/*! Widget: math - updated 5/17/2015 (v2.22.0) */
!function(a){"use strict";var b=a.tablesorter,c={events:"tablesorter-initialized update updateAll updateRows addRows updateCell filterReset filterEnd ".split(" ").join(".tsmath "),getRow:function(c,d,e,f){var g,h,i=c.config,j=[],k=e.closest("tr"),l=k.children().not("["+f+"=ignore]");return k.hasClass(d.filter_filteredRow||"filtered")||(d.math_ignore.length&&(l=l.not("[data-column="+d.math_ignore.join("],[data-column=")+"]")),j=l.not(e).map(function(){return g=a(this),h=g.attr(i.textAttribute),"undefined"==typeof h&&(h=this.textContent||g.text()),h=b.formatFloat(h.replace(/[^\w,. \-()]/g,""),c)||0,isNaN(h)?0:h}).get()),j},getColumn:function(c,d,e,f,g){var h,i,j,k,l,m=[],n=c.config,o=d.filter_filteredRow||"filtered",p=parseInt(e.attr("data-column"),10),q=n.$table.children("tbody").children(),r=e.closest("tr");if("above"===f)for(k=q.index(r),h=k;h>=0;)j=q.eq(h).children().filter("[data-column="+p+"]"),l=j.filter("["+g+"^=above]").length,(!q.eq(h).hasClass(o)&&q.eq(h).not("["+g+"=ignore]").length&&h!==k||l&&h!==k)&&(l?h=0:j.length&&(i=j.attr(n.textAttribute),"undefined"==typeof i&&(i=j[0].textContent||j.text()),i=b.formatFloat(i.replace(/[^\w,. \-()]/g,""),c)||0,m.push(isNaN(i)?0:i))),h--;else q.each(function(){j=a(this).children().filter("[data-column="+p+"]"),a(this).hasClass(o)||!j.not("["+g+"^=above],["+g+"^=col]").length||j.is(e)||(i=j.attr(n.textAttribute),"undefined"==typeof i&&(i=(j[0]?j[0].textContent:"")||j.text()),i=b.formatFloat(i.replace(/[^\w,. \-()]/g,""),c)||0,m.push(isNaN(i)?0:i))});return m},getAll:function(c,d,e){var f,g,h,i=[],j=c.config,k=d.filter_filteredRow||"filtered",l=j.$table.children("tbody").children();return l.each(function(){a(this).hasClass(k)||a(this).children().each(function(){g=a(this),h=parseInt(g.attr("data-column"),10),!g.filter("["+e+"]").length&&a.inArray(h,d.math_ignore)<0&&(f=g.attr(j.textAttribute),"undefined"==typeof f&&(f=(g[0]?g[0].textContent:"")||g.text()),f=b.formatFloat(f.replace(/[^\w,. \-()]/g,""),c)||0,i.push(isNaN(f)?0:f))})}),i},recalculate:function(a,d,e,f){if(d&&(!e.math_isUpdating||f)){f&&b.computeColumnIndex(d.$table.children("tbody").children());var g="data-"+(e.math_data||"math"),h=d.$tbodies.find("["+g+"]");c.mathType(a,e,h,e.math_priority,g),h=d.$table.find("."+d.cssInfoBlock+", tfoot").find("["+g+"]"),c.mathType(a,e,h,e.math_priority,g),c.mathType(a,e,d.$table.find("["+g+"^=all]"),["all"],g),e.math_isUpdating=!0,d.$table.trigger("update")}},mathType:function(d,e,f,g,h){if(f.length){var i,j,k,l,m,n=b.equations;"all"===g[0]&&(m=c.getAll(d,e,h)),a.each(g,function(b,g){f.filter("["+h+"^="+g+"]").each(function(){k=a(this),i=(k.attr(h)||"").replace(g+"-",""),l="row"===g?c.getRow(d,e,k,h):"all"===g?m:c.getColumn(d,e,k,g,h),n[i]&&(j=n[i](l),d.config.debug&&console&&console.log&&console.log(k.attr(h),l,"=",j),c.output(k,e,j,l))})})}},output:function(c,d,e,f){var g=b.formatMask(c.attr("data-"+d.math_data+"-mask")||d.math_mask,e,d.math_wrapPrefix,d.math_wrapSuffix);a.isFunction(d.math_complete)&&(g=d.math_complete(c,d,g,e,f)),g!==!1&&c.html(g)}};/**
* @preserve IntegraXor Web SCADA - JavaScript Number Formatter
* http:// www.integraxor.com/

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -190,7 +190,7 @@
<div class="tip">
<p><em>NOTE!</em></p>
<ul>
<li><span class="version">v2.21.6</span>,
<li><span class="version">v2.22.0</span>,
<ul>
<li>Added <code>filter_childByColumn</code> to allow filtering to work on child row columns. See the <a href="#child-by-column">By Column</a> demo below.</li>
<li>Extra white-space was added after each line in the child row content to account for the loss of white-space which occurs while processing cell content using <code>textContent</code>.</li>

View File

@ -43,7 +43,7 @@
<p class="tip">
<em>NOTE!</em>
<ul>
<li>In <span class="version updated">v2.21.6</span>, this parser will now ignore commas, periods and quotes adjacent to the named number word (e.g. "10 million, three...").</li>
<li>In <span class="version updated">v2.22.0</span>, this parser will now ignore commas, periods and quotes adjacent to the named number word (e.g. "10 million, three...").</li>
<li>This parser will convert named numbers into appropriate values so they are sorted correctly.</li>
<li>Named numbers include values:
<ul>

View File

@ -113,7 +113,7 @@ td.no-edit, span.no-edit {
<ul>
<li>This widget can not be applied to the original plugin and requires jQuery 1.7+ and a browser that supports <a href="http://caniuse.com/#feat=contenteditable"><code>contenteditable</code> attributes</a> (almost all modern browsers).</li>
<li><span class="label warning">Important</span>: In Internet Explorer, please wrap the cell content with a DIV or SPAN as <a href="http://msdn.microsoft.com/en-us/library/ie/ms533690(v=vs.85).aspx">it is not possible to make table cells directly contenteditable</a>. Wrapping the content in the markup is much more efficient than using javascript to do it for you (especially in IE).<br><br></li>
<li>In <span class="version">v2.21.6</span>,
<li>In <span class="version">v2.22.0</span>,
<ul>
<li>The cell content now only <em>automatically updates</em> when the user hovers over the table header. Prior to this version, the automatic update would occur when the mouse left the tbody of the table. The reason this is necessary is because initiating a sort would change the row indexing set prior to the cell content being updated, so the cache would end up not matching the table content.</li>
<li>Modified the <code>editable_trimContent</code> option to only trim content when set.</li>

View File

@ -73,7 +73,7 @@
<h3><a href="#">Notes</a></h3>
<div>
<ul>
<li>In <span class="version">v2.21.6</span>, AnyMatch searches for specific columns will no longer save filter data to each targeted column. See the "AnyMatch Searches" section below.</li>
<li>In <span class="version">v2.22.0</span>, AnyMatch searches for specific columns will no longer save filter data to each targeted column. See the "AnyMatch Searches" section below.</li>
<li>In <span class="version">v2.20.0</span>, <a href="https://github.com/MaksimProgr">@MasksimProgr</a> added a method to allow targeting a specific column using the anyMatch filter. Find more details in the AnyMatch section below.</li>
<li>In <span class="version">v2.18.0</span>, the external search data column can be set to multiple columns (<code>data-column="0-2,4,6-7"</code>). Please see the <a href="example-widget-filter-external-inputs.html">Filter Widget External Inputs</a> demo for more details.</li>
<li>In <span class="version">v2.17.8</span>, added a default fuzzy search to the "First Name" column.</li>
@ -109,7 +109,7 @@
<li>This column specific anyMatch does not support using an OR column search like <code>1:5|7:12</code> </li>
</ul>
<p></p>
<span class="label label-info">* NOTE *</span> Fixed in <span class="version">v2.21.6</span>. <del>When a AnyMatch search of this type is active, it adds filter queries to specific columns, so if the filters are saved and you reload the page, the specified <em>column filters will become populated</em> along with the AnyMatch search</del>.
<span class="label label-info">* NOTE *</span> Fixed in <span class="version">v2.22.0</span>. <del>When a AnyMatch search of this type is active, it adds filter queries to specific columns, so if the filters are saved and you reload the page, the specified <em>column filters will become populated</em> along with the AnyMatch search</del>.
</li>
</ul>
</div>

View File

@ -100,7 +100,7 @@ $(function() {
<h3><a href="#">Notes</a></h3>
<div>
<ul>
<li>In <span class="version">v2.21.6</span>, additional values were added to the <code>data</code> parameter as it is now provided as a parameter to all <a href="index.html#widget-filter-functions"><code>filter_functions</code></a>. See the "How to add Custom filter types" section below to review the new additions.</li>
<li>In <span class="version">v2.22.0</span>, additional values were added to the <code>data</code> parameter as it is now provided as a parameter to all <a href="index.html#widget-filter-functions"><code>filter_functions</code></a>. See the "How to add Custom filter types" section below to review the new additions.</li>
<li><span class="label warning">Notice!</span> In version <span class="version">v2.17.8</span>, some drastic changes were made to the way variables are passed to the filters. Please check out the "How to add Custom Filter types" section below.</li>
<li>This demo was added in <span class="version">v2.17.5</span>, but modification using these instructions works for v2.13.3+; when the filter widget was restructured to allow the adding of custom filter search types.</li>
<li>In this demo, two additional search types have been added as an example
@ -152,11 +152,11 @@ $(function() {
<li>Within your filter, first test for your designator symbol.
<ul>
<li>If it exists within the filter, then do your comparison and return a boolean of <code>true</code> or <code>false</code>.</li>
<li>The following arguments are passed within the <code>data</code> parameter to both the <code>filter_function</code> &amp; filter type function (changed in <span class="version updated">v2.21.6</span>):
<li>The following arguments are passed within the <code>data</code> parameter to both the <code>filter_function</code> &amp; filter type function (changed in <span class="version updated">v2.22.0</span>):
<ul>
<li><code>data.$row</code> - The jQuery object of the current row being processed by the filter widget; added <span class="version">v2.21.6</span>.</li>
<li><code>data.$cells</code> - A jQuery object containing all the table cells in the current row being processed; added <span class="version">v2.21.6</span>.</li>
<li><code>data.filters</code> - Array of filters for all columns (some array values may be undefined); added <span class="version">v2.21.6</span>.<br><br></li>
<li><code>data.$row</code> - The jQuery object of the current row being processed by the filter widget; added <span class="version">v2.22.0</span>.</li>
<li><code>data.$cells</code> - A jQuery object containing all the table cells in the current row being processed; added <span class="version">v2.22.0</span>.</li>
<li><code>data.filters</code> - Array of filters for all columns (some array values may be undefined); added <span class="version">v2.22.0</span>.<br><br></li>
<li><code>data.filter</code> - The exact text from the filter input (e.g. <code>^h</code>).</li>
<li><code>data.iFilter</code> - The text from the filter in all lower case for case insensitive searches, if <code>table.config.widgetOptions.filter_ignoreCase</code> is <code>true</code>.</li>
@ -167,7 +167,7 @@ $(function() {
<li><code>data.anyMatch</code> - This is a boolean value indicating when the <code>data.exact</code> and <code>data.iExact</code> parameters contain data from the entire row instead of one cell. This value will always be <code>false</code> if the table does not include an associated any match filter.<br><br></li>
<li><code>data.rawArray</code> - An array of raw content extracted from each table cell in the row being processed; added <span class="version">v2.21.6</span>.</li>
<li><code>data.rawArray</code> - An array of raw content extracted from each table cell in the row being processed; added <span class="version">v2.22.0</span>.</li>
<li><code>data.rowArray</code> - An array of the modified exact text from each table cell in the current row being processed. The content will be in all lower case, if the <a href="index.html#ignorecase"><code>table.config.ignoreCase</code> option</a> is <code>true</code> &amp; accents replaced if the <a href="index.html#sortlocalecompare"><code>table.config.sortLocaleCompare</code> option</a> is <code>true</code>).</li>
<li><code>data.cacheArray</code> - An array of parsed content from each table cell in the row being processed.</li>
<li><code>data.childRowText</code> - contains <em>all</em> text from any associated child rows.</li>

View File

@ -175,7 +175,7 @@
<h3><a href="#">Notes</a></h3>
<div>
<ul>
<li>In <span class="version">v2.21.6</span>,
<li>In <span class="version">v2.22.0</span>,
<ul>
<li>An additional <code>data</code> parameter was added to the filter functions. It is an object which contains all data provided to the filter type functions (see <a href="example-widget-filter-custom-search.html#how_to_add_custom_filter_types">all the data values here</a>).</li>
<li><span class="label warning">*WARNING*</span> In a future update, the filter function parameters will change to clean up the code (I know, it's messy)!
@ -319,7 +319,7 @@
</ul>
</li>
<li>The <strong>config (c)</strong> is the <code>table.config</code> (added <span class="version">v2.21.0</span>).</li>
<li>The <strong>data</strong> parameter is the same data passed to the filter types (see <a href="example-widget-filter-custom-search.html#how_to_add_custom_filter_types">all the data values here</a>; added <span class="version">v2.21.6</span>).</li>
<li>The <strong>data</strong> parameter is the same data passed to the filter types (see <a href="example-widget-filter-custom-search.html#how_to_add_custom_filter_types">all the data values here</a>; added <span class="version">v2.22.0</span>).</li>
</ul>
</div>
</div>

View File

@ -225,7 +225,7 @@ $(function(){
<h3 id="notes"><a href="#">Notes</a></h3>
<div>
<ul>
<li>In <span class="version">v2.21.6</span>
<li>In <span class="version">v2.22.0</span>
<ul>
<li>Regex filter searches now cache the created regex object for each query to optimize speed & a regex search now properly uses case-sensitive content.</li>
<li>Add <code>data</code> parameter to <code>filter_functions</code> (<a href="example-widget-filter-custom-search.html#how_to_add_custom_filter_types">get more details</a>).</li>
@ -321,7 +321,7 @@ $(function(){
<tr id="filter-child-by-column">
<td><a href="#" class="permalink">filter_childByColumn</a></td>
<td>false</td>
<td>if <code>true</code>, queries will search child row content by column (<span class="version">v2.21.6</span>).
<td>if <code>true</code>, queries will search child row content by column (<span class="version">v2.22.0</span>).
<div class="collapsible">
<br>
The <code>filter_childRows</code> option must be <code>true</code> for this option to work.<br>

View File

@ -151,7 +151,7 @@ tr.group-header.collapsed td i {
<ul>
<li>This widget will <strong>only work</strong> in tablesorter version 2.8+ and jQuery version 1.7+.</li>
<li>Please do not use this widget in very large tables (it might be really slow) <del>or when your table includes multiple tbodies</del>.<br><br></li>
<li>In <span class="version">v2.21.6</span>, group headers are now keyboard accessible using <kbd>Tab</kbd>; and pressing <kbd>Enter</kbd> while the header has focus will toggle the group header, or use <kbd>Shift</kbd> + <kbd>Enter</kbd> to toggle all groups.</li>
<li>In <span class="version">v2.22.0</span>, group headers are now keyboard accessible using <kbd>Tab</kbd>; and pressing <kbd>Enter</kbd> while the header has focus will toggle the group header, or use <kbd>Shift</kbd> + <kbd>Enter</kbd> to toggle all groups.</li>
<li>In <span class="version">v2.21.0</span>
<ul>
<li>Added <code>group_checkbox</code> option to allow setting the parsed text from the "parser-input-select.js" checkbox parser.</li>

View File

@ -176,7 +176,7 @@
<h3><a href="#">Notes</a></h3>
<div>
<ul>
<li>In <span class="version updated">v2.21.6</span>,
<li>In <span class="version updated">v2.22.0</span>,
<ul>
<li>Fixed an issue with a sum column encountering a cell without a defined "data-math" attribute returning an empty string instead of zero. See <a href="https://github.com/Mottie/tablesorter/issues/873">issue #873</a>.</li>
<li>Fixed a javascript error occurring on empty tables & now all updates will reapply column indexing to tbody cells - I know this isn't ideal as it would be slow on larger tables.</li>

View File

@ -223,7 +223,7 @@
<h4>Changes</h4>
<ul>
<li>In <span class="version">v2.21.6</span>,
<li>In <span class="version">v2.22.0</span>,
<ul>
<li>Added the BOM back to the UTF-8 csv downloadable file to support unicode characters in Excel.</li>
<li>Add <code>output_hiddenColumns</code> which includes hidden columns in the output when <code>true</code>.</li>
@ -464,7 +464,7 @@ line,value1,value2,value3
<td><span class="permalink">output_hiddenColumns</span></td>
<td><code>false</code></td>
<td>
Include hidden columns (using <code>display: none</code>) in the output (<span class="version">v2.21.6</span>).
Include hidden columns (using <code>display: none</code>) in the output (<span class="version">v2.22.0</span>).
</td>
</tr>
<tr id="output_includefooter">

View File

@ -170,7 +170,7 @@ $(function() {
<h3><a href="#">Notes</a></h3>
<div>
<ul>
<li>In <span class="version">v2.21.6</span>,
<li>In <span class="version">v2.22.0</span>,
<ul>
<li>Horizontal scrollbar now only appears on overflow.</li>
<li><code>border-box</code> is now applied to all tables with scroller widget applied.</li>
@ -295,7 +295,7 @@ $(function() {
<tr id="scroller-add-fixed-overlay">
<td><a href="#" class="permalink">scroller_addFixedOverlay</a></td>
<td>false</td>
<td>Setting this to <code>true</code> will add a fixed overlay which can be used for styling (<span class="version">v2.21.6</span>).
<td>Setting this to <code>true</code> will add a fixed overlay which can be used for styling (<span class="version">v2.22.0</span>).
<div class="collapsible">
<p>A class name of "tablesorter-scroller-fixed-panel" is added to the overlay.</p>
<p>Here is are two examples:

View File

@ -364,7 +364,7 @@
<li><a href="example-locale-sort.html">Sorting Accented Characters</a> (<a href="#sortlocalecompare"><code>sortLocaleCompare</code></a>; v2.24; <a href="https://github.com/Mottie/tablesorter/wiki/Language">languages</a>)</li>
<li><a href="example-trigger-sort.html">Sort table using a link outside the table</a> (external link; <span class="updated version">v2.17.0</span>)</li>
<li><a href="example-child-rows.html">Attach child rows (rows that sort with their parent row)</a> (<span class="updated version">v2.15.12</span>)</li>
<li><a href="example-child-rows-filtered.html">Use child rows + filter widget</a> (<span class="updated version">v2.21.6</span>)</li>
<li><a href="example-child-rows-filtered.html">Use child rows + filter widget</a> (<span class="updated version">v2.22.0</span>)</li>
<li><a href="example-multiple-tbodies.html">Sorting with Multiple Tbodies</a> (v2.2)</li>
<li><a href="example-header-column-span.html">Sorting Across Multiple Columns</a> (v2.3)</li>
<li><a href="example-option-show-processing.html">Show a processing icon during sorting/filtering</a> (v2.4)</li>
@ -479,15 +479,15 @@
<li><span class="label label-info">Beta</span> <a href="example-widget-chart.html">Chart Widget</a> (<span class="version">v2.19.0</span>).</li>
<li><span class="results">&dagger;</span> <a href="example-widget-columns.html">Columns Highlight widget</a> (v2.0.17)</li>
<li><a href="example-widget-column-selector.html">Column Selector widget</a> (<span class="version">v2.15</span>; <span class="version updated">v2.21.0</span>).</li>
<li><a href="example-widget-editable.html">Content Editable widget</a> (v2.9; <span class="version updated">v2.21.6</span>).</li>
<li><a href="example-widget-editable.html">Content Editable widget</a> (v2.9; <span class="version updated">v2.22.0</span>).</li>
<li><span class="label label-info">Beta</span> <a href="example-dragtable.html">Dragtable mod</a> - (jQuery UI widget for column reordering [<a href="http://stackoverflow.com/a/27770224/145346">ref</a>]; <span class="version">v2.19.0</span>).</li>
<li><span class="results">&dagger;</span> Filter Widget (<span class="version updated">v2.21.6</span>):
<li><span class="results">&dagger;</span> Filter Widget (<span class="version updated">v2.22.0</span>):
<ul>
<li><a href="example-widget-filter.html">basic</a> (v2.0.18; <span class="version updated">v2.18.1</span>)</li>
<li><a href="example-widget-filter-any-match.html">external option (match any column)</a> (<span class="version">v2.13.3</span>; <span class="version updated">v2.21.6</span>)</li>
<li><a href="example-widget-filter-any-match.html">external option (match any column)</a> (<span class="version">v2.13.3</span>; <span class="version updated">v2.22.0</span>)</li>
<li><a href="example-widget-filter-external-inputs.html">external inputs</a> (<span class="version">v2.14</span>; <span class="version updated">v2.18.0</span>)</li>
<li><a href="example-widget-filter-custom.html">custom</a> (v2.3.6; <span class="version updated">v2.21.6</span>)</li>
<li><a href="example-widget-filter-custom-search.html">custom searches</a> (<span class="version">v2.17.5</span>; <span class="version updated">v2.21.6</span>)</li>
<li><a href="example-widget-filter-custom.html">custom</a> (v2.3.6; <span class="version updated">v2.22.0</span>)</li>
<li><a href="example-widget-filter-custom-search.html">custom searches</a> (<span class="version">v2.17.5</span>; <span class="version updated">v2.22.0</span>)</li>
<li><a href="example-widget-filter-custom-search2.html">custom search (example #2)</a> (<span class="version">v2.19.1</span>; <span class="version updated">v2.21.0</span>)</li>
<li>formatter: <a href="example-widget-filter-formatter-1.html">jQuery UI widgets</a> and <a href="example-widget-filter-formatter-2.html">HTML5 Elements</a> (v2.7.7; <span class="version updated">v2.17.5</span>).</li>
<li>formatter: <a href="example-widget-filter-formatter-select2.html">select2</a> (<span class="version">v2.16.0</span>; <span class="version updated">v2.21.3</span>)</li>
@ -496,36 +496,36 @@
<li><span class="label label-info">Beta</span> <a href="example-widget-formatter.html">Formatter widget</a> (<span class="version">v2.19.1</span>).</li>
<li>Grouping rows widget:
<ul>
<li><a href="example-widget-grouping.html">basic</a> (v2.8; <span class="version updated">v2.21.6</span>).</li>
<li><a href="example-widget-grouping.html">basic</a> (v2.8; <span class="version updated">v2.22.0</span>).</li>
<li><a href="example-widget-grouping-filter-childrows.html">Grouping + filter + child rows</a> (<span class="updated version">v2.15.12</span>)</li>
</ul>
</li>
<li><a href="example-widget-header-titles.html">Header titles widget</a> (v2.15.6; <span class="version updated">2.15.7</span>)</li>
<li><a href="example-widget-math.html">Math widget</a> (<span class="version">v2.16</span>; <span class="version updated">v2.21.6</span>).</li>
<li><a href="example-widget-math.html">Math widget</a> (<span class="version">v2.16</span>; <span class="version updated">v2.22.0</span>).</li>
<li>
<a href="example-widget-output.html">Output widget</a> (<span class="version">v2.16</span>; <span class="version updated">v2.21.6</span>)
<a href="example-widget-output.html">Output widget</a> (<span class="version">v2.16</span>; <span class="version updated">v2.22.0</span>)
<br><br>
</li>
<li>Pager plugin (<a href="example-pager.html">basic</a> &amp; <a href="example-pager-ajax.html">ajax</a> demos; <span class="version updated">v2.21.6</span>).</li>
<li>Pager plugin (<a href="example-pager.html">basic</a> &amp; <a href="example-pager-ajax.html">ajax</a> demos; <span class="version updated">v2.22.0</span>).</li>
<li>
Pager widget (<a href="example-widget-pager.html">basic</a> &amp; <a href="example-widget-pager-ajax.html">ajax</a> demos) (<span class="version">v2.12</span>; <span class="version updated">v2.21.6</span>).<br>
Pager widget (<a href="example-widget-pager.html">basic</a> &amp; <a href="example-widget-pager-ajax.html">ajax</a> demos) (<span class="version">v2.12</span>; <span class="version updated">v2.22.0</span>).<br>
<br>
</li>
<li><a href="example-widget-print.html">Print widget</a> (<span class="version">v2.16.4</span>; <span class="version updated">v2.19.0</span>)</li>
<li><a href="example-widget-reflow.html">Reflow widget</a> (<span class="version">v2.16</span>; <span class="version updated">v2.19.0</span>)</li>
<li><a href="example-widgets.html">Repeat Headers widget</a> (v2.0.5; <span class="version updated">v2.19.0</span>)</li>
<li><span class="results">&dagger;</span> <a href="example-widget-resizable.html">Resizable Columns widget</a> (v2.0.23.1; <span class="version updated">v2.21.6</span>)</li>
<li><span class="results">&dagger;</span> <a href="example-widget-resizable.html">Resizable Columns widget</a> (v2.0.23.1; <span class="version updated">v2.22.0</span>)</li>
<li><span class="results">&dagger;</span> <a href="example-widget-savesort.html">Save sort widget</a> (v2.0.27)</li>
<li><a href="example-widget-scroller.html">Scroller widget</a> (<span class="version">v2.9</span>; <span class="version updated">v2.21.6</span>).</li>
<li><a href="example-widget-scroller.html">Scroller widget</a> (<span class="version">v2.9</span>; <span class="version updated">v2.22.0</span>).</li>
<li><a href="example-widget-static-row.html">StaticRow widget</a> (<span class="version">v2.16</span>; <span class="version updated">v2.19.1</span>).</li>
<li><span class="results">&dagger;</span> <a href="example-widget-sticky-header.html">Sticky header widget</a> (v2.0.21.1; <span class="version updated">v2.21.3</span>)</li>
<li><a href="example-widget-css-sticky-header.html">Sticky header (css3) widget</a> (<span class="version">v2.14.2</span>; <span class="version updated">v2.19.1</span>).</li>
<li><span class="results">&dagger;</span> UITheme widget (<span class="version updated">v2.17.4</span>; <span class="version updated">v2.19.0</span>):
<ul>
<li><a href="example-widget-ui-theme.html">jQuery UI theme</a> (v2.0.9)</li>
<li><a href="example-widget-bootstrap-theme-v2.html">Bootstrap v2.x</a> (demo added <span class="version">v2.21.6</span>) &amp; <a href="example-widget-bootstrap-theme.html">Bootstrap v3.x</a> (v2.4)</li>
<li><a href="example-widget-bootstrap-theme-v2.html">Bootstrap v2.x</a> (demo added <span class="version">v2.22.0</span>) &amp; <a href="example-widget-bootstrap-theme.html">Bootstrap v3.x</a> (v2.4)</li>
</ul>
</li>
<li><span class="results">&Dagger;</span> <a href="example-widget-zebra.html">Zebra stripe widget</a></li>
@ -540,11 +540,11 @@
<li><a href="example-parsers-feet-inch-fraction.html">Feet-inch-fraction parser</a> (<span class="version">v2.8</span>).</li>
<li><a href="example-parsers-file-type.html">File type parser</a> (<span class="version">v2.13</span>).</li>
<li><a href="example-parsers-ignore-articles.html">Ignore leading articles parser</a> (Ignore &quot;A&quot;, &quot;An&quot; and &quot;The&quot; in titles) (<span class="version">v2.8</span>).</li>
<li><a href="example-widget-grouping.html">Input/select parsers</a> (used by Grouping rows widget) (<span class="version">v2.8</span>; <span class="version updated">v2.21.6</span>).</li>
<li><a href="http://jsfiddle.net/Mottie/0j18Lw8r/">jQuery Globalize</a> (number &amp; date parsers; <span class="version">v2.21.6</span>).</li>
<li><a href="example-widget-grouping.html">Input/select parsers</a> (used by Grouping rows widget) (<span class="version">v2.8</span>; <span class="version updated">v2.22.0</span>).</li>
<li><a href="http://jsfiddle.net/Mottie/0j18Lw8r/">jQuery Globalize</a> (number &amp; date parsers; <span class="version">v2.22.0</span>).</li>
<li><a href="example-parsers-metric.html">Metric parser</a> (<span class="version">v2.8</span>).</li>
<li><a href="example-parsers-named-numbers.html">Named Numbers parser</a> (<span class="version">v2.18.0</span>; <span class="version updated">v2.21.6</span>).</li>
<li><a href="example-parsers-ip-address.html">Network (IPv4, IPv6 and MAC address parser</a> (<span class="version">v2.12</span>; <span class="version updated">v2.21.6</span>).</li>
<li><a href="example-parsers-named-numbers.html">Named Numbers parser</a> (<span class="version">v2.18.0</span>; <span class="version updated">v2.22.0</span>).</li>
<li><a href="example-parsers-ip-address.html">Network (IPv4, IPv6 and MAC address parser</a> (<span class="version">v2.12</span>; <span class="version updated">v2.22.0</span>).</li>
<li><a href="example-parsers-roman.html">Roman Numeral parser</a> (<span class="version">v2.17.3</span>).</li>
<li><a href="example-option-textsorter-semver.html">Semantic Versioning (Semver) sorting</a> (<span class="version">v2.14.3</span>; <span class="version updated">v2.21.4</span>).</li>
</ul>
@ -945,7 +945,7 @@
<td>null</td>
<td>
An object of instructions for per-"header cell" controls in the format: <code>headers: { 0: { option: setting }, ... }</code>
(<span class="version updated">v2.17.1</span>) <span class="label label-info">docs updated</span>
(<span class="version updated">v2.17.1</span>)
<div class="collapsible">
<br>
For example, to disable sorting on the first two columns of a table: <code>headers: { 0: { sorter: false}, 1: {sorter: false} }</code>.<br>
@ -1697,7 +1697,7 @@ $(function(){
<td><a href="#" class="permalink">pointerClick</a></td>
<td>String</td>
<td>&quot;click&quot;</td>
<td>Use this option to change the click event (<span class="version">v2.21.6</span>)
<td>Use this option to change the click event (<span class="version">v2.22.0</span>)
<div class="collapsible">
<p>Change this option if want to change the click event that is bound to the table headers. Add multiple events separated by spaces.</p>
<span class="label label-warning">Warning</span> If this option is set to fire multiple events (e.g. <code>'mouseup pointerup'</code>), sorting may be initialized twice in rapid succession and make it appear that nothing changed.
@ -1709,7 +1709,7 @@ $(function(){
<td><a href="#" class="permalink">pointerDown</a></td>
<td>String</td>
<td>&quot;mousedown&quot;</td>
<td>Use this option to change the pointer down event (<span class="version">v2.21.6</span>)
<td>Use this option to change the pointer down event (<span class="version">v2.22.0</span>)
<div class="collapsible">
<p>Change this option if you're using pointer events (or the <a href="https://github.com/jquery/PEP">pointer events polyfill</a>). Add multiple events separated by spaces.</p>
<span class="label label-warning">Warning</span> If this option is set to fire multiple events (e.g. <code>'mousedown pointerdown'</code>), sorting may be initialized twice in rapid succession and make it appear that nothing changed.
@ -1721,7 +1721,7 @@ $(function(){
<td><a href="#" class="permalink">pointerUp</a></td>
<td>String</td>
<td>&quot;mouseup&quot;</td>
<td>Use this option to change the pointer up event (<span class="version">v2.21.6</span>)
<td>Use this option to change the pointer up event (<span class="version">v2.22.0</span>)
<div class="collapsible">
<p>Change this option if you're using pointer events (or the <a href="https://github.com/jquery/PEP">pointer events polyfill</a>). Add multiple events separated by spaces.</p>
<span class="label label-warning">Warning</span> If this option is set to fire multiple events (e.g. <code>'mouseup pointerup'</code>), sorting may be initialized twice in rapid succession and make it appear that nothing changed.
@ -2275,7 +2275,7 @@ $(function(){
<td>Boolean</td>
<td>false</td>
<td>
Filter widget: If <code>true</code>, queries will search child row content by column (<span class="version">v2.21.6</span>).
Filter widget: If <code>true</code>, queries will search child row content by column (<span class="version">v2.22.0</span>).
<div class="collapsible">
<p>The <code>filter_childRows</code> option must also be <code>true</code> for this option to work.</p>
<p>If <code>false</code>, and the <code>filter_childRows</code> option is <code>true</code>, then queries in <em>any column</em> will search all child content, as before this option was added.</p>
@ -2570,7 +2570,7 @@ $(function(){
Filter widget: Customize the filter widget by adding a select dropdown with content, custom options or custom filter functions (v2.3.6; <span class="version updated">v2.17.0</span>).
<div class="collapsible">
<br>
In <span class="version updated">v2.21.6</span>, a <code>data</code> parameter was added to that long list of parameters.<p></p>
In <span class="version updated">v2.22.0</span>, a <code>data</code> parameter was added to that long list of parameters.<p></p>
<span class="label alert">*WARNING*</span> In a future update, the filter function parameters will be cleaned up and changed as follows!
<pre class="prettyprint lang-js">filter_functions : {
// function(e, n, f, i, $r, c, data) {} <- current parameters
@ -3728,7 +3728,7 @@ $('table').trigger('search', false);</pre></div>
<td>Function</td>
<td>function(table, url) { return url; }</td>
<td>
This callback function allows you to modify the processed URL as desired (<span class="version">v2.8.1</span>) <span class="label label-info">docs updated</span>.
This callback function allows you to modify the processed URL as desired (<span class="version">v2.8.1</span>).
<div class="collapsible">
<br>
<span class="label label-info">Note</span> The pager widget equivalent option is within the <code>widgetOptions</code> and accessed via <code>widgetOptions.pager_customAjaxUrl</code><br>

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,4 @@
/*! TableSorter (FORK) v2.21.5 *//*
/*! TableSorter (FORK) v2.22.0 *//*
* Client-side table sorting with ease!
* @requires jQuery v1.2.6+
*
@ -26,7 +26,7 @@
var ts = this;
ts.version = '2.21.5';
ts.version = '2.22.0';
ts.parsers = [];
ts.widgets = [];

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,4 @@
/*! Parser: jQuery Globalize - updated 5/2/2015 (v2.21.6) */
/*! Parser: jQuery Globalize - updated 5/17/2015 (v2.22.0) */
/* Extract localized data using jQuery's Globalize parsers; set
Globalize.locale( 'xx' ) prior to initializing tablesorter! */
/*jshint jquery:true */

View File

@ -1,4 +1,4 @@
/*! Parser: input & select - updated 4/28/2015 (v2.21.6) *//*
/*! Parser: input & select - updated 5/17/2015 (v2.22.0) *//*
* for jQuery 1.7+ & tablesorter 2.7.11+
* Demo: http://mottie.github.com/tablesorter/docs/example-widget-grouping.html
*/

View File

@ -1,4 +1,4 @@
/*! Parser: network - updated 5/4/2015 (v2.21.6) */
/*! Parser: network - updated 5/17/2015 (v2.22.0) */
/* IPv4, IPv6 and MAC Addresses */
/*global jQuery: false */
;(function($){

View File

@ -1,4 +1,4 @@
/*! Widget: editable - updated 2/9/2015 (v2.19.1) *//*
/*! Widget: editable - updated 5/17/2015 (v2.22.0) *//*
* Requires tablesorter v2.8+ and jQuery 1.7+
* by Rob Garrison
*/

View File

@ -1,4 +1,4 @@
/*! Widget: filter - updated 3/26/2015 (v2.21.3) *//*
/*! Widget: filter - updated 5/17/2015 (v2.22.0) *//*
* Requires tablesorter v2.8+ and jQuery 1.7+
* by Rob Garrison
*/

View File

@ -1,4 +1,4 @@
/*! Widget: math - updated 2/9/2015 (v2.19.1) *//*
/*! Widget: math - updated 5/17/2015 (v2.22.0) *//*
* Requires tablesorter v2.16+ and jQuery 1.7+
* by Rob Garrison
*/

View File

@ -1,4 +1,4 @@
/*! Widget: output - updated 3/26/2015 (v2.21.3) *//*
/*! Widget: output - updated 5/17/2015 (v2.22.0) *//*
* Requires tablesorter v2.8+ and jQuery 1.7+
* Modified from:
* HTML Table to CSV: http://www.kunalbabre.com/projects/table2CSV.php (License unknown?)

View File

@ -1,4 +1,4 @@
/*! Widget: Pager - updated 3/26/2015 (v2.21.3) */
/*! Widget: Pager - updated 5/17/2015 (v2.22.0) */
/* Requires tablesorter v2.8+ and jQuery 1.7+
* by Rob Garrison
*/

View File

@ -1,4 +1,4 @@
/*! Widget: resizable - updated 4/2/2015 (v2.21.5) */
/*! Widget: resizable - updated 5/17/2015 (v2.22.0) */
;(function ($, window) {
'use strict';
var ts = $.tablesorter || {};

View File

@ -1,4 +1,4 @@
/*! Widget: scroller - updated 4/2/2015 (v2.21.5) *//*
/*! Widget: scroller - updated 5/17/2015 (v2.22.0) *//*
Copyright (C) 2011 T. Connell & Associates, Inc.
Dual-licensed under the MIT and GPL licenses

View File

@ -1,8 +1,8 @@
{
"name": "tablesorter",
"title": "tablesorter",
"version": "2.21.5",
"description": "tablesorter 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.\n\nThis forked version adds lots of new enhancements including: alphanumeric sorting, pager callback functons, multiple widgets providing column styling, ui theme application, sticky headers, column filters and resizer, as well as extended documentation with a lot more demos.",
"version": "2.22.0",
"description": "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.",
"author": {
"name": "Christian Bach",
"url": "http://tablesorter.com/"

View File

@ -1,7 +1,7 @@
{
"name": "tablesorter",
"title": "tablesorter",
"version": "2.21.5",
"version": "2.22.0",
"description": "tablesorter 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.\n\nThis forked version adds lots of new enhancements including: alphanumeric sorting, pager callback functons, multiple widgets providing column styling, ui theme application, sticky headers, column filters and resizer, as well as extended documentation with a lot more demos.",
"author": {
"name": "Christian Bach",