tablesorter/js/jquery.tablesorter.widgets-filter-formatter.min.js
2013-10-30 17:59:13 -05:00

7 lines
16 KiB
JavaScript

/*! Filter widget formatter functions - updated 10/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(a){"use strict";a.tablesorter=a.tablesorter||{},a.tablesorter.filterFormatter={uiSpinner:function(b,c,d){var e=a.extend({min:0,max:100,step:1,value:1,delayed:!0,addToggle:!0,disabled:!1,exactMatch:!0,compare:""},d),f=a('<input class="filter" type="hidden">').appendTo(b).bind("change.tsfilter",function(){i({value:this.value,delayed:!1})}),g=[],h=b.closest("table")[0].config,i=function(c){var f,d=!0,h=c&&c.value&&a.tablesorter.formatFloat((c.value+"").replace(/[><=]/g,""))||b.find(".spinner").val()||e.value;e.addToggle&&(d=b.find(".toggle").is(":checked")),f=e.disabled||!d?"disable":"enable",b.find(".filter").val(d?(e.compare?e.compare:e.exactMatch?"=":"")+h:"").trigger("search",c&&"boolean"==typeof c.delayed?c.delayed:e.delayed).end().find(".spinner").spinner(f).val(h),g.length&&(g.find(".spinner").spinner(f).val(h),e.addToggle&&(g.find(".toggle")[0].checked=d))};return e.oldcreate=e.create,e.oldspin=e.spin,e.create=function(a,b){i(),"function"==typeof e.oldcreate&&e.oldcreate(a,b)},e.spin=function(a,b){i(b),"function"==typeof e.oldspin&&e.oldspin(a,b)},e.addToggle&&a('<div class="button"><input id="uispinnerbutton'+c+'" type="checkbox" class="toggle" /><label for="uispinnerbutton'+c+'"></label></div>').appendTo(b).find(".toggle").bind("change",function(){i()}),b.closest("thead").find("th[data-column="+c+"]").addClass("filter-parsed"),a('<input class="spinner spinner'+c+'" />').val(e.value).appendTo(b).spinner(e).bind("change keyup",function(){i()}),h.$table.bind("stickyHeadersInit",function(){g=h.widgetOptions.$sticky.find(".tablesorter-filter-row").children().eq(c).empty(),e.addToggle&&a('<div class="button"><input id="stickyuispinnerbutton'+c+'" type="checkbox" class="toggle" /><label for="stickyuispinnerbutton'+c+'"></label></div>').appendTo(g).find(".toggle").bind("change",function(){b.find(".toggle")[0].checked=this.checked,i()}),a('<input class="spinner spinner'+c+'" />').val(e.value).appendTo(g).spinner(e).bind("change keyup",function(){b.find(".spinner").val(this.value),i()})}),h.$table.bind("filterReset",function(){e.addToggle&&(b.find(".toggle")[0].checked=!1),i()}),i(),f},uiSlider:function(b,c,d){var e=a.extend({value:0,min:0,max:100,step:1,range:"min",delayed:!0,valueToHeader:!1,exactMatch:!0,compare:"",allText:"all"},d),f=a('<input class="filter" type="hidden">').appendTo(b).bind("change.tsfilter",function(){i({value:this.value})}),g=[],h=b.closest("table")[0].config,i=function(d){var f="undefined"!=typeof d?a.tablesorter.formatFloat((d.value+"").replace(/[><=]/g,""))||e.min:e.value,h=e.compare?f:f===e.min?e.allText:f,i=e.compare+h;e.valueToHeader?b.closest("thead").find("th[data-column="+c+"]").find(".curvalue").html(" ("+i+")"):b.find(".ui-slider-handle").addClass("value-popup").attr("data-value",i),b.find(".filter").val(e.compare?e.compare+f:f===e.min?"":(e.exactMatch?"=":"")+f).trigger("search",d&&"boolean"==typeof d.delayed?d.delayed:e.delayed).end().find(".slider").slider("value",f),g.length&&(g.find(".slider").slider("value",f),e.valueToHeader?g.closest("thead").find("th[data-column="+c+"]").find(".curvalue").html(" ("+i+")"):g.find(".ui-slider-handle").addClass("value-popup").attr("data-value",i))};return b.closest("thead").find("th[data-column="+c+"]").addClass("filter-parsed"),e.valueToHeader&&b.closest("thead").find("th[data-column="+c+"]").find(".tablesorter-header-inner").append('<span class="curvalue" />'),e.oldcreate=e.create,e.oldslide=e.slide,e.create=function(a,b){i(),"function"==typeof e.oldcreate&&e.oldcreate(a,b)},e.slide=function(a,b){i(b),"function"==typeof e.oldslide&&e.oldslide(a,b)},a('<div class="slider slider'+c+'"/>').appendTo(b).slider(e),h.$table.bind("filterReset",function(){b.find(".slider").slider("value",e.value),i()}),h.$table.bind("stickyHeadersInit",function(){g=h.widgetOptions.$sticky.find(".tablesorter-filter-row").children().eq(c).empty(),a('<div class="slider slider'+c+'"/>').val(e.value).appendTo(g).slider(e).bind("change keyup",function(){b.find(".slider").val(this.value),i()})}),f},uiRange:function(b,c,d){var e=a.extend({values:[0,100],min:0,max:100,range:!0,delayed:!0,valueToHeader:!1},d),f=a('<input class="filter" type="hidden">').appendTo(b).bind("change.tsfilter",function(){var a=this.value.split(" - ");""===this.value&&(a=[e.min,e.max]),a&&a[1]&&i({values:a,delay:!1})}),g=[],h=b.closest("table")[0].config,i=function(a){var d=a&&a.values||e.values,f=d[0]+" - "+d[1],h=d[0]===e.min&&d[1]===e.max?"":f;e.valueToHeader?b.closest("thead").find("th[data-column="+c+"]").find(".currange").html(" ("+f+")"):b.find(".ui-slider-handle").addClass("value-popup").eq(0).attr("data-value",d[0]).end().eq(1).attr("data-value",d[1]),b.find(".filter").val(h).trigger("search",a&&"boolean"==typeof a.delayed?a.delayed:e.delayed).end().find(".range").slider("values",d),g.length&&(g.find(".range").slider("values",d),e.valueToHeader?g.closest("thead").find("th[data-column="+c+"]").find(".currange").html(" ("+f+")"):g.find(".ui-slider-handle").addClass("value-popup").eq(0).attr("data-value",d[0]).end().eq(1).attr("data-value",d[1]))};return b.closest("thead").find("th[data-column="+c+"]").addClass("filter-parsed"),e.valueToHeader&&b.closest("thead").find("th[data-column="+c+"]").find(".tablesorter-header-inner").append('<span class="currange"/>'),e.oldcreate=e.create,e.oldslide=e.slide,e.create=function(a,b){i(),"function"==typeof e.oldcreate&&e.oldcreate(a,b)},e.slide=function(a,b){i(b),"function"==typeof e.oldslide&&e.oldslide(a,b)},a('<div class="range range'+c+'"/>').appendTo(b).slider(e),h.$table.bind("filterReset",function(){b.find(".range").slider("values",e.values),i()}),h.$table.bind("stickyHeadersInit",function(){g=h.widgetOptions.$sticky.find(".tablesorter-filter-row").children().eq(c).empty(),a('<div class="range range'+c+'"/>').val(e.value).appendTo(g).slider(e).bind("change keyup",function(){b.find(".range").val(this.value),i()})}),f},uiDateCompare:function(b,c,d){var h,i,e=a.extend({defaultDate:"",cellText:"",changeMonth:!0,changeYear:!0,numberOfMonths:1,compare:"",compareOptions:!1},d),f=b.closest("thead").find("th[data-column="+c+"]"),g=a('<input class="dateCompare" type="hidden">').appendTo(b).bind("change.tsfilter",function(){var a=this.value;a&&e.onClose(a)}),j=[],k=b.closest("table")[0].config,l=function(a){var c=new Date(b.find(".date").datepicker("getDate")).getTime();b.find(".compare").val(a),b.find(".dateCompare").val(a+c).trigger("search",e.delayed).end(),j.length&&j.find(".compare").val(a)};if(f.addClass("filter-parsed"),e.compareOptions){i='<select class="compare">';for(var m in e.compareOptions)i+='<option value="'+m+'"',m===e.compare&&(i+=' selected="selected"'),i+=">"+m+"</option>";i+="</select>",b.append(i).find(".compare").bind("change",function(){l(a(this).val())})}else e.cellText&&(i="<label>"+e.cellText+"</label>",b.append(i));return h='<input type="text" class="date date'+c+'" placeholder="'+(f.data("placeholder")||f.attr("data-placeholder")||"")+'" />',a(h).appendTo(b),e.oldonClose=e.onClose,e.onClose=function(a,c){var d=new Date(b.find(".date").datepicker("getDate")).getTime()||"",f=b.find(".compare").val()||e.compare;b.find(".dateCompare").val(f+d).trigger("search").end().find(".date").datepicker("setDate",a),j.length&&j.find(".date").datepicker("setDate",a),"function"==typeof e.oldonClose&&e.oldonClose(a,c)},b.find(".date").datepicker(e),e.filterDate&&b.find(".date").datepicker("setDate",e.filterDate),k.$table.bind("filterReset",function(){b.find(".date").val("").datepicker("option","currentText",""),j.length&&j.find(".date").val("").datepicker("option","currentText","")}),k.$table.bind("stickyHeadersInit",function(){j=k.widgetOptions.$sticky.find(".tablesorter-filter-row").children().eq(c).empty(),e.compareOptions?j.append(i).find(".compare").bind("change",function(){l(a(this).val())}):e.cellText&&j.append(i),j.append(h).find(".date").datepicker(e)}),g.val(e.defaultDate?e.defaultDate:"")},uiDatepicker:function(b,c,d){var f,g,h,e=a.extend({from:"",to:"",textFrom:"from",textTo:"to",changeMonth:!0,changeYear:!0,numberOfMonths:1},d),i=[],j=a('<input class="dateRange" type="hidden">').appendTo(b).bind("change.tsfilter",function(){var a=this.value;a.match(" - ")?(a=a.split(" - "),b.find(".dateTo").val(a[1]),h(a[0])):a.match(">=")?h(a.replace(">=","")):a.match("<=")&&g(a.replace("<=",""))}),k=b.closest("table")[0].config;b.closest("thead").find("th[data-column="+c+"]").addClass("filter-parsed"),f="<label>"+e.textFrom+'</label><input type="text" class="dateFrom" /><label>'+e.textTo+'</label><input type="text" class="dateTo" />',a(f).appendTo(b),e.oldonClose=e.onClose;var l=e.defaultDate=e.from||e.defaultDate;return h=e.onClose=function(a,c){var d=new Date(b.find(".dateFrom").datepicker("getDate")).getTime()||"",f=new Date(b.find(".dateTo").datepicker("getDate")).getTime()||"",g=d?f?d+" - "+f:">="+d:f?"<="+f:"";b.find(".dateRange").val(g).trigger("search").end().find(".dateTo").datepicker("option","minDate",a).end().find(".dateFrom").val(a),i.length&&i.find(".dateTo").datepicker("option","minDate",a).end().find(".dateFrom").val(a),"function"==typeof e.oldonClose&&e.oldonClose(a,c)},b.find(".dateFrom").datepicker(e),e.defaultDate=e.to||"+7d",g=e.onClose=function(a,c){var d=new Date(b.find(".dateFrom").datepicker("getDate")).getTime()||"",f=new Date(b.find(".dateTo").datepicker("getDate")).getTime()||"",g=d?f?d+" - "+f:">="+d:f?"<="+f:"";b.find(".dateRange").val(g).trigger("search").end().find(".dateFrom").datepicker("option","maxDate",a).end().find(".dateTo").val(a),i.length&&i.find(".dateFrom").datepicker("option","maxDate",a).end().find(".dateTo").val(a),"function"==typeof e.oldonClose&&e.oldonClose(a,c)},b.find(".dateTo").datepicker(e),k.$table.bind("stickyHeadersInit",function(){i=k.widgetOptions.$sticky.find(".tablesorter-filter-row").children().eq(c).empty(),i.append(f),e.onClose=g,i.find(".dateTo").datepicker(e),e.defaultDate=l,e.onClose=h,i.find(".dateFrom").datepicker(e)}),b.closest("table").bind("filterReset",function(){b.find(".dateFrom, .dateTo").val("").datepicker("option","currentText",""),i.length&&i.find(".dateFrom, .dateTo").val("").datepicker("option","currentText","")}),j.val(e.from?e.to?e.from+" - "+e.to:">="+e.from:e.to?"<="+e.to:"")},html5Number:function(b,c,d){var e,e,i,f=a.extend({value:0,min:0,max:100,step:1,delayed:!0,disabled:!1,addToggle:!0,exactMatch:!0,compare:"",compareOptions:!1,skipTest:!1},d),g=a('<input type="number" style="visibility:hidden;" value="test">').appendTo(b),h=f.skipTest||"number"===g.attr("type")&&"test"!==g.val(),j=[],k=b.closest("table")[0].config,l=function(a){var c=b.find(".number").val();b.find(".compare").val(a),b.find("input[type=hidden]").val(a+c).trigger("search",f.delayed).end(),j.length&&j.find(".compare").val(a)},m=function(a,c){var d=f.addToggle?b.find(".toggle").is(":checked"):!0,e=b.find(".compare").val()||f.compare;b.find("input[type=hidden]").val(!f.addToggle||d?(f.compare?f.compare:f.exactMatch?"=":"")+a:"").val(!f.addToggle||d?e+a:"").trigger("search",c?c:f.delayed).end().find(".number").val(a),b.find(".number").length&&(b.find(".number")[0].disabled=f.disabled||!d),j.length&&(j.find(".number").val(a)[0].disabled=f.disabled||!d,f.addToggle&&(j.find(".toggle")[0].checked=d))};if(g.remove(),h&&(i=f.addToggle?'<div class="button"><input id="html5button'+c+'" type="checkbox" class="toggle" /><label for="html5button'+c+'"></label></div>':""),f.compareOptions){i='<select class="compare">';for(var n in f.compareOptions)i+='<option value="'+n+'"',n===f.compare&&(i+=' selected="selected"'),i+=">"+n+"</option>";i+="</select>",b.append(i).find(".compare").bind("change",function(){l(a(this).val())})}else i&&b.append(i);return h&&(e='<input class="number" type="number" min="'+f.min+'" max="'+f.max+'" value="'+f.value+'" step="'+f.step+'" />',b.append(e+'<input type="hidden" />').find(".toggle, .number").bind("change",function(){m(b.find(".number").val())}).closest("thead").find("th[data-column="+c+"]").addClass("filter-parsed").closest("table").bind("filterReset",function(){f.addToggle&&(b.find(".toggle")[0].checked=!1,j.length&&(j.find(".toggle")[0].checked=!1)),m(b.find(".number").val())}),k.$table.bind("stickyHeadersInit",function(){j=k.widgetOptions.$sticky.find(".tablesorter-filter-row").children().eq(c).empty(),f.compareOptions?j.append(i).find(".compare").bind("change",function(){l(a(this).val())}):j.append(i),j.append(e).find(".toggle, .number").bind("change",function(){m(j.find(".number").val())}),m(b.find(".number").val())}),m(b.find(".number").val())),h?b.find('input[type="hidden"]'):a('<input type="search">')},html5Range:function(b,c,d){var f=a.extend({value:0,min:0,max:100,step:1,delayed:!0,valueToHeader:!0,exactMatch:!0,compare:"",allText:"all",skipTest:!1},d),g=a('<input type="range" style="visibility:hidden;" value="test">').appendTo(b),h=f.skipTest||"range"===g.attr("type")&&"test"!==g.val(),i=[],j=b.closest("table")[0].config,k=function(a,d){a=(a+"").replace(/[<>=]/g,"")||f.min;var e=" ("+(f.compare?f.compare+a:a==f.min?f.allText:a)+")";b.find("input[type=hidden]").val(f.compare?f.compare+a:a==f.min?"":(f.exactMatch?"=":"")+a).trigger("search",d?d:f.delayed).end().find(".range").val(a),b.closest("thead").find("th[data-column="+c+"]").find(".curvalue").html(e),i.length&&(i.find(".range").val(a),i.closest("thead").find("th[data-column="+c+"]").find(".curvalue").html(e))};return g.remove(),h&&(b.html('<input type="hidden"><input class="range" type="range" min="'+f.min+'" max="'+f.max+'" value="'+f.value+'" />').closest("thead").find("th[data-column="+c+"]").addClass("filter-parsed").find(".tablesorter-header-inner").append('<span class="curvalue" />'),b.find(".range").bind("change",function(){k(this.value)}),b.find("input[type=hidden]").bind("change.tsfilter",function(){var a=this.value;a!==this.lastValue&&(this.lastValue=f.compare?f.compare+a:a==f.min?"":(f.exactMatch?"=":"")+a,this.value=this.lastValue,k(a))}),j.$table.bind("stickyHeadersInit",function(){i=j.widgetOptions.$sticky.find(".tablesorter-filter-row").children().eq(c).empty(),i.html('<input class="range" type="range" min="'+f.min+'" max="'+f.max+'" value="'+f.value+'" />').find(".range").bind("change",function(){k(i.find(".range").val())}),k(b.find(".range").val())}),b.closest("table").bind("filterReset",function(){k(f.value)}),k(b.find(".range").val())),h?b.find('input[type="hidden"]'):a('<input type="search">')},html5Color:function(b,c,d){var e,f=a.extend({value:"#000000",disabled:!1,addToggle:!0,exactMatch:!0,valueToHeader:!1,skipTest:!1},d),g=a('<input type="color" style="visibility:hidden;" value="test">').appendTo(b),h=f.skipTest||"color"===g.attr("type")&&"test"!==g.val(),i=[],j=b.closest("table")[0].config,k=function(a){a=a||f.value;var d=!0,e=" ("+a+")";f.addToggle&&(d=b.find(".toggle").is(":checked")),b.find(".colorpicker").length&&(b.find(".colorpicker").val(a)[0].disabled=f.disabled||!d),b.find("input[type=hidden]").val(d?a+(f.exactMatch?"=":""):"").trigger("search"),f.valueToHeader?b.closest("thead").find("th[data-column="+c+"]").find(".curcolor").html(e):b.find(".currentColor").html(e),i.length&&(i.find(".colorpicker").val(a)[0].disabled=f.disabled||!d,f.addToggle&&(i.find(".toggle")[0].checked=d),f.valueToHeader?i.closest("thead").find("th[data-column="+c+"]").find(".curcolor").html(e):i.find(".currentColor").html(e))};return g.remove(),h&&(e='<div class="color-controls-wrapper">',e+=f.addToggle?'<div class="button"><input id="colorbutton'+c+'" type="checkbox" class="toggle" /><label for="colorbutton'+c+'"></label></div>':"",e+='<input type="hidden"><input class="colorpicker" type="color" />',e+=(f.valueToHeader?"":'<span class="currentColor">(#000000)</span>')+"</div>",b.html(e),f.valueToHeader&&b.closest("thead").find("th[data-column="+c+"]").find(".tablesorter-header-inner").append('<span class="curcolor" />'),b.find(".toggle, .colorpicker").bind("change",function(){k(b.find(".colorpicker").val())}),b.find("input[type=hidden]").bind("change.tsfilter",function(){k(this.value)}),b.closest("table").bind("filterReset",function(){b.find(".toggle")[0].checked=!1,k(b.find(".colorpicker").val())}),j.$table.bind("stickyHeadersInit",function(){i=j.widgetOptions.$sticky.find(".tablesorter-filter-row").children().eq(c),i.html(e).find(".toggle, .colorpicker").bind("change",function(){k(i.find(".colorpicker").val())}),k(i.find(".colorpicker").val())}),k(f.value)),h?b.find('input[type="hidden"]'):a('<input type="search">')}}}(jQuery);