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

7 lines
14 KiB
JavaScript

/*! 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(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('<input class="filter" type="hidden">').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('<div class="button"><input id="uispinnerbutton'+f+'" type="checkbox" class="toggle" /><label for="uispinnerbutton'+ f+'"></label></div>').appendTo(b).find(".toggle").bind("change",function(){c()});b.closest("thead").find("th[data-column="+f+"]").addClass("filter-parsed");h('<input class="spinner spinner'+f+'" />').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('<div class="button"><input id="stickyuispinnerbutton'+f+'" type="checkbox" class="toggle" /><label for="stickyuispinnerbutton'+ f+'"></label></div>').appendTo(e).find(".toggle").bind("change",function(){b.find(".toggle")[0].checked=this.checked;c()});h('<input class="spinner spinner'+f+'" />').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('<input class="filter" type="hidden">').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('<span class="curvalue" />');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('<div class="slider slider'+f+'"/>').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('<div class="slider slider'+f+'"/>').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('<input class="filter" type="hidden">').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('<span class="currange"/>');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('<div class="range range'+f+'"/>').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('<div class="range range'+f+'"/>').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('<input class="dateCompare" type="hidden">').appendTo(b),j,c=[],k=b.closest("table")[0].config;g.addClass("filter-parsed");j="<label>"+a.cellText+'</label><input type="text" class="date date'+ f+'" placeholder="'+(g.data("placeholder")||g.attr("data-placeholder")||"")+'" />';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('<input class="dateRange" type="hidden">').appendTo(b);var e,j,c=[],k=b.closest("table")[0].config; b.closest("thead").find("th[data-column="+f+"]").addClass("filter-parsed");e="<label>"+a.textFrom+'</label><input type="text" class="dateFrom" /><label>'+a.textTo+'</label><input type="text" class="dateTo" />';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:"",skipTest:!1},g);g=h('<input type="number" style="visibility:hidden;" value="test">').appendTo(b);var j=e.skipTest||"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?'<div class="button"><input id="html5button'+f+'" type="checkbox" class="toggle" /><label for="html5button'+f+'"></label></div>':"", a+='<input class="number" type="number" min="'+e.min+'" max="'+e.max+'" value="'+e.value+'" step="'+e.step+'" />',b.html(a+'<input type="hidden" />').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('<input type="search">')},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",skipTest:!1},g);g=h('<input type="range" style="visibility:hidden;" value="test">').appendTo(b); var e=a.skipTest||"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('<input type="hidden"><input class="range" type="range" min="'+a.min+'" max="'+a.max+'" value="'+a.value+'" />').closest("thead").find("th[data-column="+f+"]").addClass("filter-parsed").find(".tablesorter-header-inner").append('<span class="curvalue" />'),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('<input class="range" type="range" min="'+ a.min+'" max="'+a.max+'" value="'+a.value+'" />').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('<input type="search">')},html5Color:function(b,f,g){var a,e=h.extend({value:"#000000",disabled:!1,addToggle:!0,exactMatch:!0,valueToHeader:!1,skipTest:!1},g);g=h('<input type="color" style="visibility:hidden;" value="test">').appendTo(b); var j=e.skipTest||"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='<div class="color-controls-wrapper">',a+=e.addToggle?'<div class="button"><input id="colorbutton'+f+'" type="checkbox" class="toggle" /><label for="colorbutton'+f+'"></label></div>':"",a+='<input type="hidden"><input class="colorpicker" type="color" />',a+=(e.valueToHeader?"":'<span class="currentColor">(#000000)</span>')+ "</div>",b.html(a),e.valueToHeader&&b.closest("thead").find("th[data-column="+f+"]").find(".tablesorter-header-inner").append('<span class="curcolor" />'),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('<input type="search">')}}})(jQuery);