jquery-tablesorter 1.13.0 → 1.13.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 +4 -4
- data/README.md +1 -1
- data/lib/jquery-tablesorter/version.rb +1 -1
- data/vendor/assets/javascripts/jquery-tablesorter/addons/pager/jquery.tablesorter.pager.js +27 -22
- data/vendor/assets/javascripts/jquery-tablesorter/jquery.tablesorter.js +11 -10
- data/vendor/assets/javascripts/jquery-tablesorter/jquery.tablesorter.widgets.js +8 -10
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-columnSelector.js +1 -2
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-cssStickyHeaders.js +37 -15
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-pager.js +26 -19
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c94cde7d33b48778ade7b2c35ba5b58d74a53e04
|
4
|
+
data.tar.gz: 79075db7962f26823765fdb5b16f0dd9865381d7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 60e78ca094a503b9b4421f064372d0022fecf6848e432387d2f6b32f971aff3a240977ab4501c92dd3f9a57668cc53ebf8ba6682225e4663171412ddf897eacc
|
7
|
+
data.tar.gz: f84fd99b9a51abc82064926a0113fb356abbaa834477fb98d30119c887d60b6cbd4be14cac139875246ef38c89965c5965830afaee7202a06d52f1de99ab420e
|
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.18.
|
7
|
+
Current tablesorter version: 2.18.1 (11/3/2014), [documentation]
|
8
8
|
|
9
9
|
Any issue associated with the js/css files, please report to [Mottie's fork].
|
10
10
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
/*!
|
2
2
|
* tablesorter pager plugin
|
3
|
-
* updated
|
3
|
+
* updated 11/3/2014 (v2.18.1)
|
4
4
|
*/
|
5
5
|
/*jshint browser:true, jquery:true, unused:false */
|
6
6
|
;(function($) {
|
@@ -150,7 +150,7 @@
|
|
150
150
|
},
|
151
151
|
|
152
152
|
updatePageDisplay = function(table, p, completed) {
|
153
|
-
if (
|
153
|
+
if ( p.initializing ) { return; }
|
154
154
|
var s, t, $out,
|
155
155
|
c = table.config,
|
156
156
|
sz = p.size || 10; // don't allow dividing by zero
|
@@ -328,7 +328,7 @@
|
|
328
328
|
} else {
|
329
329
|
rows[i].style.display = ( j >= s && j < e ) ? '' : 'none';
|
330
330
|
// don't count child rows
|
331
|
-
j += rows[i].className.match(c.cssChildRow + '|' + c.selectorRemove.
|
331
|
+
j += rows[i].className.match(c.cssChildRow + '|' + c.selectorRemove.slice(1)) && !p.countChildRows ? 0 : 1;
|
332
332
|
if ( j === e && rows[i].style.display !== 'none' && rows[i].className.match(ts.css.cssHasChild) ) {
|
333
333
|
lastIndex = i;
|
334
334
|
}
|
@@ -477,9 +477,11 @@
|
|
477
477
|
}
|
478
478
|
if (!p.initialized) {
|
479
479
|
p.initialized = true;
|
480
|
+
p.initializing = false;
|
480
481
|
$(table)
|
481
482
|
.trigger('applyWidgets')
|
482
483
|
.trigger('pagerInitialized', p);
|
484
|
+
updatePageDisplay(table, p);
|
483
485
|
}
|
484
486
|
},
|
485
487
|
|
@@ -499,6 +501,7 @@
|
|
499
501
|
|
500
502
|
counter = ++p.ajaxCounter;
|
501
503
|
|
504
|
+
p.last.ajaxUrl = url; // remember processed url
|
502
505
|
p.ajaxObject.url = url; // from the ajaxUrl option and modified by customAjaxUrl
|
503
506
|
p.ajaxObject.success = function(data, status, jqxhr) {
|
504
507
|
// Refuse to process old ajax commands that were overwritten by new ones - see #443
|
@@ -602,7 +605,7 @@
|
|
602
605
|
}
|
603
606
|
ts.processTbody(table, $tb, false);
|
604
607
|
}
|
605
|
-
updatePageDisplay(table, p
|
608
|
+
updatePageDisplay(table, p);
|
606
609
|
if (table.isUpdating) {
|
607
610
|
$t.trigger('updateComplete', [ table, true ]);
|
608
611
|
}
|
@@ -659,10 +662,13 @@
|
|
659
662
|
if ( pageMoved !== false && p.initialized && $.isEmptyObject(c.cache)) {
|
660
663
|
return updateCache(table);
|
661
664
|
}
|
665
|
+
// abort page move if the table has filters and has not been initialized
|
666
|
+
if (p.ajax && ts.hasWidget(table, 'filter') && !c.widgetOptions.filter_initialized) { return; }
|
662
667
|
calcFilters(table, p);
|
663
668
|
pg = Math.min( p.totalPages, p.filteredPages );
|
664
669
|
if ( p.page < 0 ) { p.page = 0; }
|
665
670
|
if ( p.page > ( pg - 1 ) && pg !== 0 ) { p.page = pg - 1; }
|
671
|
+
|
666
672
|
// fixes issue where one currentFilter is [] and the other is ['','',''],
|
667
673
|
// making the next if comparison think the filters are different (joined by commas). Fixes #202.
|
668
674
|
l.currentFilters = (l.currentFilters || []).join('') === '' ? [] : l.currentFilters;
|
@@ -746,7 +752,7 @@
|
|
746
752
|
table.config.appender = null; // remove pager appender function
|
747
753
|
p.initialized = false;
|
748
754
|
delete table.config.rowsCopy;
|
749
|
-
$(table).unbind('
|
755
|
+
$(table).unbind('filterInit filterStart filterEnd sortEnd disable enable destroy updateComplete pageSize pageSet '.split(' ').join('.pager '));
|
750
756
|
if (ts.storage) {
|
751
757
|
ts.storage(table, p.storageKey, '');
|
752
758
|
}
|
@@ -812,12 +818,7 @@
|
|
812
818
|
}
|
813
819
|
p.oldAjaxSuccess = p.oldAjaxSuccess || p.ajaxObject.success;
|
814
820
|
c.appender = $this.appender;
|
815
|
-
|
816
|
-
// get any default filter settings (data-value attribute) fixes #388
|
817
|
-
p.currentFilters = c.$table.data('lastSearch') || ts.filter.setDefaults(table, c, c.widgetOptions) || [];
|
818
|
-
// set, but don't apply current filters
|
819
|
-
ts.setFilters(table, p.currentFilters, false);
|
820
|
-
}
|
821
|
+
p.initializing = true;
|
821
822
|
if (p.savePages && ts.storage) {
|
822
823
|
t = ts.storage(table, p.storageKey) || {}; // fixes #387
|
823
824
|
p.page = isNaN(t.page) ? p.page : t.page;
|
@@ -826,20 +827,21 @@
|
|
826
827
|
}
|
827
828
|
|
828
829
|
// skipped rows
|
829
|
-
p.regexRows = new RegExp('(' + (wo.filter_filteredRow || 'filtered') + '|' + c.selectorRemove.
|
830
|
+
p.regexRows = new RegExp('(' + (wo.filter_filteredRow || 'filtered') + '|' + c.selectorRemove.slice(1) + '|' + c.cssChildRow + ')');
|
830
831
|
|
831
832
|
$t
|
832
|
-
.unbind('filterStart filterEnd sortEnd disable enable destroy updateComplete pageSize pageSet '.split(' ').join('.pager '))
|
833
|
-
.bind('filterStart.pager', function(
|
834
|
-
p.currentFilters =
|
835
|
-
// don't change page
|
836
|
-
if (p.pageReset !== false && (c.lastCombinedFilter || '') !== (
|
833
|
+
.unbind('filterInit filterStart filterEnd sortEnd disable enable destroy updateComplete pageSize pageSet '.split(' ').join('.pager '))
|
834
|
+
.bind('filterInit.pager filterStart.pager', function() {
|
835
|
+
p.currentFilters = c.$table.data('lastSearch');
|
836
|
+
// don't change page if filters are the same (pager updating, etc)
|
837
|
+
if (p.pageReset !== false && (c.lastCombinedFilter || '') !== (p.currentFilters || []).join('')) {
|
837
838
|
p.page = p.pageReset; // fixes #456 & #565
|
838
839
|
}
|
839
840
|
})
|
840
841
|
// update pager after filter widget completes
|
841
842
|
.bind('filterEnd.pager sortEnd.pager', function() {
|
842
|
-
|
843
|
+
p.currentFilters = c.$table.data('lastSearch');
|
844
|
+
if (p.initialized || p.initializing) {
|
843
845
|
if (c.delayInit && c.rowsCopy && c.rowsCopy.length === 0) {
|
844
846
|
// make sure we have a copy of all table rows once the cache has been built
|
845
847
|
updateCache(table);
|
@@ -946,7 +948,6 @@
|
|
946
948
|
$t.trigger('pagerBeforeInitialized', p);
|
947
949
|
|
948
950
|
enablePager(table, p, false);
|
949
|
-
|
950
951
|
if ( typeof(p.ajaxUrl) === 'string' ) {
|
951
952
|
// ajax pager; interact with database
|
952
953
|
p.ajax = true;
|
@@ -962,10 +963,14 @@
|
|
962
963
|
}
|
963
964
|
|
964
965
|
// pager initialized
|
965
|
-
if (!p.ajax) {
|
966
|
+
if (!p.ajax && !p.initialized) {
|
967
|
+
p.initializing = false;
|
966
968
|
p.initialized = true;
|
967
|
-
|
969
|
+
moveToPage(table, p);
|
968
970
|
$(table).trigger('pagerInitialized', p);
|
971
|
+
if ( !( c.widgetOptions.filter_initialized && ts.hasWidget(table, 'filter') ) ) {
|
972
|
+
updatePageDisplay(table, c, false);
|
973
|
+
}
|
969
974
|
}
|
970
975
|
});
|
971
976
|
};
|
@@ -988,7 +993,7 @@
|
|
988
993
|
})
|
989
994
|
// add error row to thead instead of tbody, or clicking on the header will result in a parser error
|
990
995
|
.appendTo( c.$table.find('thead:first') )
|
991
|
-
.addClass( errorRow + ' ' + c.selectorRemove.
|
996
|
+
.addClass( errorRow + ' ' + c.selectorRemove.slice(1) )
|
992
997
|
.attr({
|
993
998
|
role : 'alert',
|
994
999
|
'aria-live' : 'assertive'
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/**!
|
2
|
-
* TableSorter 2.18.
|
2
|
+
* TableSorter 2.18.1 - Client-side table sorting with ease!
|
3
3
|
* @requires jQuery v1.2.6+
|
4
4
|
*
|
5
5
|
* Copyright (c) 2007 Christian Bach
|
@@ -24,7 +24,7 @@
|
|
24
24
|
|
25
25
|
var ts = this;
|
26
26
|
|
27
|
-
ts.version = "2.18.
|
27
|
+
ts.version = "2.18.1";
|
28
28
|
|
29
29
|
ts.parsers = [];
|
30
30
|
ts.widgets = [];
|
@@ -92,6 +92,7 @@
|
|
92
92
|
cssChildRow : 'tablesorter-childRow', // class name indiciating that a row is to be attached to the its parent
|
93
93
|
cssIcon : 'tablesorter-icon', // if this class exists, a <i> will be added to the header automatically
|
94
94
|
cssInfoBlock : 'tablesorter-infoOnly', // don't sort tbody with this class name (only one class name allowed here!)
|
95
|
+
cssAllowClicks : 'tablesorter-allowClicks', // class name added to table header which allows clicks to bubble up
|
95
96
|
|
96
97
|
// *** selectors
|
97
98
|
selectorHeaders : '> thead th, > thead td',
|
@@ -1159,13 +1160,11 @@
|
|
1159
1160
|
}
|
1160
1161
|
for (k in obj) {
|
1161
1162
|
if (typeof k === 'string') {
|
1162
|
-
|
1163
|
-
//
|
1164
|
-
|
1165
|
-
|
1166
|
-
|
1167
|
-
$h = c.$headers.filter('[data-column="' + indx + '"]:last').filter(k);
|
1168
|
-
}
|
1163
|
+
$h = c.$headers.filter('[data-column="' + indx + '"]:last')
|
1164
|
+
// header cell with class/id
|
1165
|
+
.filter(k)
|
1166
|
+
// find elements within the header cell with cell/id
|
1167
|
+
.add( c.$headers.filter('[data-column="' + indx + '"]:last').find(k) );
|
1169
1168
|
if ($h.length) {
|
1170
1169
|
return obj[k];
|
1171
1170
|
}
|
@@ -1286,7 +1285,9 @@
|
|
1286
1285
|
// set timer on mousedown
|
1287
1286
|
if (type === 'mousedown') {
|
1288
1287
|
downTime = new Date().getTime();
|
1289
|
-
return /(input|select|button|textarea)/i.test(e.target.tagName)
|
1288
|
+
return /(input|select|button|textarea)/i.test(e.target.tagName) ||
|
1289
|
+
// allow clicks to contents of selected cells
|
1290
|
+
$(e.target).closest('td,th').hasClass(c.cssAllowClicks) ? '' : !c.cancelSelection;
|
1290
1291
|
}
|
1291
1292
|
if (c.delayInit && isEmptyObject(c.cache)) { buildCache(table); }
|
1292
1293
|
// jQuery v1.2.6 doesn't have closest()
|
@@ -1,4 +1,4 @@
|
|
1
|
-
/*! tableSorter 2.16+ widgets - updated
|
1
|
+
/*! tableSorter 2.16+ widgets - updated 11/3/2014 (v2.18.1)
|
2
2
|
*
|
3
3
|
* Column Styles
|
4
4
|
* Column Filters
|
@@ -206,8 +206,9 @@ ts.addWidget({
|
|
206
206
|
.children('tfoot');
|
207
207
|
if ($tfoot.length) {
|
208
208
|
$tfoot
|
209
|
-
|
210
|
-
.children('
|
209
|
+
// if oldtheme.footerRow or oldtheme.footerCells are undefined, all class names are removed
|
210
|
+
.children('tr').removeClass(oldtheme.footerRow || '').addClass(themes.footerRow)
|
211
|
+
.children('th, td').removeClass(oldtheme.footerCells || '').addClass(themes.footerCells);
|
211
212
|
}
|
212
213
|
// update header classes
|
213
214
|
$headers
|
@@ -595,7 +596,6 @@ ts.filter = {
|
|
595
596
|
wo.filter_initTimer = null;
|
596
597
|
wo.filter_formatterCount = 0;
|
597
598
|
wo.filter_formatterInit = [];
|
598
|
-
wo.filter_initializing = true;
|
599
599
|
wo.filter_anyColumnSelector = '[data-column="all"],[data-column="any"]';
|
600
600
|
wo.filter_multipleColumnSelector = '[data-column*="-"],[data-column*=","]';
|
601
601
|
|
@@ -722,7 +722,7 @@ ts.filter = {
|
|
722
722
|
c.filteredRows = c.totalRows;
|
723
723
|
|
724
724
|
// add default values
|
725
|
-
c.$table.bind('tablesorter-initialized
|
725
|
+
c.$table.bind('tablesorter-initialized pagerBeforeInitialized', function() {
|
726
726
|
// redefine "wo" as it does not update properly inside this callback
|
727
727
|
var wo = this.config.widgetOptions;
|
728
728
|
filters = ts.filter.setDefaults(table, c, wo) || [];
|
@@ -762,11 +762,9 @@ ts.filter = {
|
|
762
762
|
var wo = c.widgetOptions,
|
763
763
|
count = 0,
|
764
764
|
completed = function(){
|
765
|
-
// set initializing false first so findRows will process
|
766
|
-
wo.filter_initializing = false;
|
767
|
-
ts.filter.findRows(c.table, c.$table.data('lastSearch'), null);
|
768
765
|
wo.filter_initialized = true;
|
769
766
|
c.$table.trigger('filterInit', c);
|
767
|
+
ts.filter.findRows(c.table, c.$table.data('lastSearch'), null);
|
770
768
|
};
|
771
769
|
$.each( wo.filter_formatterInit, function(i, val) {
|
772
770
|
if (val === 1) {
|
@@ -1095,7 +1093,7 @@ ts.filter = {
|
|
1095
1093
|
return columns;
|
1096
1094
|
},
|
1097
1095
|
findRows: function(table, filters, combinedFilters) {
|
1098
|
-
if (table.config.lastCombinedFilter === combinedFilters || table.config.widgetOptions.
|
1096
|
+
if (table.config.lastCombinedFilter === combinedFilters || !table.config.widgetOptions.filter_initialized) { return; }
|
1099
1097
|
var len, $rows, rowIndex, tbodyIndex, $tbody, $cells, $cell, columnIndex,
|
1100
1098
|
childRow, lastSearch, hasSelect, matches, result, showRow, time, val, indx,
|
1101
1099
|
notFiltered, searchFiltered, filterMatched, excludeMatch, fxn, ffxn,
|
@@ -1527,7 +1525,7 @@ ts.filter = {
|
|
1527
1525
|
};
|
1528
1526
|
|
1529
1527
|
ts.getFilters = function(table, getRaw, setFilters, skipFirst) {
|
1530
|
-
var i,
|
1528
|
+
var i, $filters, $column, cols,
|
1531
1529
|
filters = false,
|
1532
1530
|
c = table ? $(table)[0].config : '',
|
1533
1531
|
wo = c ? c.widgetOptions : '';
|
@@ -1,4 +1,4 @@
|
|
1
|
-
/* Column Selector/Responsive table widget (beta) for TableSorter -
|
1
|
+
/* Column Selector/Responsive table widget (beta) for TableSorter - 11/3/2014 (v2.18.1)
|
2
2
|
* Requires tablesorter v2.8+ and jQuery 1.7+
|
3
3
|
* by Justin Hallett & Rob Garrison
|
4
4
|
*/
|
@@ -120,7 +120,6 @@ tsColSel = ts.columnSelector = {
|
|
120
120
|
if (wo.columnSelector_mediaquery) {
|
121
121
|
// used by window resize function
|
122
122
|
colSel.lastIndex = -1;
|
123
|
-
wo.columnSelector_breakpoints.sort();
|
124
123
|
tsColSel.updateBreakpoints(c, wo);
|
125
124
|
c.$table
|
126
125
|
.off('updateAll' + namespace)
|
@@ -1,4 +1,4 @@
|
|
1
|
-
/*! tablesorter CSS Sticky Headers widget - updated
|
1
|
+
/*! tablesorter CSS Sticky Headers widget - updated 11/3/2014 (v2.18.1)
|
2
2
|
* Requires a modern browser, tablesorter v2.8+
|
3
3
|
*/
|
4
4
|
/*jshint jquery:true, unused:false */
|
@@ -19,6 +19,7 @@
|
|
19
19
|
},
|
20
20
|
init : function(table, thisWidget, c, wo) {
|
21
21
|
var isIE = 'ActiveXObject' in window, // target all versions of IE
|
22
|
+
isFF = navigator.userAgent.toLowerCase().indexOf('firefox') > -1,
|
22
23
|
$table = c.$table,
|
23
24
|
$attach = $(wo.cssStickyHeaders_attachTo),
|
24
25
|
namespace = c.namespace + 'cssstickyheader ',
|
@@ -26,45 +27,66 @@
|
|
26
27
|
$caption = $table.children('caption'),
|
27
28
|
$win = $attach.length ? $attach : $(window),
|
28
29
|
$parent = $table.parent().closest('table.' + ts.css.table),
|
29
|
-
$parentThead = $parent.length && ts.hasWidget($parent[0], 'cssStickyHeaders') ? $parent.children('thead') : []
|
30
|
+
$parentThead = $parent.length && ts.hasWidget($parent[0], 'cssStickyHeaders') ? $parent.children('thead') : [],
|
31
|
+
lastCaptionSetting = wo.cssStickyHeaders_addCaption;
|
30
32
|
|
31
33
|
$win
|
32
34
|
.unbind('scroll resize '.split(' ').join(namespace))
|
33
35
|
.bind('scroll resize '.split(' ').join(namespace), function() {
|
36
|
+
// make sure "wo" is current otherwise changes to widgetOptions
|
37
|
+
// are not dynamic (like the add caption button in the demo)
|
38
|
+
wo = c.widgetOptions;
|
34
39
|
var top = $attach.length ? $attach.offset().top : $win.scrollTop(),
|
35
40
|
// add caption height; include table padding top & border-spacing or text may be above the fold (jQuery UI themes)
|
36
41
|
// border-spacing needed in Firefox, but not webkit... not sure if I should account for that
|
37
|
-
captionHeight =
|
38
|
-
( parseInt( $table.css('padding-top'), 10 ) || 0 ) +
|
42
|
+
captionHeight = ( $caption.outerHeight(true) || 0 ) +
|
43
|
+
( parseInt( $table.css('padding-top'), 10 ) || 0 ) +
|
44
|
+
( parseInt( $table.css('border-spacing'), 10 ) || 0 ),
|
45
|
+
|
46
|
+
bottom = $table.height() - $thead.height() - ( $table.children('tfoot').height() || 0 ) - ( wo.cssStickyHeaders_addCaption ? captionHeight : 0 ),
|
47
|
+
|
48
|
+
parentTheadHeight = $parentThead.length ? $parentThead.height() : 0,
|
39
49
|
|
40
|
-
bottom = $table.height() - $thead.height() - ( $table.children('tfoot').height() || 0 ) - captionHeight,
|
41
50
|
// get bottom of nested sticky headers
|
42
|
-
|
43
|
-
|
51
|
+
nestedStickyBottom = $parentThead.length ? (
|
52
|
+
isIE ? $parent.data('cssStickyHeaderBottom') + parentTheadHeight :
|
53
|
+
$parentThead.offset().top + parentTheadHeight - $win.scrollTop()
|
54
|
+
) : 0,
|
44
55
|
|
45
56
|
// Detect nested tables - fixes #724
|
46
|
-
deltaY = top - $table.offset().top +
|
57
|
+
deltaY = top - $table.offset().top + nestedStickyBottom +
|
58
|
+
( parseInt( $table.css('border-top-width'), 10 ) || 0 ) +
|
59
|
+
( wo.cssStickyHeaders_offset || 0 ) +
|
47
60
|
// Again, I dislike browser sniffing... but I have no idea why I need to include a captionHeight
|
48
61
|
// for Firefox here and not for Chrome. Even IE behaves, sorta!
|
49
|
-
( wo.
|
62
|
+
( wo.cssStickyHeaders_addCaption ? ( isFF ? captionHeight : 0 ) : -captionHeight ),
|
50
63
|
|
51
64
|
finalY = deltaY > 0 && deltaY <= bottom ? deltaY : 0,
|
52
65
|
|
53
66
|
// All IE (even IE11) can only transform header cells - fixes #447 thanks to @gakreol!
|
54
67
|
$cells = isIE ? $thead.children().children() : $thead;
|
55
68
|
|
56
|
-
// more crazy IE stuff
|
69
|
+
// more crazy IE stuff...
|
57
70
|
if (isIE) {
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
finalY = top > 0 && top <= bottom ? top : 0;
|
62
|
-
}
|
71
|
+
// I didn't bother testing 3 nested tables deep in IE, because I hate it
|
72
|
+
c.$table.data( 'cssStickyHeaderBottom', ( $parentThead.length ? parentTheadHeight : 0 ) -
|
73
|
+
( wo.cssStickyHeaders_addCaption ? captionHeight : 0 ) );
|
63
74
|
}
|
64
75
|
|
65
76
|
if (wo.cssStickyHeaders_addCaption) {
|
66
77
|
$cells = $cells.add($caption);
|
67
78
|
}
|
79
|
+
if (lastCaptionSetting !== wo.cssStickyHeaders_addCaption) {
|
80
|
+
lastCaptionSetting = wo.cssStickyHeaders_addCaption;
|
81
|
+
// reset caption position if addCaption option is dynamically changed to false
|
82
|
+
if (!lastCaptionSetting) {
|
83
|
+
$caption.css({
|
84
|
+
'transform' : '',
|
85
|
+
'-ms-transform' : '',
|
86
|
+
'-webkit-transform' : ''
|
87
|
+
});
|
88
|
+
}
|
89
|
+
}
|
68
90
|
|
69
91
|
$cells.css({
|
70
92
|
'transform' : finalY === 0 ? '' : 'translate(0px,' + finalY + 'px)',
|
@@ -1,4 +1,4 @@
|
|
1
|
-
/* Pager widget for TableSorter
|
1
|
+
/* Pager widget for TableSorter 11/3/2014 (v2.18.1) - requires jQuery 1.7+ */
|
2
2
|
/*jshint browser:true, jquery:true, unused:false */
|
3
3
|
;(function($){
|
4
4
|
"use strict";
|
@@ -159,12 +159,7 @@ tsp = ts.pager = {
|
|
159
159
|
p.totalRows = c.$tbodies.eq(0).children('tr').not( wo.pager_countChildRows ? '' : '.' + c.cssChildRow ).length;
|
160
160
|
p.oldAjaxSuccess = p.oldAjaxSuccess || wo.pager_ajaxObject.success;
|
161
161
|
c.appender = tsp.appender;
|
162
|
-
|
163
|
-
// get any default filter settings (data-value attribute) fixes #388
|
164
|
-
p.currentFilters = c.$table.data('lastSearch') || [];
|
165
|
-
// set, but don't apply current filters
|
166
|
-
ts.setFilters(table, p.currentFilters, false);
|
167
|
-
}
|
162
|
+
p.initializing = true;
|
168
163
|
if (wo.pager_savePages && ts.storage) {
|
169
164
|
t = ts.storage(table, wo.pager_storageKey) || {}; // fixes #387
|
170
165
|
p.page = isNaN(t.page) ? p.page : t.page;
|
@@ -173,7 +168,7 @@ tsp = ts.pager = {
|
|
173
168
|
}
|
174
169
|
|
175
170
|
// skipped rows
|
176
|
-
p.regexRows = new RegExp('(' + (wo.filter_filteredRow || 'filtered') + '|' + c.selectorRemove.
|
171
|
+
p.regexRows = new RegExp('(' + (wo.filter_filteredRow || 'filtered') + '|' + c.selectorRemove.slice(1) + '|' + c.cssChildRow + ')');
|
177
172
|
|
178
173
|
// clear initialized flag
|
179
174
|
p.initialized = false;
|
@@ -209,9 +204,13 @@ tsp = ts.pager = {
|
|
209
204
|
|
210
205
|
// pager initialized
|
211
206
|
p.initialized = true;
|
207
|
+
p.initializing = false;
|
212
208
|
p.isInitializing = false;
|
213
209
|
c.$table.trigger('pagerInitialized', c);
|
214
|
-
|
210
|
+
// filter widget not initialized; it will update the output display & fire off the pagerComplete event
|
211
|
+
if ( !( c.widgetOptions.filter_initialized && ts.hasWidget(table, 'filter') ) ) {
|
212
|
+
tsp.updatePageDisplay(table, c, false);
|
213
|
+
}
|
215
214
|
},
|
216
215
|
|
217
216
|
bindEvents: function(table, c){
|
@@ -221,23 +220,23 @@ tsp = ts.pager = {
|
|
221
220
|
s = wo.pager_selectors;
|
222
221
|
|
223
222
|
c.$table
|
224
|
-
.off('filterStart filterEnd sortEnd disable enable destroy updateComplete pageSize pageSet '.split(' ').join('.pager '))
|
225
|
-
.on('filterStart.pager', function(
|
226
|
-
p.currentFilters =
|
227
|
-
// don't change page
|
228
|
-
if (wo.pager_pageReset !== false && (c.lastCombinedFilter || '') !== (
|
223
|
+
.off('filterInit filterStart filterEnd sortEnd disable enable destroy updateComplete pageSize pageSet '.split(' ').join('.pager '))
|
224
|
+
.on('filterInit.pager filterStart.pager', function() {
|
225
|
+
p.currentFilters = c.$table.data('lastSearch');
|
226
|
+
// don't change page if filters are the same (pager updating, etc)
|
227
|
+
if (wo.pager_pageReset !== false && (c.lastCombinedFilter || '') !== (p.currentFilters || []).join('')) {
|
229
228
|
p.page = wo.pager_pageReset; // fixes #456 & #565
|
230
229
|
}
|
231
230
|
})
|
232
231
|
// update pager after filter widget completes
|
233
232
|
.on('filterEnd.pager sortEnd.pager', function() {
|
234
|
-
|
233
|
+
p.currentFilters = c.$table.data('lastSearch');
|
234
|
+
if (p.initialized || p.initializing) {
|
235
235
|
if (c.delayInit && c.rowsCopy && c.rowsCopy.length === 0) {
|
236
236
|
// make sure we have a copy of all table rows once the cache has been built
|
237
237
|
tsp.updateCache(table);
|
238
238
|
}
|
239
239
|
// tsp.moveToPage(table, p, false); <-- called when applyWidgets is triggered
|
240
|
-
c.pager.last.page = -1;
|
241
240
|
c.$table.trigger('applyWidgets');
|
242
241
|
tsp.updatePageDisplay(table, c, false);
|
243
242
|
}
|
@@ -372,6 +371,7 @@ tsp = ts.pager = {
|
|
372
371
|
},
|
373
372
|
|
374
373
|
updatePageDisplay: function(table, c, completed) {
|
374
|
+
if ( c.pager.initializing ) { return; }
|
375
375
|
var s, t, $out,
|
376
376
|
wo = c.widgetOptions,
|
377
377
|
p = c.pager,
|
@@ -554,7 +554,7 @@ tsp = ts.pager = {
|
|
554
554
|
} else {
|
555
555
|
rows[i].style.display = ( j >= s && j < e ) ? '' : 'none';
|
556
556
|
// don't count child rows
|
557
|
-
j += rows[i].className.match(c.cssChildRow + '|' + c.selectorRemove.
|
557
|
+
j += rows[i].className.match(c.cssChildRow + '|' + c.selectorRemove.slice(1)) && !wo.pager_countChildRows ? 0 : 1;
|
558
558
|
if ( j === e && rows[i].style.display !== 'none' && rows[i].className.match(ts.css.cssHasChild) ) {
|
559
559
|
lastIndex = i;
|
560
560
|
}
|
@@ -682,6 +682,7 @@ tsp = ts.pager = {
|
|
682
682
|
p.last.totalRows = p.totalRows;
|
683
683
|
p.last.currentFilters = p.currentFilters;
|
684
684
|
p.last.sortList = (c.sortList || []).join(',');
|
685
|
+
p.initializing = false;
|
685
686
|
tsp.updatePageDisplay(table, c);
|
686
687
|
$t.trigger('updateCache', [function(){
|
687
688
|
if (p.initialized) {
|
@@ -714,6 +715,7 @@ tsp = ts.pager = {
|
|
714
715
|
$doc.off('ajaxError.pager');
|
715
716
|
});
|
716
717
|
counter = ++p.ajaxCounter;
|
718
|
+
p.last.ajaxUrl = url; // remember processed url
|
717
719
|
p.ajaxObject.url = url; // from the ajaxUrl option and modified by customAjaxUrl
|
718
720
|
p.ajaxObject.success = function(data, status, jqxhr) {
|
719
721
|
// Refuse to process old ajax commands that were overwritten by new ones - see #443
|
@@ -887,10 +889,15 @@ tsp = ts.pager = {
|
|
887
889
|
var pg, c = table.config,
|
888
890
|
wo = c.widgetOptions,
|
889
891
|
l = p.last;
|
892
|
+
|
893
|
+
// abort page move if the table has filters and has not been initialized
|
894
|
+
if (p.ajax && !wo.filter_initialized && ts.hasWidget(table, 'filter')) { return; }
|
895
|
+
|
890
896
|
tsp.calcFilters(table, c);
|
891
897
|
pg = Math.min( p.totalPages, p.filteredPages );
|
892
898
|
if ( p.page < 0 ) { p.page = 0; }
|
893
899
|
if ( p.page > ( pg - 1 ) && pg !== 0 ) { p.page = pg - 1; }
|
900
|
+
|
894
901
|
// fixes issue where one current filter is [] and the other is ['','',''],
|
895
902
|
// making the next if comparison think the filters as different. Fixes #202.
|
896
903
|
l.currentFilters = (l.currentFilters || []).join('') === '' ? [] : l.currentFilters;
|
@@ -978,7 +985,7 @@ tsp = ts.pager = {
|
|
978
985
|
c.appender = null; // remove pager appender function
|
979
986
|
p.initialized = false;
|
980
987
|
delete table.config.rowsCopy;
|
981
|
-
c.$table.off('
|
988
|
+
c.$table.off('filterInit filterStart filterEnd sortEnd disable enable destroy updateComplete pageSize pageSet '.split(' ').join('.pager '));
|
982
989
|
if (ts.storage) {
|
983
990
|
ts.storage(table, c.widgetOptions.pager_storageKey, '');
|
984
991
|
}
|
@@ -1045,7 +1052,7 @@ ts.showError = function(table, message){
|
|
1045
1052
|
})
|
1046
1053
|
// add error row to thead instead of tbody, or clicking on the header will result in a parser error
|
1047
1054
|
.appendTo( c.$table.find('thead:first') )
|
1048
|
-
.addClass( errorRow + ' ' + c.selectorRemove.
|
1055
|
+
.addClass( errorRow + ' ' + c.selectorRemove.slice(1) )
|
1049
1056
|
.attr({
|
1050
1057
|
role : 'alert',
|
1051
1058
|
'aria-live' : 'assertive'
|
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.13.
|
4
|
+
version: 1.13.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: 2014-
|
12
|
+
date: 2014-11-03 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: railties
|
@@ -150,7 +150,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
150
150
|
version: '0'
|
151
151
|
requirements: []
|
152
152
|
rubyforge_project:
|
153
|
-
rubygems_version: 2.
|
153
|
+
rubygems_version: 2.4.2
|
154
154
|
signing_key:
|
155
155
|
specification_version: 4
|
156
156
|
summary: Simple integration of jquery-tablesorter (Mottie's fork) into the Rails asset
|