jquery-tablesorter 1.21.0 → 1.21.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f3731f02067ca05fe70bd8cffb0b88cc8609550c
4
- data.tar.gz: 9e80942394a066cff780da926ff0a8da5a65630b
3
+ metadata.gz: cb2ba06f45b4d250693949a5d773166da7c07ea9
4
+ data.tar.gz: 6a0fb6f57c8cc04560b509c54440ea34ea1017b0
5
5
  SHA512:
6
- metadata.gz: 471a7f37eda5c4a93fac02ede5f1420a3ecd473733a87966666d8ea6ff6cc8c66f4e25692b883d192ac45d5a6fde7cd45681145a685d8c64c5e7c6b12270bc99
7
- data.tar.gz: 93cdb689d1ea90b88621a25b376d5f1daf6a4a0c21b8c71f9f7d1bb62250bae33479a1312b9e51c25dc24404bccdab3497b36d8af4c4b90f5f69cea05982ef5e
6
+ metadata.gz: 796f72bd34bd69508cf330100a603745e37d5878c374e08e1028ec99670cafd5124052ef899e1d7327e0f95d25246d47b0cfa5b7453b8ed6306359f7181b7b4e
7
+ data.tar.gz: 6d9bf1b74b466881db498b59697b15bff8e0463a90d05ab8c2c7d8b911cc4688febbf407fecf09f4bf758b66a7e3b9a1d45ffbf15df7315afd5b7b4100aa8347
data/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  Simple integration of jquery-tablesorter into the asset pipeline.
6
6
 
7
- Current tablesorter version: 2.26.0 (5/1/2016), [documentation]
7
+ Current tablesorter version: 2.26.1 (5/16/2016), [documentation]
8
8
 
9
9
  Any issue associated with the js/css files, please report to [Mottie's fork].
10
10
 
@@ -1,7 +1,7 @@
1
1
  module JqueryTablesorter
2
2
  MAJOR = 1
3
3
  MINOR = 21
4
- TINY = 0
4
+ TINY = 1
5
5
 
6
6
  VERSION = [MAJOR, MINOR, TINY].compact.join('.')
7
7
  end
@@ -4,7 +4,7 @@
4
4
  ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██▀▀ ▀▀▀██
5
5
  █████▀ ▀████▀ ██ ██ ▀████▀ ██ ██ ██ ██ ▀████▀ █████▀ ██ ██ █████▀
6
6
  */
7
- /*! tablesorter (FORK) - updated 05-01-2016 (v2.26.0)*/
7
+ /*! tablesorter (FORK) - updated 05-16-2016 (v2.26.1)*/
8
8
  /* Includes widgets ( storage,uitheme,columns,filter,stickyHeaders,resizable,saveSort ) */
9
9
  (function(factory) {
10
10
  if (typeof define === 'function' && define.amd) {
@@ -16,7 +16,7 @@
16
16
  }
17
17
  }(function($) {
18
18
 
19
- /*! TableSorter (FORK) v2.26.0 *//*
19
+ /*! TableSorter (FORK) v2.26.1 *//*
20
20
  * Client-side table sorting with ease!
21
21
  * @requires jQuery v1.2.6+
22
22
  *
@@ -39,7 +39,7 @@
39
39
  'use strict';
40
40
  var ts = $.tablesorter = {
41
41
 
42
- version : '2.26.0',
42
+ version : '2.26.1',
43
43
 
44
44
  parsers : [],
45
45
  widgets : [],
@@ -87,12 +87,12 @@
87
87
  numberSorter : null, // choose overall numeric sorter function( a, b, direction, maxColumnValue )
88
88
 
89
89
  // *** widget options
90
- widgets: [], // method to add widgets, e.g. widgets: ['zebra']
90
+ initWidgets : true, // apply widgets on tablesorter initialization
91
+ widgetClass : 'widget-{name}', // table class name template to match to include a widget
92
+ widgets : [], // method to add widgets, e.g. widgets: ['zebra']
91
93
  widgetOptions : {
92
94
  zebra : [ 'even', 'odd' ] // zebra widget alternating row class names
93
95
  },
94
- initWidgets : true, // apply widgets on tablesorter initialization
95
- widgetClass : 'widget-{name}', // table class name template to match to include a widget
96
96
 
97
97
  // *** callbacks
98
98
  initialized : null, // function( table ){},
@@ -106,7 +106,7 @@
106
106
  cssHeaderRow : '',
107
107
  cssProcessing : '', // processing icon applied to header during sort/filter
108
108
 
109
- cssChildRow : 'tablesorter-childRow', // class name indiciating that a row is to be attached to the its parent
109
+ cssChildRow : 'tablesorter-childRow', // class name indiciating that a row is to be attached to its parent
110
110
  cssInfoBlock : 'tablesorter-infoOnly', // don't sort tbody with this class name (only one class name allowed here!)
111
111
  cssNoSort : 'tablesorter-noSort', // class name added to element inside header; clicking on it won't cause a sort
112
112
  cssIgnoreRow : 'tablesorter-ignoreRow', // header row to ignore; cells within this row will not be added to c.$headers
@@ -3134,13 +3134,14 @@
3134
3134
  id: 'filter',
3135
3135
  priority: 50,
3136
3136
  options : {
3137
+ filter_cellFilter : '', // css class name added to the filter cell ( string or array )
3137
3138
  filter_childRows : false, // if true, filter includes child row content in the search
3138
3139
  filter_childByColumn : false, // ( filter_childRows must be true ) if true = search child rows by column; false = search all child row text grouped
3139
3140
  filter_childWithSibs : true, // if true, include matching child row siblings
3140
- filter_columnFilters : true, // if true, a filter will be added to the top of each table column
3141
3141
  filter_columnAnyMatch: true, // if true, allows using '#:{query}' in AnyMatch searches ( column:query )
3142
- filter_cellFilter : '', // css class name added to the filter cell ( string or array )
3142
+ filter_columnFilters : true, // if true, a filter will be added to the top of each table column
3143
3143
  filter_cssFilter : '', // css class name added to the filter row & each input in the row ( tablesorter-filter is ALWAYS added )
3144
+ filter_defaultAttrib : 'data-value', // data attribute in the header cell that contains the default filter value
3144
3145
  filter_defaultFilter : {}, // add a default column filter type '~{query}' to make fuzzy searches default; '{q1} AND {q2}' to make all searches use a logical AND.
3145
3146
  filter_excludeFilter : {}, // filters to exclude, per column
3146
3147
  filter_external : '', // jQuery selector string ( or jQuery object ) of external filters
@@ -3160,11 +3161,10 @@
3160
3161
  filter_searchDelay : 300, // typing delay in milliseconds before starting a search
3161
3162
  filter_searchFiltered: true, // allow searching through already filtered rows in special circumstances; will speed up searching in large tables if true
3162
3163
  filter_selectSource : null, // include a function to return an array of values to be added to the column filter select
3163
- filter_startsWith : false, // if true, filter start from the beginning of the cell contents
3164
- filter_useParsedData : false, // filter all data using parsed content
3164
+ filter_selectSourceSeparator : '|', // filter_selectSource array text left of the separator is added to the option value, right into the option text
3165
3165
  filter_serversideFiltering : false, // if true, must perform server-side filtering b/c client-side filtering is disabled, but the ui and events will still be used.
3166
- filter_defaultAttrib : 'data-value', // data attribute in the header cell that contains the default filter value
3167
- filter_selectSourceSeparator : '|' // filter_selectSource array text left of the separator is added to the option value, right into the option text
3166
+ filter_startsWith : false, // if true, filter start from the beginning of the cell contents
3167
+ filter_useParsedData : false // filter all data using parsed content
3168
3168
  },
3169
3169
  format: function( table, c, wo ) {
3170
3170
  if ( !c.$table.hasClass( 'hasFilters' ) ) {
@@ -4189,12 +4189,11 @@
4189
4189
  [];
4190
4190
 
4191
4191
  data.$cells = data.$row.children();
4192
-
4193
- if ( data.anyMatchFlag && columnIndex.length > 1 ) {
4192
+ if ( data.anyMatchFlag && columnIndex.length > 1 || data.anyMatchFilter ) {
4194
4193
  data.anyMatch = true;
4195
4194
  data.isMatch = true;
4196
4195
  data.rowArray = data.$cells.map( function( i ) {
4197
- if ( $.inArray( i, columnIndex ) > -1 ) {
4196
+ if ( $.inArray( i, columnIndex ) > -1 || data.anyMatchFilter ) {
4198
4197
  if ( data.parsed[ i ] ) {
4199
4198
  txt = data.cacheArray[ i ];
4200
4199
  } else {
@@ -4212,7 +4211,6 @@
4212
4211
  data.exact = data.rowArray.join( ' ' );
4213
4212
  data.iExact = wo.filter_ignoreCase ? data.exact.toLowerCase() : data.exact;
4214
4213
  data.cache = data.cacheArray.slice( 0, -1 ).join( ' ' );
4215
-
4216
4214
  vars.excludeMatch = vars.noAnyMatch;
4217
4215
  filterMatched = tsf.processTypes( c, data, vars );
4218
4216
  if ( filterMatched !== null ) {
@@ -5333,7 +5331,6 @@
5333
5331
  .bind( 'selectstart', false );
5334
5332
  }
5335
5333
  }
5336
- ts.resizable.setHandlePosition( c, wo );
5337
5334
  ts.resizable.bindings( c, wo );
5338
5335
  },
5339
5336
 
@@ -5383,12 +5380,11 @@
5383
5380
 
5384
5381
  setHandlePosition : function( c, wo ) {
5385
5382
  var startPosition,
5386
- hasScroller = ts.hasWidget( c.table, 'scroller' ),
5387
5383
  tableHeight = c.$table.height(),
5388
5384
  $handles = wo.$resizable_container.children(),
5389
5385
  handleCenter = Math.floor( $handles.width() / 2 );
5390
5386
 
5391
- if ( hasScroller ) {
5387
+ if ( ts.hasWidget( c.table, 'scroller' ) ) {
5392
5388
  tableHeight = 0;
5393
5389
  c.$table.closest( '.' + ts.css.scrollerWrap ).children().each(function(){
5394
5390
  var $this = $(this);
@@ -5571,6 +5567,9 @@
5571
5567
  init: function(table, thisWidget, c, wo) {
5572
5568
  ts.resizable.init( c, wo );
5573
5569
  },
5570
+ format: function( table, c, wo ) {
5571
+ ts.resizable.setHandlePosition( c, wo );
5572
+ },
5574
5573
  remove: function( table, c, wo, refreshing ) {
5575
5574
  if (wo.$resizable_container) {
5576
5575
  var namespace = c.namespace + 'tsresize';
@@ -1,4 +1,4 @@
1
- /*! TableSorter (FORK) v2.26.0 *//*
1
+ /*! TableSorter (FORK) v2.26.1 *//*
2
2
  * Client-side table sorting with ease!
3
3
  * @requires jQuery v1.2.6+
4
4
  *
@@ -21,7 +21,7 @@
21
21
  'use strict';
22
22
  var ts = $.tablesorter = {
23
23
 
24
- version : '2.26.0',
24
+ version : '2.26.1',
25
25
 
26
26
  parsers : [],
27
27
  widgets : [],
@@ -69,12 +69,12 @@
69
69
  numberSorter : null, // choose overall numeric sorter function( a, b, direction, maxColumnValue )
70
70
 
71
71
  // *** widget options
72
- widgets: [], // method to add widgets, e.g. widgets: ['zebra']
72
+ initWidgets : true, // apply widgets on tablesorter initialization
73
+ widgetClass : 'widget-{name}', // table class name template to match to include a widget
74
+ widgets : [], // method to add widgets, e.g. widgets: ['zebra']
73
75
  widgetOptions : {
74
76
  zebra : [ 'even', 'odd' ] // zebra widget alternating row class names
75
77
  },
76
- initWidgets : true, // apply widgets on tablesorter initialization
77
- widgetClass : 'widget-{name}', // table class name template to match to include a widget
78
78
 
79
79
  // *** callbacks
80
80
  initialized : null, // function( table ){},
@@ -88,7 +88,7 @@
88
88
  cssHeaderRow : '',
89
89
  cssProcessing : '', // processing icon applied to header during sort/filter
90
90
 
91
- cssChildRow : 'tablesorter-childRow', // class name indiciating that a row is to be attached to the its parent
91
+ cssChildRow : 'tablesorter-childRow', // class name indiciating that a row is to be attached to its parent
92
92
  cssInfoBlock : 'tablesorter-infoOnly', // don't sort tbody with this class name (only one class name allowed here!)
93
93
  cssNoSort : 'tablesorter-noSort', // class name added to element inside header; clicking on it won't cause a sort
94
94
  cssIgnoreRow : 'tablesorter-ignoreRow', // header row to ignore; cells within this row will not be added to c.$headers
@@ -4,7 +4,7 @@
4
4
  ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██▀▀ ▀▀▀██
5
5
  █████▀ ▀████▀ ██ ██ ▀████▀ ██ ██ ██ ██ ▀████▀ █████▀ ██ ██ █████▀
6
6
  */
7
- /*! tablesorter (FORK) - updated 05-01-2016 (v2.26.0)*/
7
+ /*! tablesorter (FORK) - updated 05-16-2016 (v2.26.1)*/
8
8
  /* Includes widgets ( storage,uitheme,columns,filter,stickyHeaders,resizable,saveSort ) */
9
9
  (function(factory) {
10
10
  if (typeof define === 'function' && define.amd) {
@@ -402,13 +402,14 @@
402
402
  id: 'filter',
403
403
  priority: 50,
404
404
  options : {
405
+ filter_cellFilter : '', // css class name added to the filter cell ( string or array )
405
406
  filter_childRows : false, // if true, filter includes child row content in the search
406
407
  filter_childByColumn : false, // ( filter_childRows must be true ) if true = search child rows by column; false = search all child row text grouped
407
408
  filter_childWithSibs : true, // if true, include matching child row siblings
408
- filter_columnFilters : true, // if true, a filter will be added to the top of each table column
409
409
  filter_columnAnyMatch: true, // if true, allows using '#:{query}' in AnyMatch searches ( column:query )
410
- filter_cellFilter : '', // css class name added to the filter cell ( string or array )
410
+ filter_columnFilters : true, // if true, a filter will be added to the top of each table column
411
411
  filter_cssFilter : '', // css class name added to the filter row & each input in the row ( tablesorter-filter is ALWAYS added )
412
+ filter_defaultAttrib : 'data-value', // data attribute in the header cell that contains the default filter value
412
413
  filter_defaultFilter : {}, // add a default column filter type '~{query}' to make fuzzy searches default; '{q1} AND {q2}' to make all searches use a logical AND.
413
414
  filter_excludeFilter : {}, // filters to exclude, per column
414
415
  filter_external : '', // jQuery selector string ( or jQuery object ) of external filters
@@ -428,11 +429,10 @@
428
429
  filter_searchDelay : 300, // typing delay in milliseconds before starting a search
429
430
  filter_searchFiltered: true, // allow searching through already filtered rows in special circumstances; will speed up searching in large tables if true
430
431
  filter_selectSource : null, // include a function to return an array of values to be added to the column filter select
431
- filter_startsWith : false, // if true, filter start from the beginning of the cell contents
432
- filter_useParsedData : false, // filter all data using parsed content
432
+ filter_selectSourceSeparator : '|', // filter_selectSource array text left of the separator is added to the option value, right into the option text
433
433
  filter_serversideFiltering : false, // if true, must perform server-side filtering b/c client-side filtering is disabled, but the ui and events will still be used.
434
- filter_defaultAttrib : 'data-value', // data attribute in the header cell that contains the default filter value
435
- filter_selectSourceSeparator : '|' // filter_selectSource array text left of the separator is added to the option value, right into the option text
434
+ filter_startsWith : false, // if true, filter start from the beginning of the cell contents
435
+ filter_useParsedData : false // filter all data using parsed content
436
436
  },
437
437
  format: function( table, c, wo ) {
438
438
  if ( !c.$table.hasClass( 'hasFilters' ) ) {
@@ -1457,12 +1457,11 @@
1457
1457
  [];
1458
1458
 
1459
1459
  data.$cells = data.$row.children();
1460
-
1461
- if ( data.anyMatchFlag && columnIndex.length > 1 ) {
1460
+ if ( data.anyMatchFlag && columnIndex.length > 1 || data.anyMatchFilter ) {
1462
1461
  data.anyMatch = true;
1463
1462
  data.isMatch = true;
1464
1463
  data.rowArray = data.$cells.map( function( i ) {
1465
- if ( $.inArray( i, columnIndex ) > -1 ) {
1464
+ if ( $.inArray( i, columnIndex ) > -1 || data.anyMatchFilter ) {
1466
1465
  if ( data.parsed[ i ] ) {
1467
1466
  txt = data.cacheArray[ i ];
1468
1467
  } else {
@@ -1480,7 +1479,6 @@
1480
1479
  data.exact = data.rowArray.join( ' ' );
1481
1480
  data.iExact = wo.filter_ignoreCase ? data.exact.toLowerCase() : data.exact;
1482
1481
  data.cache = data.cacheArray.slice( 0, -1 ).join( ' ' );
1483
-
1484
1482
  vars.excludeMatch = vars.noAnyMatch;
1485
1483
  filterMatched = tsf.processTypes( c, data, vars );
1486
1484
  if ( filterMatched !== null ) {
@@ -2601,7 +2599,6 @@
2601
2599
  .bind( 'selectstart', false );
2602
2600
  }
2603
2601
  }
2604
- ts.resizable.setHandlePosition( c, wo );
2605
2602
  ts.resizable.bindings( c, wo );
2606
2603
  },
2607
2604
 
@@ -2651,12 +2648,11 @@
2651
2648
 
2652
2649
  setHandlePosition : function( c, wo ) {
2653
2650
  var startPosition,
2654
- hasScroller = ts.hasWidget( c.table, 'scroller' ),
2655
2651
  tableHeight = c.$table.height(),
2656
2652
  $handles = wo.$resizable_container.children(),
2657
2653
  handleCenter = Math.floor( $handles.width() / 2 );
2658
2654
 
2659
- if ( hasScroller ) {
2655
+ if ( ts.hasWidget( c.table, 'scroller' ) ) {
2660
2656
  tableHeight = 0;
2661
2657
  c.$table.closest( '.' + ts.css.scrollerWrap ).children().each(function(){
2662
2658
  var $this = $(this);
@@ -2839,6 +2835,9 @@
2839
2835
  init: function(table, thisWidget, c, wo) {
2840
2836
  ts.resizable.init( c, wo );
2841
2837
  },
2838
+ format: function( table, c, wo ) {
2839
+ ts.resizable.setHandlePosition( c, wo );
2840
+ },
2842
2841
  remove: function( table, c, wo, refreshing ) {
2843
2842
  if (wo.$resizable_container) {
2844
2843
  var namespace = c.namespace + 'tsresize';
@@ -28,13 +28,14 @@
28
28
  id: 'filter',
29
29
  priority: 50,
30
30
  options : {
31
+ filter_cellFilter : '', // css class name added to the filter cell ( string or array )
31
32
  filter_childRows : false, // if true, filter includes child row content in the search
32
33
  filter_childByColumn : false, // ( filter_childRows must be true ) if true = search child rows by column; false = search all child row text grouped
33
34
  filter_childWithSibs : true, // if true, include matching child row siblings
34
- filter_columnFilters : true, // if true, a filter will be added to the top of each table column
35
35
  filter_columnAnyMatch: true, // if true, allows using '#:{query}' in AnyMatch searches ( column:query )
36
- filter_cellFilter : '', // css class name added to the filter cell ( string or array )
36
+ filter_columnFilters : true, // if true, a filter will be added to the top of each table column
37
37
  filter_cssFilter : '', // css class name added to the filter row & each input in the row ( tablesorter-filter is ALWAYS added )
38
+ filter_defaultAttrib : 'data-value', // data attribute in the header cell that contains the default filter value
38
39
  filter_defaultFilter : {}, // add a default column filter type '~{query}' to make fuzzy searches default; '{q1} AND {q2}' to make all searches use a logical AND.
39
40
  filter_excludeFilter : {}, // filters to exclude, per column
40
41
  filter_external : '', // jQuery selector string ( or jQuery object ) of external filters
@@ -54,11 +55,10 @@
54
55
  filter_searchDelay : 300, // typing delay in milliseconds before starting a search
55
56
  filter_searchFiltered: true, // allow searching through already filtered rows in special circumstances; will speed up searching in large tables if true
56
57
  filter_selectSource : null, // include a function to return an array of values to be added to the column filter select
57
- filter_startsWith : false, // if true, filter start from the beginning of the cell contents
58
- filter_useParsedData : false, // filter all data using parsed content
58
+ filter_selectSourceSeparator : '|', // filter_selectSource array text left of the separator is added to the option value, right into the option text
59
59
  filter_serversideFiltering : false, // if true, must perform server-side filtering b/c client-side filtering is disabled, but the ui and events will still be used.
60
- filter_defaultAttrib : 'data-value', // data attribute in the header cell that contains the default filter value
61
- filter_selectSourceSeparator : '|' // filter_selectSource array text left of the separator is added to the option value, right into the option text
60
+ filter_startsWith : false, // if true, filter start from the beginning of the cell contents
61
+ filter_useParsedData : false // filter all data using parsed content
62
62
  },
63
63
  format: function( table, c, wo ) {
64
64
  if ( !c.$table.hasClass( 'hasFilters' ) ) {
@@ -1083,12 +1083,11 @@
1083
1083
  [];
1084
1084
 
1085
1085
  data.$cells = data.$row.children();
1086
-
1087
- if ( data.anyMatchFlag && columnIndex.length > 1 ) {
1086
+ if ( data.anyMatchFlag && columnIndex.length > 1 || data.anyMatchFilter ) {
1088
1087
  data.anyMatch = true;
1089
1088
  data.isMatch = true;
1090
1089
  data.rowArray = data.$cells.map( function( i ) {
1091
- if ( $.inArray( i, columnIndex ) > -1 ) {
1090
+ if ( $.inArray( i, columnIndex ) > -1 || data.anyMatchFilter ) {
1092
1091
  if ( data.parsed[ i ] ) {
1093
1092
  txt = data.cacheArray[ i ];
1094
1093
  } else {
@@ -1106,7 +1105,6 @@
1106
1105
  data.exact = data.rowArray.join( ' ' );
1107
1106
  data.iExact = wo.filter_ignoreCase ? data.exact.toLowerCase() : data.exact;
1108
1107
  data.cache = data.cacheArray.slice( 0, -1 ).join( ' ' );
1109
-
1110
1108
  vars.excludeMatch = vars.noAnyMatch;
1111
1109
  filterMatched = tsf.processTypes( c, data, vars );
1112
1110
  if ( filterMatched !== null ) {
@@ -169,12 +169,13 @@
169
169
  },
170
170
 
171
171
  groupHeaderHTML : function( c, wo, data ) {
172
+ var name = ( data.currentGroup || '' ).replace(/</g, '&lt;').replace(/>/g, '&gt;');
172
173
  return '<tr class="group-header ' + c.selectorRemove.slice(1) +
173
174
  '" unselectable="on" ' + ( c.tabIndex ? 'tabindex="0" ' : '' ) + 'data-group-index="' +
174
175
  ( data.groupIndex++ ) + '">' +
175
176
  '<td colspan="' + c.columns + '">' +
176
177
  ( wo.group_collapsible ? '<i/>' : '' ) +
177
- '<span class="group-name">' + data.currentGroup + '</span>' +
178
+ '<span class="group-name">' + name + '</span>' +
178
179
  '<span class="group-count"></span>' +
179
180
  '</td></tr>';
180
181
  },
@@ -197,12 +198,12 @@
197
198
  return savedGroup;
198
199
  },
199
200
  findColumnGroups : function( c, wo, data ) {
200
- var tbodyIndex, norm_rows, $row, rowIndex, end,
201
+ var tbodyIndex, norm_rows, $row, rowIndex, end, undef,
201
202
  hasPager = ts.hasWidget( c.table, 'pager' );
202
203
  data.groupIndex = 0;
203
204
  for ( tbodyIndex = 0; tbodyIndex < c.$tbodies.length; tbodyIndex++ ) {
204
205
  norm_rows = c.cache[ tbodyIndex ].normalized;
205
- data.group = ''; // clear grouping across tbodies
206
+ data.group = undef; // clear grouping across tbodies
206
207
  rowIndex = hasPager ? c.pager.startRow - 1 : 0;
207
208
  end = hasPager ? c.pager.endRow : norm_rows.length;
208
209
  for ( ; rowIndex < end; rowIndex++ ) {
@@ -264,10 +264,19 @@
264
264
  // update internal cache
265
265
  ts.update( c, undef, function(){
266
266
  math.updateComplete( c );
267
+ if ( !init && typeof wo.math_completed === 'function' ) {
268
+ wo.math_completed( c );
269
+ }
270
+ if ( c.debug ) {
271
+ console.log( 'Math widget update completed' + ts.benchmark( time ) );
272
+ }
267
273
  });
268
-
274
+ } else {
275
+ if ( !init && typeof wo.math_completed === 'function' ) {
276
+ wo.math_completed( c );
277
+ }
269
278
  if ( c.debug ) {
270
- console.log( 'Math widget update completed' + ts.benchmark( time ) );
279
+ console.log( 'Math widget found no changes in data' + ts.benchmark( time ) );
271
280
  }
272
281
  }
273
282
  }
@@ -580,6 +589,8 @@
580
589
  math_mask : '#,##0.00',
581
590
  // complete executed after each fucntion
582
591
  math_complete : null, // function($cell, wo, result, value, arry){ return result; },
592
+ // math_completed called after all math calculations have completed
593
+ // math_completed : function( config ) {},
583
594
  // order of calculation; 'all' is last
584
595
  math_priority : [ 'row', 'above', 'below', 'col' ],
585
596
  // template for or just prepend the mask prefix & suffix with this HTML
@@ -102,7 +102,6 @@
102
102
  .bind( 'selectstart', false );
103
103
  }
104
104
  }
105
- ts.resizable.setHandlePosition( c, wo );
106
105
  ts.resizable.bindings( c, wo );
107
106
  },
108
107
 
@@ -152,12 +151,11 @@
152
151
 
153
152
  setHandlePosition : function( c, wo ) {
154
153
  var startPosition,
155
- hasScroller = ts.hasWidget( c.table, 'scroller' ),
156
154
  tableHeight = c.$table.height(),
157
155
  $handles = wo.$resizable_container.children(),
158
156
  handleCenter = Math.floor( $handles.width() / 2 );
159
157
 
160
- if ( hasScroller ) {
158
+ if ( ts.hasWidget( c.table, 'scroller' ) ) {
161
159
  tableHeight = 0;
162
160
  c.$table.closest( '.' + ts.css.scrollerWrap ).children().each(function(){
163
161
  var $this = $(this);
@@ -340,6 +338,9 @@
340
338
  init: function(table, thisWidget, c, wo) {
341
339
  ts.resizable.init( c, wo );
342
340
  },
341
+ format: function( table, c, wo ) {
342
+ ts.resizable.setHandlePosition( c, wo );
343
+ },
343
344
  remove: function( table, c, wo, refreshing ) {
344
345
  if (wo.$resizable_container) {
345
346
  var namespace = c.namespace + 'tsresize';
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jquery-tablesorter
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.21.0
4
+ version: 1.21.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jun Lin
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-05-08 00:00:00.000000000 Z
12
+ date: 2016-05-18 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: railties