tablesorter/js/jquery.tablesorter.widgets-filter-formatter.min.js

7 lines
8.2 KiB
JavaScript

/*! Filter widget formatter functions - updated 2/28/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(f){f.tablesorter=f.tablesorter||{};f.tablesorter.filterFormatter={uiSpinner:function(b,e,d){var a=f.extend({min:0,max:100,step:1,value:1,delayed:!0,addToggle:!0,disabled:!1,exactMatch:!0,numberFormat:"n"},d);d=f('<input class="filter" type="hidden">').appendTo(b);var c=function(g){var c=!0;g=g&&g.value||f("#spinner"+e).val()||a.value;a.addToggle&&(c=b.find(".toggle").is(":checked"));b.find(".filter").val(c?g+(a.exactMatch?"=":""):"").trigger("search",a.delayed).end().find("#spinner"+e).spinner(a.disabled|| !c?"disable":"enable")};a.oldcreate=a.create;a.oldspin=a.spin;a.create=function(b,h){c();"function"===typeof a.oldcreate&&a.oldcreate(b,h)};a.spin=function(b,h){c(h);"function"===typeof a.oldspin&&a.oldspin(b,h)};a.addToggle&&f('<div class="button"><input id="button'+e+'" type="checkbox" class="toggle" /><label for="button'+e+'"></label></div>').appendTo(b).find(".toggle").bind("change",function(){c()});b.closest("thead").find("th[data-column="+e+"]").addClass("filter-parsed");f('<input id="spinner'+ e+'" />').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=f.extend({value:0,min:0,max:100,step:1,range:"min",delayed:!0,valueToHeader:!1,exactMatch:!0,allText:"all"},d);d=f('<input class="filter" type="hidden">').appendTo(b);var c=function(g){g="undefined"!==typeof g?g.value:a.value;a.valueToHeader?b.closest("thead").find("th[data-column="+e+ "]").find(".curvalue").html(" ("+(g===a.min?a.allText:g)+")"):b.find(".ui-slider-handle").addClass("value-popup").attr("data-value",g===a.min?a.allText:g);b.find(".filter").val(g===a.min?"":g+(a.exactMatch?"=":"")).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('<span class="curvalue" />');a.oldcreate=a.create;a.oldslide=a.slide;a.create= function(b,h){c();"function"===typeof a.oldcreate&&a.oldcreate(b,h)};a.slide=function(b,h){c(h);"function"===typeof a.oldslide&&a.oldslide(b,h)};f('<div id="slider'+e+'"/>').appendTo(b).slider(a);b.closest("table").bind("filterReset",function(){b.find('div[id*="slider"]').slider("value",a.value);c()});return d},uiRange:function(b,e,d){var a=f.extend({values:[0,100],min:0,max:100,range:!0,delayed:!0,valueToHeader:!1},d);d=f('<input class="filter" type="hidden">').appendTo(b);var c=function(c){c="undefined"!== typeof c&&c.values||a.values;var h=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(" ("+h+")"):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(h).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('<span class="currange"/>'); a.oldcreate=a.create;a.oldslide=a.slide;a.create=function(b,h){c();"function"===typeof a.oldcreate&&a.oldcreate(b,h)};a.slide=function(b,h){c(h);"function"===typeof a.oldslide&&a.oldslide(b,h)};f('<div id="range'+e+'"/>').appendTo(b).slider(a);b.closest("table").bind("filterReset",function(){b.find('div[id*="range"]').slider("values",a.values);c()});return d},uiDatepicker:function(b,e,d){var a=f.extend({from:"",to:"",changeMonth:!0,changeYear:!0,numberOfMonths:1},d);d=f('<input class="dateRange" type="hidden">').appendTo(b); b.closest("thead").find("th[data-column="+e+"]").addClass("filter-parsed");f('<label>From</label><input type="text" class="dateFrom" /><label>to</label><input type="text" class="dateTo" />').appendTo(b);a.oldonClose=a.onClose;a.defaultDate=a.defaultDate||a.from;a.onClose=function(c,d){var h=(new Date(c)).getTime()||"",e=(new Date(b.find(".dateTo").val())).getTime()||"";b.find(".dateTo").datepicker("option","minDate",c).end().find(".dateRange").val(h&&e?h+" - "+e:"").trigger("search");"function"=== typeof a.oldonClose&&a.oldonClose(c,d)};b.find(".dateFrom").datepicker(a);a.defaultDate=a.defaultDate||a.to;a.onClose=function(c,e){var h=(new Date(b.find(".dateFrom").val())).getTime()||"",d=(new Date(c)).getTime()||"";b.find(".dateFrom").datepicker("option","maxDate",c).end().find(".dateRange").val(h&&d?h+" - "+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=f.extend({value:0,min:0,max:100,step:1,delayed:!0,disabled:!1,addToggle:!0,exactMatch:!0},d);a=f('<input type="number" style="visibility:hidden;" value="test">').appendTo(b);d="number"===a.attr("type")&&"test"!==a.val();var g=function(){var a=b.find(".number").val(),d=c.addToggle?b.find(".toggle").is(":checked"):!0;b.find("input[type=hidden]").val(d?a+(c.exactMatch?"=":""):"").trigger("search",c.delayed);b.find(".number").length&&(b.find(".number")[0].disabled= c.disabled||!d)};a.remove();d&&(a=c.addToggle?'<div class="button"><input id="button'+e+'" type="checkbox" class="toggle" /><label for="button'+e+'"></label></div>':"",a+='<input type="hidden"><input class="number" type="number" min="'+c.min+'" max="'+c.max+'" value="'+c.value+'" step="'+c.step+'" />',b.html(a).find(".toggle, .number").bind("change",function(){g()}).closest("thead").find("th[data-column="+e+"]").addClass("filter-parsed").closest("table").bind("filterReset",function(){b.find(".toggle")[0].checked= !1;g()}));g();return d?b.find('input[type="hidden"]'):f('<input type="search">')},html5Range:function(b,e,d){var a=f.extend({value:0,min:0,max:100,step:1,delayed:!0,valueToHeader:!0,exactMatch:!0,allText:"all"},d);d=f('<input type="range" style="visibility:hidden;" value="test">').appendTo(b);var c="range"===d.attr("type")&&"test"!==d.val(),g=function(){var c=b.find(".range").val();b.find("input[type=hidden]").val(c==a.min?"":c+(a.exactMatch?"=":"")).trigger("search",a.delayed);b.closest("thead").find("th[data-column="+ e+"]").find(".curvalue").html(" ("+(c==a.min?a.allText:c)+")")};d.remove();c&&(b.html('<input type="hidden"><input class="range" type="range" min="'+a.min+'" max="'+a.max+'" value="'+a.value+'" />').closest("thead").find("th[data-column="+e+"]").addClass("filter-parsed").find(".tablesorter-header-inner").append('<span class="curvalue" />'),b.find(".range").bind("change",function(){g()}),b.closest("table").bind("filterReset",function(){b.find("input.range").val(a.value);g()}));g();return c?b.find('input[type="hidden"]'): f('<input type="search">')},html5Color:function(b,e,d){var a,c=f.extend({value:"#000000",disabled:!1,addToggle:!0,exactMatch:!0,valueToHeader:!1},d);a=f('<input type="color" style="visibility:hidden;" value="test">').appendTo(b);d="color"===a.attr("type")&&"test"!==a.val();var g=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?'<div class="button"><input id="button'+e+'" type="checkbox" class="toggle" /><label for="button'+e+'"></label></div>':"",a=a+'<input type="hidden"><input class="colorpicker" type="color" />'+(c.valueToHeader?"":'<span class="currentColor">(#000000)</span>'),b.html(a),c.valueToHeader&& b.closest("thead").find("th[data-column="+e+"]").find(".tablesorter-header-inner").append('<span class="curcolor" />'),b.find(".toggle, .colorpicker").bind("change",function(){g()}),b.closest("table").bind("filterReset",function(){b.find(".toggle")[0].checked=!1;g()}));g();return d?b.find('input[type="hidden"]'):f('<input type="search">')}}})(jQuery);