jquery-tablesorter 1.19.1 → 1.19.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,11 +1,11 @@
1
- /*! Widget: sort2Hash (BETA) - updated 11/2/2015 (v2.24.1) */
1
+ /*! Widget: sort2Hash (BETA) - updated 11/10/2015 (v2.24.4) */
2
2
  /* Requires tablesorter v2.8+ and jQuery 1.7+
3
3
  * by Rob Garrison
4
4
  */
5
5
  ;( function( $ ) {
6
6
  'use strict';
7
7
  var ts = $.tablesorter || {},
8
- s2h = {
8
+ s2h = ts.sort2Hash = {
9
9
  init : function( c, wo ) {
10
10
  var filter, temp, page, size,
11
11
  table = c.table,
@@ -17,7 +17,7 @@
17
17
  }
18
18
  if ( ts.hasWidget( c.table, 'pager' ) ) {
19
19
  temp = parseInt( s2h.decodeHash( c, wo, 'page' ), 10 );
20
- page = pager.page = ( temp < 0 ? 0 : ( temp > pager.totalPages ? pager.totalPages - 1 : temp ) ) + 1;
20
+ page = pager.page = ( temp < 0 ? 0 : ( temp > pager.totalPages ? pager.totalPages - 1 : temp ) );
21
21
  size = pager.size = parseInt( s2h.decodeHash( c, wo, 'size' ), 10 );
22
22
  }
23
23
  if ( ts.hasWidget( table, 'filter' ) ) {
@@ -33,9 +33,13 @@
33
33
  }, 100 );
34
34
  });
35
35
  }
36
- } else {
37
- c.$table.trigger( 'pageAndSize', [ page, size ] );
38
36
  }
37
+ if ( !filter ) {
38
+ c.$table.one( 'tablesorter-ready', function() {
39
+ c.$table.trigger( 'pageAndSize', [ page, size ] );
40
+ });
41
+ }
42
+
39
43
  c.$table.on( 'sortEnd.sort2hash filterEnd.sort2hash pagerComplete.sort2Hash', function() {
40
44
  if ( this.hasInitialized ) {
41
45
  s2h.setHash( this.config, this.config.widgetOptions );
@@ -125,6 +129,33 @@
125
129
  return sort.join( wo.sort2Hash_separator );
126
130
  },
127
131
 
132
+ // Get URL Parameters (getParam)
133
+ // modified from http://www.netlobo.com/url_query_string_javascript.html
134
+ getParam : function ( name, hash, returnRegex ) {
135
+ if ( !hash ) { hash = window.location.hash; }
136
+ var regex = new RegExp( '[\\?&]' + s2h.regexEscape( name ) + '=([^&#]*)' ),
137
+ match = regex.exec( hash );
138
+ if ( returnRegex ) { return regex; }
139
+ return match === null ? '' : decodeURIComponent( match[ 1 ] );
140
+ },
141
+
142
+ // remove parameter from hash
143
+ removeParam : function( name, hash ) {
144
+ if ( !hash ) { hash = window.location.hash; }
145
+ var index,
146
+ regex = s2h.getParam( name, hash, true ),
147
+ result = [],
148
+ parts = hash.split( '&' ),
149
+ len = parts.length;
150
+ for ( index = 0; index < len; index++ ) {
151
+ // regex expects a leading '&'...
152
+ if ( !regex.test( '&' + parts[ index ] ) ) {
153
+ result.push( parts[ index ] );
154
+ }
155
+ }
156
+ return result.length ? result.join( '&' ) : '';
157
+ },
158
+
128
159
  encodeHash : function( c, wo, component, value, rawValue ) {
129
160
  var result = false,
130
161
  tableId = s2h.getTableId( c, wo );
@@ -138,39 +169,30 @@
138
169
  },
139
170
 
140
171
  decodeHash : function( c, wo, component ) {
141
- var regex,
142
- result = false,
172
+ var result = false,
143
173
  tableId = s2h.getTableId( c, wo );
144
174
  if ( typeof wo.sort2Hash_decodeHash === 'function' ) {
175
+ // return a string
145
176
  result = wo.sort2Hash_decodeHash( c, tableId, component );
146
177
  }
147
178
  if ( result === false ) {
148
- regex = new RegExp( '[\\#&]' + component + '\\[' + s2h.regexEscape( tableId ) + '\\]=([^&]*)' ),
149
- /*jshint -W030 */
150
- result = regex.exec( window.location.hash );
179
+ result = s2h.getParam( component + '[' + tableId + ']' );
151
180
  }
152
- return result ? decodeURIComponent( result[ 1 ] ) : '';
181
+ return result || '';
153
182
  },
154
183
 
155
184
  cleanHash : function( c, wo, component, hash ) {
156
- var index, len, parts, regex,
157
- result = false,
185
+ var result = false,
158
186
  tableId = s2h.getTableId( c, wo );
159
187
  if ( typeof wo.sort2Hash_cleanHash === 'function' ) {
188
+ // can return an array or string
160
189
  result = wo.sort2Hash_cleanHash( c, tableId, component, hash );
161
190
  }
162
191
  if ( result === false ) {
163
- result = [];
164
- parts = ( hash || '' ).slice(1).split( '&' );
165
- len = parts.length;
166
- regex = new RegExp( component + '\\[' + s2h.regexEscape( tableId ) + '\\]=([^&]*)' );
167
- for ( index = 0; index < len; index++ ) {
168
- if ( !regex.test( parts[ index ] ) ) {
169
- result.push( parts[ index ] );
170
- }
171
- }
192
+ // parameter example: 'sort[table0]=0,0'
193
+ result = s2h.removeParam( component + '[' + tableId + ']', hash );
172
194
  }
173
- return result.length ? '#' + result.join( '&' ) : '';
195
+ return result || '';
174
196
  },
175
197
 
176
198
  setHash : function( c, wo ) {
@@ -0,0 +1,81 @@
1
+ /*! tablesorter enable/disable sort & filter (BETA) - 11/10/2015 (v2.24.4)
2
+ * Requires tablesorter v2.24.4+ & jQuery 1.7+
3
+ * by Rob Garrison
4
+ */
5
+ ;( function( $ ) {
6
+ 'use strict';
7
+ var ts = $.tablesorter,
8
+
9
+ tst = ts.toggleTS = {
10
+
11
+ init : function( c, wo ) {
12
+ wo.toggleTS_isEnabled = true; // enabled
13
+ wo.toggleTS_areDisabled = {
14
+ headers : [],
15
+ filters : []
16
+ };
17
+ c.$table.on('enable.toggleTS disable.toggleTS', function( event ) {
18
+ tst.toggle( this.config, this.config.widgetOptions, event.type === 'enable' );
19
+ });
20
+ },
21
+ toggle : function( c, wo, isEnabled ) {
22
+ if ( wo.toggleTS_isEnabled !== isEnabled ) {
23
+ wo.toggleTS_isEnabled = isEnabled;
24
+ var indx, $el,
25
+ len = c.$headers.length;
26
+
27
+ // table headers
28
+ for ( indx = 0; indx < len; indx++ ) {
29
+ $el = c.$headers.eq( indx );
30
+ // function added in v2.24.4
31
+ ts.setColumnSort( c, $el, !isEnabled );
32
+ // function added in v2.24.4; passing "isEnabled" allows removal of "next sort" labels
33
+ ts.setColumnAriaLabel( c, $el, isEnabled );
34
+ }
35
+ if ( wo.toggleTS_hideFilterRow ) {
36
+ c.$table.find( '.' + ts.css.filterRow ).toggle( isEnabled );
37
+ } else if ( ts.hasWidget( c.$table, 'filter' ) ) {
38
+ // c.$filters points to filter CELL
39
+ len = c.$filters.length;
40
+ for ( indx = 0; indx < len; indx++ ) {
41
+ if ( isEnabled && !wo.toggleTS_areDisabled.filters[ indx ] ) {
42
+ c.$filters.eq( indx ).find( 'input, select' )
43
+ .removeClass( ts.css.filterDisabled )
44
+ .prop( 'disabled', false );
45
+ } else if ( !isEnabled ) {
46
+ $el = c.$filters.eq( indx ).find( 'input, select' );
47
+ if ( $el.hasClass( ts.css.filterDisabled ) ) {
48
+ wo.toggleTS_areDisabled.filters[ indx ] = true;
49
+ }
50
+ $el
51
+ .addClass( ts.css.filterDisabled )
52
+ .prop( 'disabled', true );
53
+ }
54
+ }
55
+ }
56
+ // include external filters
57
+ wo.filter_$externalFilters
58
+ .toggleClass( ts.css.filterDisabled, isEnabled )
59
+ .prop( 'disabled', !isEnabled );
60
+ }
61
+ if ( typeof wo.toggleTS_callback === 'function' ) {
62
+ wo.toggleTS_callback( c, isEnabled );
63
+ }
64
+ }
65
+ };
66
+
67
+ ts.addWidget({
68
+ id: 'toggle-ts',
69
+ options: {
70
+ toggleTS_hideFilterRow : false,
71
+ toggleTS_callback : null
72
+ },
73
+ init : function( table, thisWidget, c, wo ) {
74
+ tst.init( c, wo );
75
+ },
76
+ remove : function( table, c ) {
77
+ c.$table.off( 'enable.toggleTS disable.toggleTS' );
78
+ }
79
+ });
80
+
81
+ })( jQuery );
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.19.1
4
+ version: 1.19.2
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: 2015-11-05 00:00:00.000000000 Z
12
+ date: 2015-11-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: railties
@@ -134,6 +134,7 @@ files:
134
134
  - vendor/assets/javascripts/jquery-tablesorter/widgets/widget-staticRow.js
135
135
  - vendor/assets/javascripts/jquery-tablesorter/widgets/widget-stickyHeaders.js
136
136
  - vendor/assets/javascripts/jquery-tablesorter/widgets/widget-storage.js
137
+ - vendor/assets/javascripts/jquery-tablesorter/widgets/widget-toggle.js
137
138
  - vendor/assets/javascripts/jquery-tablesorter/widgets/widget-uitheme.js
138
139
  - vendor/assets/javascripts/jquery-tablesorter/widgets/widget-view.js
139
140
  - vendor/assets/stylesheets/jquery-tablesorter/addons/pager/jquery.tablesorter.pager.css