tablesorter/dist/js/widgets/widget-filter.min.js

2 lines
24 KiB
JavaScript

/*! Widget: filter */
!function(a){"use strict";var b=a.tablesorter=a.tablesorter||{};a.extend(b.css,{filterRow:"tablesorter-filter-row",filter:"tablesorter-filter"}),b.addWidget({id:"filter",priority:50,options:{filter_childRows:!1,filter_columnFilters:!0,filter_columnAnyMatch:!0,filter_cellFilter:"",filter_cssFilter:"",filter_defaultFilter:{},filter_excludeFilter:{},filter_external:"",filter_filteredRow:"filtered",filter_formatter:null,filter_functions:null,filter_hideEmpty:!0,filter_hideFilters:!1,filter_ignoreCase:!0,filter_liveSearch:!0,filter_onlyAvail:"filter-onlyAvail",filter_placeholder:{search:"",select:""},filter_reset:null,filter_saveFilters:!1,filter_searchDelay:300,filter_searchFiltered:!0,filter_selectSource:null,filter_startsWith:!1,filter_useParsedData:!1,filter_serversideFiltering:!1,filter_defaultAttrib:"data-value",filter_selectSourceSeparator:"|"},format:function(a,c,d){c.$table.hasClass("hasFilters")||b.filter.init(a,c,d)},remove:function(c,d,e,f){var g,h,i=d.$table,j=d.$tbodies,k="addRows updateCell update updateRows updateComplete appendCache filterReset filterEnd search ".split(" ").join(d.namespace+"filter ");if(i.removeClass("hasFilters").unbind(k.replace(/\s+/g," ")).find("."+b.css.filterRow).remove(),!f){for(g=0;g<j.length;g++)h=b.processTbody(c,j.eq(g),!0),h.children().removeClass(e.filter_filteredRow).show(),b.processTbody(c,h,!1);e.filter_reset&&a(document).undelegate(e.filter_reset,"click.tsfilter")}}}),b.filter={regex:{regex:/^\/((?:\\\/|[^\/])+)\/([mig]{0,3})?$/,child:/tablesorter-childRow/,filtered:/filtered/,type:/undefined|number/,exact:/(^[\"\'=]+)|([\"\'=]+$)/g,nondigit:/[^\w,. \-()]/g,operators:/[<>=]/g,query:"(q|query)"},types:{regex:function(a,c){if(b.filter.regex.regex.test(c.iFilter)){var d,e=b.filter.regex.regex.exec(c.iFilter);try{d=new RegExp(e[1],e[2]).test(c.iExact)}catch(f){d=!1}return d}return null},operators:function(c,d){if(/^[<>]=?/.test(d.iFilter)){var e,f,g=c.table,h=d.index,i=d.parsed[h],j=b.formatFloat(d.iFilter.replace(b.filter.regex.operators,""),g),k=c.parsers[h],l=j;return(i||"numeric"===k.type)&&(f=b.filter.parseFilter(c,a.trim(""+d.iFilter.replace(b.filter.regex.operators,"")),h,i,!0),j="number"!=typeof f||""===f||isNaN(f)?j:f),e=!i&&"numeric"!==k.type||isNaN(j)||"undefined"==typeof d.cache?isNaN(d.iExact)?b.formatFloat(d.iExact.replace(b.filter.regex.nondigit,""),g):b.formatFloat(d.iExact,g):d.cache,/>/.test(d.iFilter)&&(f=/>=/.test(d.iFilter)?e>=j:e>j),/</.test(d.iFilter)&&(f=/<=/.test(d.iFilter)?j>=e:j>e),f||""!==l||(f=!0),f}return null},notMatch:function(c,d){if(/^\!/.test(d.iFilter)){var e,f=b.filter.parseFilter(c,d.iFilter.replace("!",""),d.index,d.parsed[d.index]);return b.filter.regex.exact.test(f)?(f=f.replace(b.filter.regex.exact,""),""===f?!0:a.trim(f)!==d.iExact):(e=d.iExact.search(a.trim(f)),""===f?!0:!(c.widgetOptions.filter_startsWith?0===e:e>=0))}return null},exact:function(c,d){if(b.filter.regex.exact.test(d.iFilter)){var e=b.filter.parseFilter(c,d.iFilter.replace(b.filter.regex.exact,""),d.index,d.parsed[d.index]);return d.anyMatch?a.inArray(e,d.rowArray)>=0:e==d.iExact}return null},and:function(c,d){if(b.filter.regex.andTest.test(d.filter)){for(var e=d.index,f=d.parsed[e],g=d.iFilter.split(b.filter.regex.andSplit),h=d.iExact.search(a.trim(b.filter.parseFilter(c,g[0],e,f)))>=0,i=g.length-1;h&&i;)h=h&&d.iExact.search(a.trim(b.filter.parseFilter(c,g[i],e,f)))>=0,i--;return h}return null},range:function(a,c){if(b.filter.regex.toTest.test(c.iFilter)){var d,e,f=a.table,g=c.index,h=c.parsed[g],i=c.iFilter.split(b.filter.regex.toSplit),j=b.formatFloat(b.filter.parseFilter(a,i[0].replace(b.filter.regex.nondigit,""),g,h),f),k=b.formatFloat(b.filter.parseFilter(a,i[1].replace(b.filter.regex.nondigit,""),g,h),f);return(h||"numeric"===a.parsers[g].type)&&(d=a.parsers[g].format(""+i[0],f,a.$headers.eq(g),g),j=""===d||isNaN(d)?j:d,d=a.parsers[g].format(""+i[1],f,a.$headers.eq(g),g),k=""===d||isNaN(d)?k:d),d=!h&&"numeric"!==a.parsers[g].type||isNaN(j)||isNaN(k)?isNaN(c.iExact)?b.formatFloat(c.iExact.replace(b.filter.regex.nondigit,""),f):b.formatFloat(c.iExact,f):c.cache,j>k&&(e=j,j=k,k=e),d>=j&&k>=d||""===j||""===k}return null},wild:function(c,d){if(/[\?\*\|]/.test(d.iFilter)||b.filter.regex.orReplace.test(d.filter)){var e=d.index,f=d.parsed[e],g=b.filter.parseFilter(c,d.iFilter.replace(b.filter.regex.orReplace,"|"),e,f);return!c.$headers.filter('[data-column="'+e+'"]:last').hasClass("filter-match")&&/\|/.test(g)&&("|"===g[g.length-1]&&(g+="*"),g=d.anyMatch&&a.isArray(d.rowArray)?"("+g+")":"^("+g+")$"),new RegExp(g.replace(/\?/g,"\\S{1}").replace(/\*/g,"\\S*")).test(d.iExact)}return null},fuzzy:function(a,c){if(/^~/.test(c.iFilter)){var d,e=0,f=c.iExact.length,g=b.filter.parseFilter(a,c.iFilter.slice(1),c.index,c.parsed[c.index]);for(d=0;f>d;d++)c.iExact[d]===g[e]&&(e+=1);return e===g.length?!0:!1}return null}},init:function(c,d,e){b.language=a.extend(!0,{},{to:"to",or:"or",and:"and"},b.language);var f,g,h,i,j,k,l,m,n,o=b.filter.regex;if(d.$table.addClass("hasFilters"),e.searchTimer=null,e.filter_initTimer=null,e.filter_formatterCount=0,e.filter_formatterInit=[],e.filter_anyColumnSelector='[data-column="all"],[data-column="any"]',e.filter_multipleColumnSelector='[data-column*="-"],[data-column*=","]',h="\\{"+b.filter.regex.query+"\\}",a.extend(o,{child:new RegExp(d.cssChildRow),filtered:new RegExp(e.filter_filteredRow),alreadyFiltered:new RegExp("(\\s+("+b.language.or+"|-|"+b.language.to+")\\s+)","i"),toTest:new RegExp("\\s+(-|"+b.language.to+")\\s+","i"),toSplit:new RegExp("(?:\\s+(?:-|"+b.language.to+")\\s+)","gi"),andTest:new RegExp("\\s+("+b.language.and+"|&&)\\s+","i"),andSplit:new RegExp("(?:\\s+(?:"+b.language.and+"|&&)\\s+)","gi"),orReplace:new RegExp("\\s+("+b.language.or+")\\s+","gi"),iQuery:new RegExp(h,"i"),igQuery:new RegExp(h,"ig")}),e.filter_columnFilters!==!1&&d.$headers.filter(".filter-false, .parser-false").length!==d.$headers.length&&b.filter.buildRow(c,d,e),h="addRows updateCell update updateRows updateComplete appendCache filterReset filterEnd search ".split(" ").join(d.namespace+"filter "),d.$table.bind(h,function(f,g){return l=e.filter_hideEmpty&&a.isEmptyObject(d.cache)&&!(d.delayInit&&"appendCache"===f.type),d.$table.find("."+b.css.filterRow).toggleClass(e.filter_filteredRow,l),/(search|filter)/.test(f.type)||(f.stopPropagation(),b.filter.buildDefault(c,!0)),"filterReset"===f.type?(d.$table.find("."+b.css.filter).add(e.filter_$externalFilters).val(""),b.filter.searching(c,[])):"filterEnd"===f.type?b.filter.buildDefault(c,!0):(g="search"===f.type?g:"updateComplete"===f.type?d.$table.data("lastSearch"):"",/(update|add)/.test(f.type)&&"updateComplete"!==f.type&&(d.lastCombinedFilter=null,d.lastSearch=[]),b.filter.searching(c,g,!0)),!1}),e.filter_reset&&(e.filter_reset instanceof a?e.filter_reset.click(function(){d.$table.trigger("filterReset")}):a(e.filter_reset).length&&a(document).undelegate(e.filter_reset,"click.tsfilter").delegate(e.filter_reset,"click.tsfilter",function(){d.$table.trigger("filterReset")})),e.filter_functions)for(j=0;j<d.columns;j++)if(m=b.getColumnData(c,e.filter_functions,j))if(i=d.$headers.filter('[data-column="'+j+'"]:last').removeClass("filter-select"),n=!(i.hasClass("filter-false")||i.hasClass("parser-false")),f="",m===!0&&n)b.filter.buildSelect(c,j);else if("object"==typeof m&&n){for(g in m)"string"==typeof g&&(f+=""===f?'<option value="">'+(i.data("placeholder")||i.attr("data-placeholder")||e.filter_placeholder.select||"")+"</option>":"",l=g,h=g,g.indexOf(e.filter_selectSourceSeparator)>=0&&(l=g.split(e.filter_selectSourceSeparator),h=l[1],l=l[0]),f+="<option "+(h===l?"":'data-function-name="'+g+'" ')+'value="'+l+'">'+h+"</option>");d.$table.find("thead").find("select."+b.css.filter+'[data-column="'+j+'"]').append(f)}b.filter.buildDefault(c,!0),b.filter.bindSearch(c,d.$table.find("."+b.css.filter),!0),e.filter_external&&b.filter.bindSearch(c,e.filter_external),e.filter_hideFilters&&b.filter.hideFilters(c,d),d.showProcessing&&d.$table.unbind("filterStart filterEnd ".split(" ").join(d.namespace+"filter ").replace(/\s+/g," ")).bind("filterStart filterEnd ".split(" ").join(d.namespace+"filter "),function(e,f){i=f?d.$table.find("."+b.css.header).filter("[data-column]").filter(function(){return""!==f[a(this).data("column")]}):"",b.isProcessing(c,"filterStart"===e.type,f?i:"")}),d.filteredRows=d.totalRows,d.$table.unbind("tablesorter-initialized pagerBeforeInitialized ".split(" ").join(d.namespace+"filter ").replace(/\s+/g," ")).bind("tablesorter-initialized pagerBeforeInitialized ".split(" ").join(d.namespace+"filter "),function(){var a=this.config.widgetOptions;k=b.filter.setDefaults(c,d,a)||[],k.length&&(d.delayInit&&""===k.join("")||b.setFilters(c,k,!0)),d.$table.trigger("filterFomatterUpdate"),setTimeout(function(){a.filter_initialized||b.filter.filterInitComplete(d)},100)}),d.pager&&d.pager.initialized&&!e.filter_initialized&&(d.$table.trigger("filterFomatterUpdate"),setTimeout(function(){b.filter.filterInitComplete(d)},100))},formatterUpdated:function(a,b){var c=a.closest("table")[0].config.widgetOptions;c.filter_initialized||(c.filter_formatterInit[b]=1)},filterInitComplete:function(c){var d,e,f=c.widgetOptions,g=0,h=function(){f.filter_initialized=!0,c.$table.trigger("filterInit",c),b.filter.findRows(c.table,c.$table.data("lastSearch")||[])};if(a.isEmptyObject(f.filter_formatter))h();else{for(e=f.filter_formatterInit.length,d=0;e>d;d++)1===f.filter_formatterInit[d]&&g++;clearTimeout(f.filter_initTimer),f.filter_initialized||g!==f.filter_formatterCount?f.filter_initialized||(f.filter_initTimer=setTimeout(function(){h()},500)):h()}},setDefaults:function(c,d,e){var f,g,h,i=b.getFilters(c)||[];if(e.filter_saveFilters&&b.storage&&(g=b.storage(c,"tablesorter-filters")||[],f=a.isArray(g),f&&""===g.join("")||!f||(i=g)),""===i.join(""))for(h=0;h<d.columns;h++)i[h]=d.$headers.filter('[data-column="'+h+'"]:last').attr(e.filter_defaultAttrib)||i[h];return d.$table.data("lastSearch",i),i},parseFilter:function(a,b,c,d,e){return e||d?a.parsers[c].format(b,a.table,[],c):b},buildRow:function(c,d,e){var f,g,h,i,j,k,l,m=d.columns,n=a.isArray(e.filter_cellFilter),o='<tr role="row" class="'+b.css.filterRow+'">';for(g=0;m>g;g++)o+=n?"<td"+(e.filter_cellFilter[g]?' class="'+e.filter_cellFilter[g]+'"':"")+"></td>":"<td"+(""!==e.filter_cellFilter?' class="'+e.filter_cellFilter+'"':"")+"></td>";for(d.$filters=a(o+="</tr>").appendTo(d.$table.children("thead").eq(0)).find("td"),g=0;m>g;g++)j=!1,h=d.$headers.filter('[data-column="'+g+'"]:last'),l=b.getColumnData(c,e.filter_functions,g),i=e.filter_functions&&l&&"function"!=typeof l||h.hasClass("filter-select"),f=b.getColumnData(c,d.headers,g),j="false"===b.getData(h[0],f,"filter")||"false"===b.getData(h[0],f,"parser"),i?o=a("<select>").appendTo(d.$filters.eq(g)):(l=b.getColumnData(c,e.filter_formatter,g),l?(e.filter_formatterCount++,o=l(d.$filters.eq(g),g),o&&0===o.length&&(o=d.$filters.eq(g).children("input")),o&&(0===o.parent().length||o.parent().length&&o.parent()[0]!==d.$filters[g])&&d.$filters.eq(g).append(o)):o=a('<input type="search">').appendTo(d.$filters.eq(g)),o&&o.attr("placeholder",h.data("placeholder")||h.attr("data-placeholder")||e.filter_placeholder.search||"")),o&&(k=(a.isArray(e.filter_cssFilter)?"undefined"!=typeof e.filter_cssFilter[g]?e.filter_cssFilter[g]||"":"":e.filter_cssFilter)||"",o.addClass(b.css.filter+" "+k).attr("data-column",g),j&&(o.attr("placeholder","").addClass("disabled")[0].disabled=!0))},bindSearch:function(c,d,e){if(c=a(c)[0],d=a(d),d.length){var f=c.config,g=f.widgetOptions,h=g.filter_$externalFilters;e!==!0&&(g.filter_$anyMatch=d.filter(g.filter_anyColumnSelector+","+g.filter_multipleColumnSelector),g.filter_$externalFilters=h&&h.length?g.filter_$externalFilters.add(d):d,b.setFilters(c,f.$table.data("lastSearch")||[],e===!1)),d.attr("data-lastSearchTime",(new Date).getTime()).unbind("keypress keyup search change ".split(" ").join(f.namespace+"filter ").replace(/\s+/g," ")).bind("keyup"+f.namespace+"filter",function(d){if(a(this).attr("data-lastSearchTime",(new Date).getTime()),27===d.which)this.value="";else{if(g.filter_liveSearch===!1)return;if(""!==this.value&&("number"==typeof g.filter_liveSearch&&this.value.length<g.filter_liveSearch||13!==d.which&&8!==d.which&&(d.which<32||d.which>=37&&d.which<=40)))return}b.filter.searching(c,!0,!0)}).bind("search change keypress ".split(" ").join(f.namespace+"filter "),function(d){var e=a(this).data("column");(13===d.which||"search"===d.type||"change"===d.type&&this.value!==f.lastSearch[e])&&(d.preventDefault(),a(this).attr("data-lastSearchTime",(new Date).getTime()),b.filter.searching(c,!1,!0))})}},searching:function(a,c,d){var e=a.config.widgetOptions;clearTimeout(e.searchTimer),"undefined"==typeof c||c===!0?e.searchTimer=setTimeout(function(){b.filter.checkFilters(a,c,d)},e.filter_liveSearch?e.filter_searchDelay:10):b.filter.checkFilters(a,c,d)},checkFilters:function(c,d,e){var f=c.config,g=f.widgetOptions,h=a.isArray(d),i=h?d:b.getFilters(c,!0),j=(i||[]).join("");return a.isEmptyObject(f.cache)?void(f.delayInit&&f.pager&&f.pager.initialized&&f.$table.trigger("updateCache",[function(){b.filter.checkFilters(c,!1,e)}])):(h&&(b.setFilters(c,i,!1,e!==!0),g.filter_initialized||(f.lastCombinedFilter="")),g.filter_hideFilters&&f.$table.find("."+b.css.filterRow).trigger(""===j?"mouseleave":"mouseenter"),f.lastCombinedFilter!==j||d===!1?(d===!1&&(f.lastCombinedFilter=null,f.lastSearch=[]),g.filter_initialized&&f.$table.trigger("filterStart",[i]),f.showProcessing?void setTimeout(function(){return b.filter.findRows(c,i,j),!1},30):(b.filter.findRows(c,i,j),!1)):void 0)},hideFilters:function(c,d){var e,f,g;a(c).find("."+b.css.filterRow).addClass("hideme").bind("mouseenter mouseleave",function(b){var c=b;e=a(this),clearTimeout(g),g=setTimeout(function(){/enter|over/.test(c.type)?e.removeClass("hideme"):a(document.activeElement).closest("tr")[0]!==e[0]&&""===d.lastCombinedFilter&&e.addClass("hideme")},200)}).find("input, select").bind("focus blur",function(c){f=a(this).closest("tr"),clearTimeout(g);var e=c;g=setTimeout(function(){""===b.getFilters(d.$table).join("")&&f["focus"===e.type?"removeClass":"addClass"]("hideme")},200)})},defaultFilter:function(c,d){if(""===c)return c;var e=b.filter.regex.iQuery,f=d.match(b.filter.regex.igQuery).length,g=f>1?a.trim(c).split(/\s/):[a.trim(c)],h=g.length-1,i=0,j=d;for(1>h&&f>1&&(g[1]=g[0]);e.test(j);)j=j.replace(e,g[i++]||""),e.test(j)&&h>i&&""!==(g[i]||"")&&(j=d.replace(e,j));return j},getLatestSearch:function(b){return b?b.sort(function(b,c){return a(c).attr("data-lastSearchTime")-a(b).attr("data-lastSearchTime")}):a()},multipleColumns:function(c,d){var e,f,g,h,i,j,k,l,m,n=c.widgetOptions,o=n.filter_initialized||!d.filter(n.filter_anyColumnSelector).length,p=[],q=a.trim(b.filter.getLatestSearch(d).attr("data-column")||"");if(o&&/-/.test(q))for(f=q.match(/(\d+)\s*-\s*(\d+)/g),m=f.length,l=0;m>l;l++){for(g=f[l].split(/\s*-\s*/),h=parseInt(g[0],10)||0,i=parseInt(g[1],10)||c.columns-1,h>i&&(e=h,h=i,i=e),i>=c.columns&&(i=c.columns-1);i>=h;h++)p.push(h);q=q.replace(f[l],"")}if(o&&/,/.test(q))for(j=q.split(/\s*,\s*/),m=j.length,k=0;m>k;k++)""!==j[k]&&(l=parseInt(j[k],10),l<c.columns&&p.push(l));if(!p.length)for(l=0;l<c.columns;l++)p.push(l);return p},findRows:function(c,d,e){if(c.config.lastCombinedFilter!==e&&c.config.widgetOptions.filter_initialized){var f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H=b.filter.regex,I=c.config,J=I.widgetOptions,K={anyMatch:!1},L=["range","notMatch","operators"];for(K.parsed=I.$headers.map(function(d){return I.parsers&&I.parsers[d]&&I.parsers[d].parsed||b.getData&&"parsed"===b.getData(I.$headers.filter('[data-column="'+d+'"]:last'),b.getColumnData(c,I.headers,d),"filter")||a(this).hasClass("filter-parsed")}).get(),I.debug&&(b.log("Starting filter widget search",d),u=new Date),I.filteredRows=0,I.totalRows=0,e=(d||[]).join(""),j=0;j<I.$tbodies.length;j++){if(k=b.processTbody(c,I.$tbodies.eq(j),!0),n=I.columns,g=I.cache[j].normalized,h=a(a.map(g,function(a){return a[n].$row.get()})),""===e||J.filter_serversideFiltering)h.removeClass(J.filter_filteredRow).not("."+I.cssChildRow).show();else{if(h=h.not("."+I.cssChildRow),f=h.length,(J.filter_$anyMatch&&J.filter_$anyMatch.length||"undefined"!=typeof d[I.columns])&&(K.anyMatchFlag=!0,K.anyMatchFilter=J.filter_$anyMatch&&b.filter.getLatestSearch(J.filter_$anyMatch).val()||""+d[I.columns]||"",J.filter_columnAnyMatch)){for(D=K.anyMatchFilter.split(b.filter.regex.andSplit),E=!1,w=0;w<D.length;w++)F=D[w].split(":"),F.length>1&&(G=parseInt(F[0],10)-1,G>=0&&G<I.columns&&(d[G]=F[1],D.splice(w,1),w--,E=!0));E&&(K.anyMatchFilter=D.join(" && "))}if(y=J.filter_searchFiltered,p=I.lastSearch||I.$table.data("lastSearch")||[],y)for(w=0;n+1>w;w++)v=d[w]||"",y||(w=n),y=!(!y||!p.length||0!==v.indexOf(p[w]||"")||H.alreadyFiltered.test(v)||/[=\"\|!]/.test(v)||/(>=?\s*-\d)/.test(v)||/(<=?\s*\d)/.test(v)||""!==v&&I.$filters&&I.$filters.eq(w).find("select").length&&!I.$headers.filter('[data-column="'+w+'"]:last').hasClass("filter-match"));for(x=h.not("."+J.filter_filteredRow).length,y&&0===x&&(y=!1),I.debug&&b.log("Searching through "+(y&&f>x?x:"all")+" rows"),K.anyMatchFlag&&(I.sortLocaleCompare&&(K.anyMatchFilter=b.replaceAccents(K.anyMatchFilter)),J.filter_defaultFilter&&H.iQuery.test(b.getColumnData(c,J.filter_defaultFilter,I.columns,!0)||"")&&(K.anyMatchFilter=b.filter.defaultFilter(K.anyMatchFilter,b.getColumnData(c,J.filter_defaultFilter,I.columns,!0)),y=!1),K.iAnyMatchFilter=J.filter_ignoreCase&&I.ignoreCase?K.anyMatchFilter.toLocaleLowerCase():K.anyMatchFilter),i=0;f>i;i++)if(K.cacheArray=g[i],o=h[i].className,!(H.child.test(o)||y&&H.filtered.test(o))){if(t=!0,o=h.eq(i).nextUntil("tr:not(."+I.cssChildRow+")"),K.childRowText=o.length&&J.filter_childRows?o.text():"",K.childRowText=J.filter_ignoreCase?K.childRowText.toLocaleLowerCase():K.childRowText,l=h.eq(i).children(),K.anyMatchFlag){if(n=b.filter.multipleColumns(I,J.filter_$anyMatch),K.anyMatch=!0,K.rowArray=l.map(function(c){if(a.inArray(c,n)>-1){var d;return K.parsed[c]?d=K.cacheArray[c]:(d=this?this.getAttribute(I.textAttribute)||this.textContent||a(this).text():"",d=a.trim(J.filter_ignoreCase?d.toLowerCase():d),I.sortLocaleCompare&&(d=b.replaceAccents(d))),d}}).get(),K.filter=K.anyMatchFilter,K.iFilter=K.iAnyMatchFilter,K.exact=K.rowArray.join(" "),K.iExact=J.filter_ignoreCase?K.exact.toLowerCase():K.exact,K.cache=K.cacheArray.slice(0,-1).join(" "),z=null,a.each(b.filter.types,function(b,c){return a.inArray(b,L)<0&&(r=c(I,K),null!==r)?(z=r,!1):void 0}),null!==z)t=z;else if(J.filter_startsWith)for(t=!1,n=I.columns;!t&&n>0;)n--,t=t||0===K.rowArray[n].indexOf(K.iFilter);else t=(K.iExact+K.childRowText).indexOf(K.iFilter)>=0;K.anyMatch=!1}for(n=0;n<I.columns;n++)K.filter=d[n],K.index=n,A=(b.getColumnData(c,J.filter_excludeFilter,n,!0)||"").split(/\s+/),K.filter&&(K.cache=K.cacheArray[n],J.filter_useParsedData||K.parsed[n]?K.exact=K.cache:(v=l[n],s=v?a.trim(v.getAttribute(I.textAttribute)||v.textContent||l.eq(n).text()):"",K.exact=I.sortLocaleCompare?b.replaceAccents(s):s),K.iExact=!H.type.test(typeof K.exact)&&J.filter_ignoreCase?K.exact.toLocaleLowerCase():K.exact,s=t,C=J.filter_columnFilters?I.$filters.add(I.$externalFilters).filter('[data-column="'+n+'"]').find("select option:selected").attr("data-function-name")||"":"",I.sortLocaleCompare&&(K.filter=b.replaceAccents(K.filter)),v=!0,J.filter_defaultFilter&&H.iQuery.test(b.getColumnData(c,J.filter_defaultFilter,n)||"")&&(K.filter=b.filter.defaultFilter(K.filter,b.getColumnData(c,J.filter_defaultFilter,n)),v=!1),K.iFilter=J.filter_ignoreCase?(K.filter||"").toLocaleLowerCase():K.filter,B=b.getColumnData(c,J.filter_functions,n),m=I.$headers.filter('[data-column="'+n+'"]:last'),q=m.hasClass("filter-select"),B||q&&v?B===!0||q?s=m.hasClass("filter-match")?K.iExact.search(K.iFilter)>=0:K.filter===K.exact:"function"==typeof B?s=B(K.exact,K.cache,K.filter,n,h.eq(i),I):"function"==typeof B[C||K.filter]&&(s=B[C||K.filter](K.exact,K.cache,K.filter,n,h.eq(i),I)):(z=null,a.each(b.filter.types,function(b,c){return a.inArray(b,A)<0&&(r=c(I,K),null!==r)?(z=r,!1):void 0}),null!==z?s=z:(K.exact=(K.iExact+K.childRowText).indexOf(b.filter.parseFilter(I,K.iFilter,n,K.parsed[n])),s=!J.filter_startsWith&&K.exact>=0||J.filter_startsWith&&0===K.exact)),t=s?t:!1);h.eq(i).toggle(t).toggleClass(J.filter_filteredRow,!t),o.length&&o.toggleClass(J.filter_filteredRow,!t)}}I.filteredRows+=h.not("."+J.filter_filteredRow).length,I.totalRows+=h.length,b.processTbody(c,k,!1)}I.lastCombinedFilter=e,I.lastSearch=d,I.$table.data("lastSearch",d),J.filter_saveFilters&&b.storage&&b.storage(c,"tablesorter-filters",d),I.debug&&b.benchmark("Completed filter widget search",u),J.filter_initialized&&I.$table.trigger("filterEnd",I),setTimeout(function(){I.$table.trigger("applyWidgets")},0)}},getOptionSource:function(c,d,e){c=a(c)[0];var f,g,h,i=c.config,j=i.widgetOptions,k=[],l=!1,m=j.filter_selectSource,n=i.$table.data("lastSearch")||[],o=a.isFunction(m)?!0:b.getColumnData(c,m,d);if(e&&""!==n[d]&&(e=!1),o===!0)l=m(c,d,e);else{if(o instanceof a||"string"===a.type(o)&&o.indexOf("</option>")>=0)return o;a.isArray(o)?l=o:"object"===a.type(m)&&o&&(l=o(c,d,e))}if(l===!1&&(l=b.filter.getOptions(c,d,e)),l=a.grep(l,function(b,c){return a.inArray(b,l)===c}),i.$headers.filter('[data-column="'+d+'"]:last').hasClass("filter-select-nosort"))return l;for(h=l.length,g=0;h>g;g++)k.push({t:l[g],p:i.parsers&&i.parsers[d].format(l[g],c,[],d)});for(f=i.textSorter||"",k.sort(function(e,g){var h=e.p.toString(),i=g.p.toString();return a.isFunction(f)?f(h,i,!0,d,c):"object"==typeof f&&f.hasOwnProperty(d)?f[d](h,i,!0,d,c):b.sortNatural?b.sortNatural(h,i):!0}),l=[],h=k.length,g=0;h>g;g++)l.push(k[g].t);return l},getOptions:function(b,c,d){b=a(b)[0];var e,f,g,h,i,j,k=b.config,l=k.widgetOptions,m=[];for(f=0;f<k.$tbodies.length;f++)for(i=k.cache[f],g=k.cache[f].normalized.length,e=0;g>e;e++)h=i.row?i.row[e]:i.normalized[e][k.columns].$row[0],d&&h.className.match(l.filter_filteredRow)||(l.filter_useParsedData||k.parsers[c].parsed||k.$headers.filter('[data-column="'+c+'"]:last').hasClass("filter-parsed")?m.push(""+i.normalized[e][c]):(j=h.cells[c],j&&m.push(a.trim(j.getAttribute(k.textAttribute)||j.textContent||a(j).text()))));return m},buildSelect:function(c,d,e,f,g){if(c=a(c)[0],d=parseInt(d,10),c.config.cache&&!a.isEmptyObject(c.config.cache)){var h,i,j,k,l,m,n=c.config,o=n.widgetOptions,p=n.$headers.filter('[data-column="'+d+'"]:last'),q='<option value="">'+(p.data("placeholder")||p.attr("data-placeholder")||o.filter_placeholder.select||"")+"</option>",r=n.$table.find("thead").find("select."+b.css.filter+'[data-column="'+d+'"]').val();if(("undefined"==typeof e||""===e)&&(e=b.filter.getOptionSource(c,d,g)),a.isArray(e)){for(h=0;h<e.length;h++)j=e[h]=(""+e[h]).replace(/\"/g,"&quot;"),i=j,j.indexOf(o.filter_selectSourceSeparator)>=0&&(k=j.split(o.filter_selectSourceSeparator),i=k[0],j=k[1]),q+=""!==e[h]?"<option "+(i===j?"":'data-function-name="'+e[h]+'" ')+'value="'+i+'">'+j+"</option>":"";e=[]}l=(n.$filters?n.$filters:n.$table.children("thead")).find("."+b.css.filter),o.filter_$externalFilters&&(l=l&&l.length?l.add(o.filter_$externalFilters):o.filter_$externalFilters),m=l.filter('select[data-column="'+d+'"]'),m.length&&(m[f?"html":"append"](q),a.isArray(e)||m.append(e).val(r),m.val(r))}},buildDefault:function(a,c){var d,e,f,g=a.config,h=g.widgetOptions,i=g.columns;for(d=0;i>d;d++)e=g.$headers.filter('[data-column="'+d+'"]:last'),f=!(e.hasClass("filter-false")||e.hasClass("parser-false")),(e.hasClass("filter-select")||b.getColumnData(a,h.filter_functions,d)===!0)&&f&&b.filter.buildSelect(a,d,"",c,e.hasClass(h.filter_onlyAvail))}},b.getFilters=function(c,d,e,f){var g,h,i,j,k=!1,l=c?a(c)[0].config:"",m=l?l.widgetOptions:"";if(d!==!0&&m&&!m.filter_columnFilters)return a(c).data("lastSearch");if(l&&(l.$filters&&(h=l.$filters.find("."+b.css.filter)),m.filter_$externalFilters&&(h=h&&h.length?h.add(m.filter_$externalFilters):m.filter_$externalFilters),h&&h.length))for(k=e||[],g=0;g<l.columns+1;g++)j=g===l.columns?m.filter_anyColumnSelector+","+m.filter_multipleColumnSelector:'[data-column="'+g+'"]',i=h.filter(j),i.length&&(i=b.filter.getLatestSearch(i),a.isArray(e)?(f&&i.slice(1),g===l.columns&&(j=i.filter(m.filter_anyColumnSelector),i=j.length?j:i),i.val(e[g]).trigger("change.tsfilter")):(k[g]=i.val()||"",g===l.columns?i.slice(1).filter('[data-column*="'+i.attr("data-column")+'"]').val(k[g]):i.slice(1).val(k[g])),g===l.columns&&i.length&&(m.filter_$anyMatch=i));return 0===k.length&&(k=!1),k},b.setFilters=function(c,d,e,f){var g=c?a(c)[0].config:"",h=b.getFilters(c,!0,d,f);return g&&e&&(g.lastCombinedFilter=null,g.lastSearch=[],b.filter.searching(g.table,d,f),g.$table.trigger("filterFomatterUpdate")),!!h}}(jQuery);