jquery-tablesorter 1.21.0 → 1.21.1

Sign up to get free protection for your applications and to get access to all the features.
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