From d72bb5fb71785192e4c80d773225530b81075040 Mon Sep 17 00:00:00 2001 From: Mottie Date: Thu, 30 May 2013 10:54:40 -0500 Subject: [PATCH] filter formatter now works in sticky headers; fixes #290 --- docs/example-widget-filter-formatter-1.html | 2 +- docs/example-widget-filter-formatter-2.html | 142 +------ ...ry.tablesorter.widgets-filter-formatter.js | 357 +++++++++++++++--- ...ablesorter.widgets-filter-formatter.min.js | 4 +- 4 files changed, 314 insertions(+), 191 deletions(-) diff --git a/docs/example-widget-filter-formatter-1.html b/docs/example-widget-filter-formatter-1.html index 18e5ba72..96ab527b 100644 --- a/docs/example-widget-filter-formatter-1.html +++ b/docs/example-widget-filter-formatter-1.html @@ -40,7 +40,7 @@ // hidden filter input/selects will resize the columns, so try to minimize the change widthFixed : true, // initialize zebra striping and filter widgets - widgets: ["zebra", "filter"], + widgets: ["zebra", "filter", "stickyHeaders"], widgetOptions : { // jQuery selector string of an element used to reset the filters filter_reset : 'button.reset', diff --git a/docs/example-widget-filter-formatter-2.html b/docs/example-widget-filter-formatter-2.html index 3443edc0..ab454305 100644 --- a/docs/example-widget-filter-formatter-2.html +++ b/docs/example-widget-filter-formatter-2.html @@ -36,7 +36,7 @@ // hidden filter input/selects will resize the columns, so try to minimize the change widthFixed : true, // initialize zebra striping and filter widgets - widgets: ["zebra", "filter"], + widgets: ["zebra", "filter", "stickyHeaders"], widgetOptions : { // jQuery selector string of an element used to reset the filters filter_reset : 'button.reset', @@ -240,134 +240,22 @@
- - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + +
RankColorNameAgeTotalDiscountDate
RankColorNameAgeTotalDiscountDate
1#ff0000Johnson25$5.9522%Jun 26, 2013 7:22 AM
11#00ff00Hibert12$2.995%Aug 21, 2013 12:21 PM
12#0000ffHenry51$42.2918%Oct 13, 2013 1:15 PM
51#00ff00Parker28$9.9920%Jul 6, 2013 8:14 AM
21#ffffffHood33$19.9925%Dec 10, 2012 5:14 AM
013#ff0000Kent18$15.8944%Jan 12, 2013 11:14 AM
005#00ff00Bruce45$153.1944%Jan 18, 2014 9:12 AM
10#000000Alex3$5.294%Jan 8, 2013 5:11 PM
16#ff0000Franco24$14.1914%Jan 14, 2014 11:23 AM
66#000000Evans22$13.1911%Jan 18, 2013 9:12 AM
100#ffffffBrenda18$55.2015%Feb 12, 2013 7:23 PM
55#000000Bronson65$123.0032%Jan 20, 2014 1:12 PM
9#000000Martha25$22.0917%Jun 11, 2013 10:55 AM
1#ff0000Johnson25$5.9522%Jun 26, 2013 7:22 AM
11#00ff00Hibert12$2.995%Aug 21, 2013 12:21 PM
12#0000ffHenry51$42.2918%Oct 13, 2013 1:15 PM
51#00ff00Parker28$9.9920%Jul 6, 2013 8:14 AM
21#ffffffHood33$19.9925%Dec 10, 2012 5:14 AM
013#ff0000Kent18$15.8944%Jan 12, 2013 11:14 AM
005#00ff00Bruce45$153.1944%Jan 18, 2014 9:12 AM
10#000000Alex3$5.294%Jan 8, 2013 5:11 PM
16#ff0000Franco24$14.1914%Jan 14, 2014 11:23 AM
66#000000Evans22$13.1911%Jan 18, 2013 9:12 AM
100#ffffffBrenda18$55.2015%Feb 12, 2013 7:23 PM
55#000000Bronson65$123.0032%Jan 20, 2014 1:12 PM
9#000000Martha25$22.0917%Jun 11, 2013 10:55 AM
diff --git a/js/jquery.tablesorter.widgets-filter-formatter.js b/js/jquery.tablesorter.widgets-filter-formatter.js index 25e1ceaf..315113e8 100644 --- a/js/jquery.tablesorter.widgets-filter-formatter.js +++ b/js/jquery.tablesorter.widgets-filter-formatter.js @@ -1,4 +1,4 @@ -/*! Filter widget formatter functions - updated 5/27/2013 +/*! Filter widget formatter functions - updated 5/30/2013 * requires: tableSorter 2.7.7+ and jQuery 1.4.3+ * * uiSpinner (jQuery UI spinner) @@ -35,21 +35,30 @@ $.tablesorter.filterFormatter = { }, spinnerDef ), // Add a hidden input to hold the range values $input = $('').appendTo($cell), + $shcell = [], + c = $cell.closest('table')[0].config, // this function updates the hidden input and adds the current values to the header cell text updateSpinner = function(ui) { - var chkd = true, + var chkd = true, state, // ui is not undefined on create v = ui && ui.value || $cell.find('.spinner').val() || o.value; if (o.addToggle) { chkd = $cell.find('.toggle').is(':checked'); } + state = o.disabled || !chkd ? 'disable' : 'enable'; $cell.find('.filter') // add equal to the beginning, so we filter exact numbers - //.val( chkd ? (o.exactMatch ? '=' : o.compare) + v : '' ) .val( chkd ? (o.compare ? o.compare : o.exactMatch ? '=' : '') + v : '' ) .trigger('search', o.delayed).end() - .find('.spinner').spinner( o.disabled || !chkd ? 'disable' : 'enable' ); + .find('.spinner').spinner(state).val(v); + // update sticky header cell + if ($shcell.length) { + $shcell.find('.spinner').spinner(state).val(v); + if (o.addToggle) { + $shcell.find('.toggle')[0].checked = chkd; + } + } }; // add callbacks; preserve added callbacks @@ -64,7 +73,7 @@ $.tablesorter.filterFormatter = { if (typeof o.oldspin === 'function') { o.oldspin(event, ui); } }; if (o.addToggle) { - $('
') + $('
') .appendTo($cell) .find('.toggle') .bind('change', function(){ @@ -73,7 +82,7 @@ $.tablesorter.filterFormatter = { } // make sure we use parsed data $cell.closest('thead').find('th[data-column=' + indx + ']').addClass('filter-parsed'); - // add a jQuery UI slider! + // add a jQuery UI spinner! $('') .val(o.value) .appendTo($cell) @@ -82,10 +91,35 @@ $.tablesorter.filterFormatter = { updateSpinner(); }); + // has sticky headers? + c.$table.bind('stickyHeadersInit', function(){ + $shcell = c.widgetOptions.$sticky.find('.tablesorter-filter-row').children().eq(indx).empty(); + if (o.addToggle) { + $('
') + .appendTo($shcell) + .find('.toggle') + .bind('change', function(){ + $cell.find('.toggle')[0].checked = this.checked; + updateSpinner(); + }); + } + // add a jQuery UI spinner! + $('') + .val(o.value) + .appendTo($shcell) + .spinner(o) + .bind('change keyup', function(e){ + $cell.find('.spinner').val( this.value ); + updateSpinner(); + }); + }); + // on reset - $cell.closest('table').bind('filterReset', function(){ + c.$table.bind('filterReset', function(){ // turn off the toggle checkbox - $cell.find('.toggle')[0].checked = false; + if (o.addToggle) { + $cell.find('.toggle')[0].checked = false; + } updateSpinner(); }); @@ -111,25 +145,40 @@ $.tablesorter.filterFormatter = { }, sliderDef ), // Add a hidden input to hold the range values $input = $('').appendTo($cell), + $shcell = [], + c = $cell.closest('table')[0].config, // this function updates the hidden input and adds the current values to the header cell text updateSlider = function(ui) { // ui is not undefined on create var v = typeof ui !== "undefined" ? ui.value : o.value, - val = o.compare ? v : v === o.min ? o.allText : v; + val = o.compare ? v : v === o.min ? o.allText : v, + result = o.compare + val; if (o.valueToHeader) { // add range indication to the header cell above! - $cell.closest('thead').find('th[data-column=' + indx + ']').find('.curvalue').html(' (' + o.compare + val + ')'); + $cell.closest('thead').find('th[data-column=' + indx + ']').find('.curvalue').html(' (' + result + ')'); } else { // add values to the handle data-value attribute so the css tooltip will work properly - $cell.find('.ui-slider-handle').addClass('value-popup').attr('data-value', o.compare + val); + $cell.find('.ui-slider-handle').addClass('value-popup').attr('data-value', result); } // update the hidden input; // ****** ADD AN EQUAL SIGN TO THE BEGINNING! <- this makes the slide exactly match the number ****** // when the value is at the minimum, clear the hidden input so all rows will be seen $cell.find('.filter') .val( ( o.compare ? o.compare + v : v === o.min ? '' : (o.exactMatch ? '=' : '') + v ) ) - .trigger('search', o.delayed); + .trigger('search', o.delayed).end() + .find('.slider').slider('value', v); + + // update sticky header cell + if ($shcell.length) { + $shcell.find('.slider').slider('value', v); + if (o.valueToHeader) { + $shcell.closest('thead').find('th[data-column=' + indx + ']').find('.curvalue').html(' (' + result + ')'); + } else { + $shcell.find('.ui-slider-handle').addClass('value-popup').attr('data-value', result); + } + } + }; $cell.closest('thead').find('th[data-column=' + indx + ']').addClass('filter-parsed'); @@ -155,11 +204,27 @@ $.tablesorter.filterFormatter = { .slider(o); // on reset - $cell.closest('table').bind('filterReset', function(){ + c.$table.bind('filterReset', function(){ $cell.find('.slider').slider('value', o.value); updateSlider(); }); + // has sticky headers? + c.$table.bind('stickyHeadersInit', function(){ + $shcell = c.widgetOptions.$sticky.find('.tablesorter-filter-row').children().eq(indx).empty(); + + // add a jQuery UI slider! + $('
') + .val(o.value) + .appendTo($shcell) + .slider(o) + .bind('change keyup', function(e){ + $cell.find('.slider').val( this.value ); + updateSlider(); + }); + + }); + return $input; }, @@ -177,16 +242,19 @@ $.tablesorter.filterFormatter = { }, rangeDef ), // Add a hidden input to hold the range values $input = $('').appendTo($cell), + $shcell = [], + c = $cell.closest('table')[0].config, // this function updates the hidden input and adds the current values to the header cell text updateUiRange = function(ui) { // ui.values are undefined for some reason on create var val = typeof ui !== "undefined" && ui.values || o.values, + result = val[0] + ' - ' + val[1], // make range an empty string if entire range is covered so the filter row will hide (if set) - range = val[0] === o.min && val[1] === o.max ? '' : val[0] + ' - ' + val[1]; + range = val[0] === o.min && val[1] === o.max ? '' : result; if (o.valueToHeader) { // add range indication to the header cell above (if not using the css method)! - $cell.closest('thead').find('th[data-column=' + indx + ']').find('.currange').html(' (' + val[0] + ' - ' + val[1] + ')'); + $cell.closest('thead').find('th[data-column=' + indx + ']').find('.currange').html(' (' + result + ')'); } else { // add values to the handle data-value attribute so the css tooltip will work properly $cell.find('.ui-slider-handle') @@ -195,11 +263,27 @@ $.tablesorter.filterFormatter = { .eq(1).attr('data-value', val[1]); // value popup shown via css } // update the hidden input - $cell.find('.filter').val(range).trigger('search', o.delayed); + $cell.find('.filter').val(range) + .trigger('search', o.delayed).end() + .find('.range').slider('values', val); + + // update sticky header cell + if ($shcell.length) { + $shcell.find('.range').slider('values', val); + if (o.valueToHeader) { + $shcell.closest('thead').find('th[data-column=' + indx + ']').find('.currange').html(' (' + result + ')'); + } else { + $shcell.find('.ui-slider-handle') + .addClass('value-popup') + .eq(0).attr('data-value', val[0]).end() // adding value to data attribute + .eq(1).attr('data-value', val[1]); // value popup shown via css + } + } + }; $cell.closest('thead').find('th[data-column=' + indx + ']').addClass('filter-parsed'); - // add span to header for value - only works if the line in the updateSlider() function is also un-commented out + // add span to header for value - only works if the line in the updateUiRange() function is also un-commented out if (o.valueToHeader) { $cell.closest('thead').find('th[data-column=' + indx + ']').find('.tablesorter-header-inner').append(''); } @@ -216,16 +300,32 @@ $.tablesorter.filterFormatter = { updateUiRange(ui); if (typeof o.oldslide === 'function') { o.oldslide(event, ui); } }; - $('
') + $('
') .appendTo($cell) .slider(o); // on reset - $cell.closest('table').bind('filterReset', function(){ - $cell.find('div[id*="range"]').slider('values', o.values); + c.$table.bind('filterReset', function(){ + $cell.find('.range').slider('values', o.values); updateUiRange(); }); + // has sticky headers? + c.$table.bind('stickyHeadersInit', function(){ + $shcell = c.widgetOptions.$sticky.find('.tablesorter-filter-row').children().eq(indx).empty(); + + // add a jQuery UI slider! + $('
') + .val(o.value) + .appendTo($shcell) + .slider(o) + .bind('change keyup', function(e){ + $cell.find('.range').val( this.value ); + updateUiRange(); + }); + + }); + // return the hidden input so the filter widget has a reference to it return $input; }, @@ -244,12 +344,16 @@ $.tablesorter.filterFormatter = { }, defDate), $hdr = $cell.closest('thead').find('th[data-column=' + indx + ']'), // Add a hidden input to hold the range values - $input = $('').appendTo($cell); + $input = $('').appendTo($cell), + t, $shcell = [], + c = $cell.closest('table')[0].config; // make sure we're using parsed dates in the search $hdr.addClass('filter-parsed'); // Add date range picker - $('' + o.cellText + '').appendTo($cell); + t = ''; + $(t).appendTo($cell); // add callbacks; preserve added callbacks o.oldonClose = o.onClose; @@ -260,14 +364,35 @@ $.tablesorter.filterFormatter = { $cell // update hidden input .find('.dateCompare').val(o.compare + date) - .trigger('search'); + .trigger('search').end() + .find('.date') + .datepicker('setDate', selectedDate); + + // update sticky header cell + if ($shcell.length) { + $shcell.find('.date').datepicker('setDate', selectedDate); + } + if (typeof o.oldonClose === 'function') { o.oldonClose(selectedDate, ui); } }; $cell.find('.date').datepicker(o); // on reset - $cell.closest('table').bind('filterReset', function(){ + c.$table.bind('filterReset', function(){ $cell.find('.date').val('').datepicker('option', 'currentText', '' ); + if ($shcell.length) { + $shcell.find('.date').val('').datepicker('option', 'currentText', '' ); + } + }); + + // has sticky headers? + c.$table.bind('stickyHeadersInit', function(){ + $shcell = c.widgetOptions.$sticky.find('.tablesorter-filter-row').children().eq(indx).empty(); + // add a jQuery datepicker! + $shcell + .append(t) + .find('.date') + .datepicker(o); }); // return the hidden input so the filter widget has a reference to it @@ -288,28 +413,39 @@ $.tablesorter.filterFormatter = { numberOfMonths : 1 }, defDate), // Add a hidden input to hold the range values - $input = $('').appendTo($cell); + $input = $('').appendTo($cell), + t, closeFrom, $shcell = [], + c = $cell.closest('table')[0].config; // make sure we're using parsed dates in the search $cell.closest('thead').find('th[data-column=' + indx + ']').addClass('filter-parsed'); // Add date range picker - $('').appendTo($cell); + t = ''; + $(t).appendTo($cell); // add callbacks; preserve added callbacks o.oldonClose = o.onClose; o.defaultDate = o.from || o.defaultDate || new Date(); - o.onClose = function( selectedDate, ui ) { + closeFrom = o.onClose = function( selectedDate, ui ) { var from = ( (new Date(selectedDate)).getTime() || ''), to = (new Date($cell.find('.dateTo').val()).getTime() || ''), range = from ? ( to ? from + ' - ' + to : '>=' + from ) : (to ? '<=' + to : ''); $cell - .find('.dateTo').datepicker('option', 'minDate', selectedDate).end() + .find('.dateTo').datepicker('option', 'minDate', selectedDate ).end() + .find('.dateFrom').val(selectedDate).end() // update hidden input .find('.dateRange').val(range) .trigger('search'); + // update sticky header cell + if ($shcell.length) { + $shcell + .find('.dateTo').datepicker('option', 'minDate', selectedDate ).end() + .find('.dateFrom').val(selectedDate); + } if (typeof o.oldonClose === 'function') { o.oldonClose(selectedDate, ui); } }; + $cell.find('.dateFrom').datepicker(o); o.defaultDate = o.to || '+7d'; // set to date +7 days from today (if not defined) o.onClose = function( selectedDate, ui ) { @@ -318,15 +454,35 @@ $.tablesorter.filterFormatter = { range = from ? ( to ? from + ' - ' + to : '>=' + from ) : (to ? '<=' + to : ''); $cell .find('.dateFrom').datepicker('option', 'maxDate', selectedDate ).end() + .find('.dateTo').val(selectedDate).end() .find('.dateRange').val(range) .trigger('search'); + // update sticky header cell + if ($shcell.length) { + $shcell + .find('.dateFrom').datepicker('option', 'maxDate', selectedDate ).end() + .find('.dateTo').val(selectedDate); + } if (typeof o.oldonClose === 'function') { o.oldonClose(selectedDate, ui); } }; $cell.find('.dateTo').datepicker(o); + // has sticky headers? + c.$table.bind('stickyHeadersInit', function(){ + $shcell = c.widgetOptions.$sticky.find('.tablesorter-filter-row').children().eq(indx).empty(); + // add a jQuery datepicker! + $shcell.append(t).find('.dateTo').datepicker(o); + o.defaultDate = o.from || o.defaultDate || new Date(); + o.onClose = closeFrom; + $shcell.find('.dateFrom').datepicker(o); + }); + // on reset $cell.closest('table').bind('filterReset', function(){ - $cell.find('.dateFrom, .dateTo').val('').datepicker('option', 'currentText', '' ); + $cell.find('.dateFrom, .dateTo').val(''); + if ($shcell.length) { + $shcell.find('.dateFrom, .dateTo').val(''); + } }); // return the hidden input so the filter widget has a reference to it @@ -353,40 +509,68 @@ $.tablesorter.filterFormatter = { $number = $('').appendTo($cell), // test if HTML5 number is supported - from Modernizr numberSupported = $number.attr('type') === 'number' && $number.val() !== 'test', - updateNumber = function(){ - var val = $cell.find('.number').val(), - chkd = o.addToggle ? $cell.find('.toggle').is(':checked') : true; + $shcell = [], + c = $cell.closest('table')[0].config, + + updateNumber = function(v){ + var chkd = o.addToggle ? $cell.find('.toggle').is(':checked') : true; $cell.find('input[type=hidden]') // add equal to the beginning, so we filter exact numbers - .val( !o.addToggle || chkd ? (o.compare ? o.compare : o.exactMatch ? '=' : '') + val : '' ) - .trigger('search', o.delayed); + .val( !o.addToggle || chkd ? (o.compare ? o.compare : o.exactMatch ? '=' : '') + v : '' ) + .trigger('search', o.delayed).end() + .find('.number').val(v); if ($cell.find('.number').length) { $cell.find('.number')[0].disabled = (o.disabled || !chkd); } + // update sticky header cell + if ($shcell.length) { + $shcell.find('.number').val(v)[0].disabled = (o.disabled || !chkd); + if (o.addToggle) { + $shcell.find('.toggle')[0].checked = chkd; + } + } }; $number.remove(); if (numberSupported) { - t = o.addToggle ? '
' : ''; - t += '
' : ''; + t += ''; // add HTML5 number (spinner) $cell - .html(t) + .html(t + '') .find('.toggle, .number').bind('change', function(){ - updateNumber(); + updateNumber( $cell.find('.number').val() ); }) .closest('thead').find('th[data-column=' + indx + ']') .addClass('filter-parsed') // get exact numbers from column // on reset .closest('table').bind('filterReset', function(){ // turn off the toggle checkbox - $cell.find('.toggle')[0].checked = false; - updateNumber(); + if (o.addToggle) { + $cell.find('.toggle')[0].checked = false; + if ($shcell.length) { + $shcell.find('.toggle')[0].checked = false; + } + } + updateNumber( $cell.find('.number').val() ); }); + + // has sticky headers? + c.$table.bind('stickyHeadersInit', function(){ + $shcell = c.widgetOptions.$sticky.find('.tablesorter-filter-row').children().eq(indx).empty(); + $shcell + .html(t) + .find('.toggle, .number').bind('change', function(){ + updateNumber( $shcell.find('.number').val() ); + }); + updateNumber( $cell.find('.number').val() ); + }); + + updateNumber( $cell.find('.number').val() ); + } - updateNumber(); return numberSupported ? $cell.find('input[type="hidden"]') : $(''); }, @@ -411,16 +595,25 @@ $.tablesorter.filterFormatter = { // test if HTML5 range is supported - from Modernizr (but I left out the method to detect in Safari 2-4) // see https://github.com/Modernizr/Modernizr/blob/master/feature-detects/inputtypes.js rangeSupported = $range.attr('type') === 'range' && $range.val() !== 'test', - updateRange = function(){ + $shcell = [], + c = $cell.closest('table')[0].config, + + updateRange = function(v){ /*jshint eqeqeq:false */ - var v = $cell.find('.range').val(); + var t = ' (' + (o.compare ? o.compare + v : v == o.min ? o.allText : v) + ')'; $cell.find('input[type=hidden]') // add equal to the beginning, so we filter exact numbers .val( ( o.compare ? o.compare + v : (v == o.min ? '' : (o.exactMatch ? '=' : '') + v ) ) ) //( val == o.min ? '' : val + (o.exactMatch ? '=' : '')) - .trigger('search', o.delayed); + .trigger('search', o.delayed).end() + .find('.range').val(v); // or add current color to the header cell, if desired - $cell.closest('thead').find('th[data-column=' + indx + ']').find('.curvalue').html(' (' + (v == o.min ? o.allText : o.compare + v) + ')'); + $cell.closest('thead').find('th[data-column=' + indx + ']').find('.curvalue').html(t); + // update sticky header cell + if ($shcell.length) { + $shcell.find('.range').val(v); + $shcell.closest('thead').find('th[data-column=' + indx + ']').find('.curvalue').html(t); + } }; $range.remove(); @@ -434,18 +627,30 @@ $.tablesorter.filterFormatter = { .find('.tablesorter-header-inner').append(''); $cell.find('.range').bind('change', function(){ - updateRange(); + updateRange( $cell.find('.range').val() ); + }); + + // has sticky headers? + c.$table.bind('stickyHeadersInit', function(){ + $shcell = c.widgetOptions.$sticky.find('.tablesorter-filter-row').children().eq(indx).empty(); + $shcell + .html('') + .find('.range').bind('change', function(){ + updateRange( $shcell.find('.range').val() ); + }); + updateRange( $cell.find('.range').val() ); }); // on reset $cell.closest('table').bind('filterReset', function(){ // just turn off the colorpicker - $cell.find('input.range').val(o.value); - updateRange(); + updateRange(o.value); }); + + updateRange( $cell.find('.range').val() ); + } - updateRange(); return rangeSupported ? $cell.find('input[type="hidden"]') : $(''); }, @@ -464,23 +669,41 @@ $.tablesorter.filterFormatter = { $color = $('').appendTo($cell), // test if HTML5 color is supported - from Modernizr colorSupported = $color.attr('type') === 'color' && $color.val() !== 'test', - updateColor = function(){ - var chkd = true, val = $cell.find('.colorpicker').val(); + $shcell = [], + c = $cell.closest('table')[0].config, + + updateColor = function(v){ + var chkd = true, + t = ' (' + v + ')'; if (o.addToggle) { chkd = $cell.find('.toggle').is(':checked'); } if ($cell.find('.colorpicker').length) { - $cell.find('.colorpicker')[0].disabled = (o.disabled || !chkd); + $cell.find('.colorpicker').val(v)[0].disabled = (o.disabled || !chkd); } $cell.find('input[type=hidden]') - .val( chkd ? val + (o.exactMatch ? '=' : '') : '' ) + .val( chkd ? v + (o.exactMatch ? '=' : '') : '' ) .trigger('search'); if (o.valueToHeader) { // add current color to the header cell - $cell.closest('thead').find('th[data-column=' + indx + ']').find('.curcolor').html(' (' + val + ')'); + $cell.closest('thead').find('th[data-column=' + indx + ']').find('.curcolor').html(t); } else { // current color to span in cell - $cell.find('.currentColor').html(' (' + val + ')'); + $cell.find('.currentColor').html(t); + } + // update sticky header cell + if ($shcell.length) { + $shcell.find('.colorpicker').val(v)[0].disabled = (o.disabled || !chkd); + if (o.addToggle) { + $shcell.find('.toggle')[0].checked = chkd; + } + if (o.valueToHeader) { + // add current color to the header cell + $shcell.closest('thead').find('th[data-column=' + indx + ']').find('.curcolor').html(t); + } else { + // current color to span in cell + $shcell.find('.currentColor').html(t); + } } }; $color.remove(); @@ -488,10 +711,10 @@ $.tablesorter.filterFormatter = { if (colorSupported) { // add HTML5 color picker t = '
'; - t += o.addToggle ? '
' : ''; + t += o.addToggle ? '
' : ''; t += ''; - t += o.valueToHeader ? '' : '(#000000)'; - $cell.html(t + '
'); + t += (o.valueToHeader ? '' : '(#000000)') + '
'; + $cell.html(t); // add span to header for the current color value - only works if the line in the updateColor() function is also un-commented out if (o.valueToHeader) { @@ -499,17 +722,29 @@ $.tablesorter.filterFormatter = { } $cell.find('.toggle, .colorpicker').bind('change', function(){ - updateColor(); + updateColor( $cell.find('.colorpicker').val() ); }); // on reset $cell.closest('table').bind('filterReset', function(){ // just turn off the colorpicker $cell.find('.toggle')[0].checked = false; - updateColor(); + updateColor( $cell.find('.colorpicker').val() ); }); + + // has sticky headers? + c.$table.bind('stickyHeadersInit', function(){ + $shcell = c.widgetOptions.$sticky.find('.tablesorter-filter-row').children().eq(indx); + $shcell + .html(t) + .find('.toggle, .colorpicker').bind('change', function(){ + updateColor( $shcell.find('.colorpicker').val() ); + }); + updateColor( $shcell.find('.colorpicker').val() ); + }); + + updateColor( $cell.find('.colorpicker').val() ); } - updateColor(); return colorSupported ? $cell.find('input[type="hidden"]') : $(''); } diff --git a/js/jquery.tablesorter.widgets-filter-formatter.min.js b/js/jquery.tablesorter.widgets-filter-formatter.min.js index 0c57977f..12b9eed3 100644 --- a/js/jquery.tablesorter.widgets-filter-formatter.min.js +++ b/js/jquery.tablesorter.widgets-filter-formatter.min.js @@ -1,6 +1,6 @@ -/*! Filter widget formatter functions - updated 5/27/2013 +/*! Filter widget formatter functions - updated 5/30/2013 * requires: tableSorter 2.7.7+ and jQuery 1.4.3+ * jQuery UI spinner, silder, range slider & datepicker (range) * HTML5 number (spinner), range slider & color selector */ -;(function(g){g.tablesorter=g.tablesorter||{};g.tablesorter.filterFormatter={uiSpinner:function(b,e,d){var a=g.extend({min:0,max:100,step:1,value:1,delayed:!0,addToggle:!0,disabled:!1,exactMatch:!0,compare:""},d);d=g('').appendTo(b);var c=function(h){var c=!0;h=h&&h.value||b.find(".spinner").val()||a.value;a.addToggle&&(c=b.find(".toggle").is(":checked"));b.find(".filter").val(c?(a.compare?a.compare:a.exactMatch?"=":"")+h:"").trigger("search",a.delayed).end().find(".spinner").spinner(a.disabled|| !c?"disable":"enable")};a.oldcreate=a.create;a.oldspin=a.spin;a.create=function(b,f){c();"function"===typeof a.oldcreate&&a.oldcreate(b,f)};a.spin=function(b,f){c(f);"function"===typeof a.oldspin&&a.oldspin(b,f)};a.addToggle&&g('
').appendTo(b).find(".toggle").bind("change",function(){c()});b.closest("thead").find("th[data-column="+e+"]").addClass("filter-parsed");g('').val(a.value).appendTo(b).spinner(a).bind("change keyup",function(){c()});b.closest("table").bind("filterReset",function(){b.find(".toggle")[0].checked=!1;c()});c();return d},uiSlider:function(b,e,d){var a=g.extend({value:0,min:0,max:100,step:1,range:"min",delayed:!0,valueToHeader:!1,exactMatch:!0,compare:"",allText:"all"},d);d=g('').appendTo(b);var c=function(c){c="undefined"!==typeof c?c.value:a.value;var f=a.compare?c:c===a.min?a.allText:c;a.valueToHeader? b.closest("thead").find("th[data-column="+e+"]").find(".curvalue").html(" ("+a.compare+f+")"):b.find(".ui-slider-handle").addClass("value-popup").attr("data-value",a.compare+f);b.find(".filter").val(a.compare?a.compare+c:c===a.min?"":(a.exactMatch?"=":"")+c).trigger("search",a.delayed)};b.closest("thead").find("th[data-column="+e+"]").addClass("filter-parsed");a.valueToHeader&&b.closest("thead").find("th[data-column="+e+"]").find(".tablesorter-header-inner").append('');a.oldcreate= a.create;a.oldslide=a.slide;a.create=function(b,f){c();"function"===typeof a.oldcreate&&a.oldcreate(b,f)};a.slide=function(b,f){c(f);"function"===typeof a.oldslide&&a.oldslide(b,f)};g('
').appendTo(b).slider(a);b.closest("table").bind("filterReset",function(){b.find(".slider").slider("value",a.value);c()});return d},uiRange:function(b,e,d){var a=g.extend({values:[0,100],min:0,max:100,range:!0,delayed:!0,valueToHeader:!1},d);d=g('').appendTo(b); var c=function(c){c="undefined"!==typeof c&&c.values||a.values;var f=c[0]===a.min&&c[1]===a.max?"":c[0]+" - "+c[1];a.valueToHeader?b.closest("thead").find("th[data-column="+e+"]").find(".currange").html(" ("+c[0]+" - "+c[1]+")"):b.find(".ui-slider-handle").addClass("value-popup").eq(0).attr("data-value",c[0]).end().eq(1).attr("data-value",c[1]);b.find(".filter").val(f).trigger("search",a.delayed)};b.closest("thead").find("th[data-column="+e+"]").addClass("filter-parsed");a.valueToHeader&&b.closest("thead").find("th[data-column="+ e+"]").find(".tablesorter-header-inner").append('');a.oldcreate=a.create;a.oldslide=a.slide;a.create=function(b,f){c();"function"===typeof a.oldcreate&&a.oldcreate(b,f)};a.slide=function(b,f){c(f);"function"===typeof a.oldslide&&a.oldslide(b,f)};g('
').appendTo(b).slider(a);b.closest("table").bind("filterReset",function(){b.find('div[id*="range"]').slider("values",a.values);c()});return d},uiDateCompare:function(b,e,d){var a=g.extend({defaultDate:"",cellText:"", changeMonth:!0,changeYear:!0,numberOfMonths:1,compare:""},d);e=b.closest("thead").find("th[data-column="+e+"]");d=g('').appendTo(b);e.addClass("filter-parsed");g(""+a.cellText+'').appendTo(b);a.oldonClose=a.onClose;a.defaultDate=a.defaultDate||new Date;a.onClose=function(c,d){var f=(new Date(c)).getTime()||"";b.find(".dateCompare").val(a.compare+ f).trigger("search");"function"===typeof a.oldonClose&&a.oldonClose(c,d)};b.find(".date").datepicker(a);b.closest("table").bind("filterReset",function(){b.find(".date").val("").datepicker("option","currentText","")});return d},uiDatepicker:function(b,e,d){var a=g.extend({from:"",to:"",textFrom:"from",textTo:"to",changeMonth:!0,changeYear:!0,numberOfMonths:1},d);d=g('').appendTo(b);b.closest("thead").find("th[data-column="+e+"]").addClass("filter-parsed");g("').appendTo(b);a.oldonClose=a.onClose;a.defaultDate=a.from||a.defaultDate||new Date;a.onClose=function(c,d){var f=(new Date(c)).getTime()||"",e=(new Date(b.find(".dateTo").val())).getTime()||"";b.find(".dateTo").datepicker("option","minDate",c).end().find(".dateRange").val(f?e?f+" - "+e:">="+f:e?"<="+e:"").trigger("search");"function"===typeof a.oldonClose&&a.oldonClose(c,d)};b.find(".dateFrom").datepicker(a); a.defaultDate=a.to||"+7d";a.onClose=function(c,e){var f=(new Date(b.find(".dateFrom").val())).getTime()||"",d=(new Date(c)).getTime()||"";b.find(".dateFrom").datepicker("option","maxDate",c).end().find(".dateRange").val(f?d?f+" - "+d:">="+f:d?"<="+d:"").trigger("search");"function"===typeof a.oldonClose&&a.oldonClose(c,e)};b.find(".dateTo").datepicker(a);b.closest("table").bind("filterReset",function(){b.find(".dateFrom, .dateTo").val("").datepicker("option","currentText","")});return d},html5Number:function(b, e,d){var a,c=g.extend({value:0,min:0,max:100,step:1,delayed:!0,disabled:!1,addToggle:!0,exactMatch:!0,compare:""},d);a=g('').appendTo(b);d="number"===a.attr("type")&&"test"!==a.val();var h=function(){var a=b.find(".number").val(),d=c.addToggle?b.find(".toggle").is(":checked"):!0;b.find("input[type=hidden]").val(!c.addToggle||d?(c.compare?c.compare:c.exactMatch?"=":"")+a:"").trigger("search",c.delayed);b.find(".number").length&&(b.find(".number")[0].disabled= c.disabled||!d)};a.remove();d&&(a=c.addToggle?'
':"",a+='',b.html(a).find(".toggle, .number").bind("change",function(){h()}).closest("thead").find("th[data-column="+e+"]").addClass("filter-parsed").closest("table").bind("filterReset",function(){b.find(".toggle")[0].checked= !1;h()}));h();return d?b.find('input[type="hidden"]'):g('')},html5Range:function(b,e,d){var a=g.extend({value:0,min:0,max:100,step:1,delayed:!0,valueToHeader:!0,exactMatch:!0,compare:"",allText:"all"},d);d=g('').appendTo(b);var c="range"===d.attr("type")&&"test"!==d.val(),h=function(){var c=b.find(".range").val();b.find("input[type=hidden]").val(a.compare?a.compare+c:c==a.min?"":(a.exactMatch?"=":"")+c).trigger("search", a.delayed);b.closest("thead").find("th[data-column="+e+"]").find(".curvalue").html(" ("+(c==a.min?a.allText:a.compare+c)+")")};d.remove();c&&(b.html('').closest("thead").find("th[data-column="+e+"]").addClass("filter-parsed").find(".tablesorter-header-inner").append(''),b.find(".range").bind("change",function(){h()}),b.closest("table").bind("filterReset",function(){b.find("input.range").val(a.value); h()}));h();return c?b.find('input[type="hidden"]'):g('')},html5Color:function(b,e,d){var a,c=g.extend({value:"#000000",disabled:!1,addToggle:!0,exactMatch:!0,valueToHeader:!1},d);a=g('').appendTo(b);d="color"===a.attr("type")&&"test"!==a.val();var h=function(){var a=!0,d=b.find(".colorpicker").val();c.addToggle&&(a=b.find(".toggle").is(":checked"));b.find(".colorpicker").length&&(b.find(".colorpicker")[0].disabled=c.disabled|| !a);b.find("input[type=hidden]").val(a?d+(c.exactMatch?"=":""):"").trigger("search");c.valueToHeader?b.closest("thead").find("th[data-column="+e+"]").find(".curcolor").html(" ("+d+")"):b.find(".currentColor").html(" ("+d+")")};a.remove();d&&(a='
'+(c.addToggle?'
':""),a=a+''+(c.valueToHeader? "":'(#000000)'),b.html(a+"
"),c.valueToHeader&&b.closest("thead").find("th[data-column="+e+"]").find(".tablesorter-header-inner").append(''),b.find(".toggle, .colorpicker").bind("change",function(){h()}),b.closest("table").bind("filterReset",function(){b.find(".toggle")[0].checked=!1;h()}));h();return d?b.find('input[type="hidden"]'):g('')}}})(jQuery); +;(function(h){h.tablesorter=h.tablesorter||{};h.tablesorter.filterFormatter={uiSpinner:function(b,f,g){var a=h.extend({min:0,max:100,step:1,value:1,delayed:!0,addToggle:!0,disabled:!1,exactMatch:!0,compare:""},g);g=h('').appendTo(b);var e=[],j=b.closest("table")[0].config,c=function(k){var d=!0,c=k&&k.value||b.find(".spinner").val()||a.value;a.addToggle&&(d=b.find(".toggle").is(":checked"));k=a.disabled||!d?"disable":"enable";b.find(".filter").val(d?(a.compare?a.compare: a.exactMatch?"=":"")+c:"").trigger("search",a.delayed).end().find(".spinner").spinner(k).val(c);e.length&&(e.find(".spinner").spinner(k).val(c),a.addToggle&&(e.find(".toggle")[0].checked=d))};a.oldcreate=a.create;a.oldspin=a.spin;a.create=function(b,d){c();"function"===typeof a.oldcreate&&a.oldcreate(b,d)};a.spin=function(b,d){c(d);"function"===typeof a.oldspin&&a.oldspin(b,d)};a.addToggle&&h('
').appendTo(b).find(".toggle").bind("change",function(){c()});b.closest("thead").find("th[data-column="+f+"]").addClass("filter-parsed");h('').val(a.value).appendTo(b).spinner(a).bind("change keyup",function(){c()});j.$table.bind("stickyHeadersInit",function(){e=j.widgetOptions.$sticky.find(".tablesorter-filter-row").children().eq(f).empty();a.addToggle&&h('
').appendTo(e).find(".toggle").bind("change",function(){b.find(".toggle")[0].checked=this.checked;c()});h('').val(a.value).appendTo(e).spinner(a).bind("change keyup",function(){b.find(".spinner").val(this.value);c()})});j.$table.bind("filterReset",function(){a.addToggle&&(b.find(".toggle")[0].checked=!1);c()});c();return g},uiSlider:function(b,f,g){var a=h.extend({value:0,min:0,max:100,step:1,range:"min",delayed:!0,valueToHeader:!1,exactMatch:!0, compare:"",allText:"all"},g);g=h('').appendTo(b);var e=[],j=b.closest("table")[0].config,c=function(c){c="undefined"!==typeof c?c.value:a.value;var d=a.compare+(a.compare?c:c===a.min?a.allText:c);a.valueToHeader?b.closest("thead").find("th[data-column="+f+"]").find(".curvalue").html(" ("+d+")"):b.find(".ui-slider-handle").addClass("value-popup").attr("data-value",d);b.find(".filter").val(a.compare?a.compare+c:c===a.min?"":(a.exactMatch?"=":"")+c).trigger("search", a.delayed).end().find(".slider").slider("value",c);e.length&&(e.find(".slider").slider("value",c),a.valueToHeader?e.closest("thead").find("th[data-column="+f+"]").find(".curvalue").html(" ("+d+")"):e.find(".ui-slider-handle").addClass("value-popup").attr("data-value",d))};b.closest("thead").find("th[data-column="+f+"]").addClass("filter-parsed");a.valueToHeader&&b.closest("thead").find("th[data-column="+f+"]").find(".tablesorter-header-inner").append('');a.oldcreate=a.create; a.oldslide=a.slide;a.create=function(b,d){c();"function"===typeof a.oldcreate&&a.oldcreate(b,d)};a.slide=function(b,d){c(d);"function"===typeof a.oldslide&&a.oldslide(b,d)};h('
').appendTo(b).slider(a);j.$table.bind("filterReset",function(){b.find(".slider").slider("value",a.value);c()});j.$table.bind("stickyHeadersInit",function(){e=j.widgetOptions.$sticky.find(".tablesorter-filter-row").children().eq(f).empty();h('
').val(a.value).appendTo(e).slider(a).bind("change keyup", function(){b.find(".slider").val(this.value);c()})});return g},uiRange:function(b,f,g){var a=h.extend({values:[0,100],min:0,max:100,range:!0,delayed:!0,valueToHeader:!1},g);g=h('').appendTo(b);var e=[],j=b.closest("table")[0].config,c=function(c){c="undefined"!==typeof c&&c.values||a.values;var d=c[0]+" - "+c[1],g=c[0]===a.min&&c[1]===a.max?"":d;a.valueToHeader?b.closest("thead").find("th[data-column="+f+"]").find(".currange").html(" ("+d+")"):b.find(".ui-slider-handle").addClass("value-popup").eq(0).attr("data-value", c[0]).end().eq(1).attr("data-value",c[1]);b.find(".filter").val(g).trigger("search",a.delayed).end().find(".range").slider("values",c);e.length&&(e.find(".range").slider("values",c),a.valueToHeader?e.closest("thead").find("th[data-column="+f+"]").find(".currange").html(" ("+d+")"):e.find(".ui-slider-handle").addClass("value-popup").eq(0).attr("data-value",c[0]).end().eq(1).attr("data-value",c[1]))};b.closest("thead").find("th[data-column="+f+"]").addClass("filter-parsed");a.valueToHeader&&b.closest("thead").find("th[data-column="+ f+"]").find(".tablesorter-header-inner").append('');a.oldcreate=a.create;a.oldslide=a.slide;a.create=function(b,d){c();"function"===typeof a.oldcreate&&a.oldcreate(b,d)};a.slide=function(b,d){c(d);"function"===typeof a.oldslide&&a.oldslide(b,d)};h('
').appendTo(b).slider(a);j.$table.bind("filterReset",function(){b.find(".range").slider("values",a.values);c()});j.$table.bind("stickyHeadersInit",function(){e=j.widgetOptions.$sticky.find(".tablesorter-filter-row").children().eq(f).empty(); h('
').val(a.value).appendTo(e).slider(a).bind("change keyup",function(){b.find(".range").val(this.value);c()})});return g},uiDateCompare:function(b,f,g){var a=h.extend({defaultDate:"",cellText:"",changeMonth:!0,changeYear:!0,numberOfMonths:1,compare:""},g);g=b.closest("thead").find("th[data-column="+f+"]");var e=h('').appendTo(b),j,c=[],k=b.closest("table")[0].config;g.addClass("filter-parsed");j="';h(j).appendTo(b);a.oldonClose=a.onClose;a.defaultDate=a.defaultDate||new Date;a.onClose=function(d,e){var f=(new Date(d)).getTime()||"";b.find(".dateCompare").val(a.compare+f).trigger("search").end().find(".date").datepicker("setDate",d);c.length&&c.find(".date").datepicker("setDate",d);"function"===typeof a.oldonClose&&a.oldonClose(d,e)};b.find(".date").datepicker(a);k.$table.bind("filterReset",function(){b.find(".date").val("").datepicker("option", "currentText","");c.length&&c.find(".date").val("").datepicker("option","currentText","")});k.$table.bind("stickyHeadersInit",function(){c=k.widgetOptions.$sticky.find(".tablesorter-filter-row").children().eq(f).empty();c.append(j).find(".date").datepicker(a)});return e},uiDatepicker:function(b,f,g){var a=h.extend({from:"",to:"",textFrom:"from",textTo:"to",changeMonth:!0,changeYear:!0,numberOfMonths:1},g);g=h('').appendTo(b);var e,j,c=[],k=b.closest("table")[0].config; b.closest("thead").find("th[data-column="+f+"]").addClass("filter-parsed");e="';h(e).appendTo(b);a.oldonClose=a.onClose;a.defaultDate=a.from||a.defaultDate||new Date;j=a.onClose=function(d,e){var f=(new Date(d)).getTime()||"",g=(new Date(b.find(".dateTo").val())).getTime()||"";b.find(".dateTo").datepicker("option","minDate",d).end().find(".dateFrom").val(d).end().find(".dateRange").val(f? g?f+" - "+g:">="+f:g?"<="+g:"").trigger("search");c.length&&c.find(".dateTo").datepicker("option","minDate",d).end().find(".dateFrom").val(d);"function"===typeof a.oldonClose&&a.oldonClose(d,e)};b.find(".dateFrom").datepicker(a);a.defaultDate=a.to||"+7d";a.onClose=function(d,e){var f=(new Date(b.find(".dateFrom").val())).getTime()||"",g=(new Date(d)).getTime()||"";b.find(".dateFrom").datepicker("option","maxDate",d).end().find(".dateTo").val(d).end().find(".dateRange").val(f?g?f+" - "+g:">="+f:g? "<="+g:"").trigger("search");c.length&&c.find(".dateFrom").datepicker("option","maxDate",d).end().find(".dateTo").val(d);"function"===typeof a.oldonClose&&a.oldonClose(d,e)};b.find(".dateTo").datepicker(a);k.$table.bind("stickyHeadersInit",function(){c=k.widgetOptions.$sticky.find(".tablesorter-filter-row").children().eq(f).empty();c.append(e).find(".dateTo").datepicker(a);a.defaultDate=a.from||a.defaultDate||new Date;a.onClose=j;c.find(".dateFrom").datepicker(a)});b.closest("table").bind("filterReset", function(){b.find(".dateFrom, .dateTo").val("");c.length&&c.find(".dateFrom, .dateTo").val("")});return g},html5Number:function(b,f,g){var a,e=h.extend({value:0,min:0,max:100,step:1,delayed:!0,disabled:!1,addToggle:!0,exactMatch:!0,compare:""},g);g=h('').appendTo(b);var j="number"===g.attr("type")&&"test"!==g.val(),c=[],k=b.closest("table")[0].config,d=function(a){var d=e.addToggle?b.find(".toggle").is(":checked"):!0;b.find("input[type=hidden]").val(!e.addToggle|| d?(e.compare?e.compare:e.exactMatch?"=":"")+a:"").trigger("search",e.delayed).end().find(".number").val(a);b.find(".number").length&&(b.find(".number")[0].disabled=e.disabled||!d);c.length&&(c.find(".number").val(a)[0].disabled=e.disabled||!d,e.addToggle&&(c.find(".toggle")[0].checked=d))};g.remove();j&&(a=e.addToggle?'
':"",a+='',b.html(a+'').find(".toggle, .number").bind("change",function(){d(b.find(".number").val())}).closest("thead").find("th[data-column="+f+"]").addClass("filter-parsed").closest("table").bind("filterReset",function(){e.addToggle&&(b.find(".toggle")[0].checked=!1,c.length&&(c.find(".toggle")[0].checked=!1));d(b.find(".number").val())}),k.$table.bind("stickyHeadersInit",function(){c=k.widgetOptions.$sticky.find(".tablesorter-filter-row").children().eq(f).empty(); c.html(a).find(".toggle, .number").bind("change",function(){d(c.find(".number").val())});d(b.find(".number").val())}),d(b.find(".number").val()));return j?b.find('input[type="hidden"]'):h('')},html5Range:function(b,f,g){var a=h.extend({value:0,min:0,max:100,step:1,delayed:!0,valueToHeader:!0,exactMatch:!0,compare:"",allText:"all"},g);g=h('').appendTo(b);var e="range"===g.attr("type")&&"test"!==g.val(),j=[],c=b.closest("table")[0].config, k=function(c){var e=" ("+(a.compare?a.compare+c:c==a.min?a.allText:c)+")";b.find("input[type=hidden]").val(a.compare?a.compare+c:c==a.min?"":(a.exactMatch?"=":"")+c).trigger("search",a.delayed).end().find(".range").val(c);b.closest("thead").find("th[data-column="+f+"]").find(".curvalue").html(e);j.length&&(j.find(".range").val(c),j.closest("thead").find("th[data-column="+f+"]").find(".curvalue").html(e))};g.remove();e&&(b.html('').closest("thead").find("th[data-column="+f+"]").addClass("filter-parsed").find(".tablesorter-header-inner").append(''),b.find(".range").bind("change",function(){k(b.find(".range").val())}),c.$table.bind("stickyHeadersInit",function(){j=c.widgetOptions.$sticky.find(".tablesorter-filter-row").children().eq(f).empty();j.html('').find(".range").bind("change", function(){k(j.find(".range").val())});k(b.find(".range").val())}),b.closest("table").bind("filterReset",function(){k(a.value)}),k(b.find(".range").val()));return e?b.find('input[type="hidden"]'):h('')},html5Color:function(b,f,g){var a,e=h.extend({value:"#000000",disabled:!1,addToggle:!0,exactMatch:!0,valueToHeader:!1},g);g=h('').appendTo(b);var j="color"===g.attr("type")&&"test"!==g.val(),c=[],k=b.closest("table")[0].config, d=function(a){var d=!0,g=" ("+a+")";e.addToggle&&(d=b.find(".toggle").is(":checked"));b.find(".colorpicker").length&&(b.find(".colorpicker").val(a)[0].disabled=e.disabled||!d);b.find("input[type=hidden]").val(d?a+(e.exactMatch?"=":""):"").trigger("search");e.valueToHeader?b.closest("thead").find("th[data-column="+f+"]").find(".curcolor").html(g):b.find(".currentColor").html(g);c.length&&(c.find(".colorpicker").val(a)[0].disabled=e.disabled||!d,e.addToggle&&(c.find(".toggle")[0].checked=d),e.valueToHeader? c.closest("thead").find("th[data-column="+f+"]").find(".curcolor").html(g):c.find(".currentColor").html(g))};g.remove();j&&(a='
',a+=e.addToggle?'
':"",a+='',a+=(e.valueToHeader?"":'(#000000)')+"
",b.html(a),e.valueToHeader&&b.closest("thead").find("th[data-column="+ f+"]").find(".tablesorter-header-inner").append(''),b.find(".toggle, .colorpicker").bind("change",function(){d(b.find(".colorpicker").val())}),b.closest("table").bind("filterReset",function(){b.find(".toggle")[0].checked=!1;d(b.find(".colorpicker").val())}),k.$table.bind("stickyHeadersInit",function(){c=k.widgetOptions.$sticky.find(".tablesorter-filter-row").children().eq(f);c.html(a).find(".toggle, .colorpicker").bind("change",function(){d(c.find(".colorpicker").val())}); d(c.find(".colorpicker").val())}),d(b.find(".colorpicker").val()));return j?b.find('input[type="hidden"]'):h('')}}})(jQuery);