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_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(a.trim(k)).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(a.trim(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(a.trim("filterStart filterEnd ".split(" ").join(d.namespace+"filter "))).bind(a.trim("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(a.trim("tablesorter-initialized pagerBeforeInitialized ".split(" ").join(d.namespace+"filter "))).bind(a.trim("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=c.widgetOptions,e=0,f=function(){d.filter_initialized=!0,c.$table.trigger("filterInit",c),b.filter.findRows(c.table,c.$table.data("lastSearch")||[])};a.isEmptyObject(d.filter_formatter)?f():(a.each(d.filter_formatterInit,function(a,b){1===b&&e++}),clearTimeout(d.filter_initTimer),d.filter_initialized||e!==d.filter_formatterCount?d.filter_initialized||(d.filter_initTimer=setTimeout(function(){f()},500)):f())},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(a.trim("keypress keyup search change ".split(" ").join(f.namespace+"filter "))).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(a.trim("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.sort(function(b,c){return a(c).attr("data-lastSearchTime")-a(b).attr("data-lastSearchTime")})},multipleColumns:function(c,d){var e,f,g,h=c.widgetOptions,i=h.filter_initialized||!d.filter(h.filter_anyColumnSelector).length,j=[],k=a.trim(b.filter.getLatestSearch(d).attr("data-column"));if(i&&/-/.test(k)&&(e=k.match(/(\d+)\s*-\s*(\d+)/g),a.each(e,function(a,b){var d,e=b.split(/\s*-\s*/),f=parseInt(e[0],10)||0,g=parseInt(e[1],10)||c.columns-1;for(f>g&&(d=f,f=g,g=d),g>=c.columns&&(g=c.columns-1);g>=f;f++)j.push(f);k=k.replace(b,"")})),i&&/,/.test(k)&&(f=k.split(/\s*,\s*/),a.each(f,function(a,b){""!==b&&(g=parseInt(b,10),g<c.columns&&j.push(g))})),!j.length)for(g=0;g<c.columns;g++)j.push(g);return j},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=b.filter.regex,D=c.config,E=D.widgetOptions,F=D.$table.children("tbody"),G={anyMatch:!1},H=["range","notMatch","operators"];for(G.parsed=D.$headers.map(function(d){return D.parsers&&D.parsers[d]&&D.parsers[d].parsed||b.getData&&"parsed"===b.getData(D.$headers.filter('[data-column="'+d+'"]:last'),b.getColumnData(c,D.headers,d),"filter")||a(this).hasClass("filter-parsed")}).get(),D.debug&&(b.log("Starting filter widget search",d),t=new Date),D.filteredRows=0,D.totalRows=0,e=(d||[]).join(""),i=0;i<F.length;i++)if(!F.eq(i).hasClass(D.cssInfoBlock||b.css.info)){if(j=b.processTbody(c,F.eq(i),!0),m=D.columns,g=a(a.map(D.cache[i].normalized,function(a){return a[m].$row.get()})),""===e||E.filter_serversideFiltering)g.removeClass(E.filter_filteredRow).not("."+D.cssChildRow).show();else{if(g=g.not("."+D.cssChildRow),f=g.length,x=E.filter_searchFiltered,o=D.lastSearch||D.$table.data("lastSearch")||[],x)for(v=0;m+1>v;v++)u=d[v]||"",x||(v=m),x=!(!x||!o.length||0!==u.indexOf(o[v]||"")||C.alreadyFiltered.test(u)||/[=\"\|!]/.test(u)||/(>=?\s*-\d)/.test(u)||/(<=?\s*\d)/.test(u)||""!==u&&D.$filters&&D.$filters.eq(v).find("select").length&&!D.$headers.filter('[data-column="'+v+'"]:last').hasClass("filter-match"));for(w=g.not("."+E.filter_filteredRow).length,x&&0===w&&(x=!1),D.debug&&b.log("Searching through "+(x&&f>w?w:"all")+" rows"),(E.filter_$anyMatch&&E.filter_$anyMatch.length||d[D.columns])&&(G.anyMatchFlag=!0,G.anyMatchFilter=E.filter_$anyMatch&&b.filter.getLatestSearch(E.filter_$anyMatch).val()||d[D.columns]||"",D.sortLocaleCompare&&(G.anyMatchFilter=b.replaceAccents(G.anyMatchFilter)),E.filter_defaultFilter&&C.iQuery.test(b.getColumnData(c,E.filter_defaultFilter,D.columns,!0)||"")&&(G.anyMatchFilter=b.filter.defaultFilter(G.anyMatchFilter,b.getColumnData(c,E.filter_defaultFilter,D.columns,!0)),x=!1),G.iAnyMatchFilter=E.filter_ignoreCase&&D.ignoreCase?G.anyMatchFilter.toLocaleLowerCase():G.anyMatchFilter),h=0;f>h;h++)if(G.cacheArray=D.cache[i].normalized[h],n=g[h].className,!(C.child.test(n)||x&&C.filtered.test(n))){if(s=!0,n=g.eq(h).nextUntil("tr:not(."+D.cssChildRow+")"),G.childRowText=n.length&&E.filter_childRows?n.text():"",G.childRowText=E.filter_ignoreCase?G.childRowText.toLocaleLowerCase():G.childRowText,k=g.eq(h).children(),G.anyMatchFlag){if(m=b.filter.multipleColumns(D,E.filter_$anyMatch),G.anyMatch=!0,G.rowArray=k.map(function(c){if(a.inArray(c,m)>-1){var d;return G.parsed[c]?d=G.cacheArray[c]:(d=this?this.getAttribute(D.textAttribute)||this.textContent||a(this).text():"",d=a.trim(E.filter_ignoreCase?d.toLowerCase():d),D.sortLocaleCompare&&(d=b.replaceAccents(d))),d}}).get(),G.filter=G.anyMatchFilter,G.iFilter=G.iAnyMatchFilter,G.exact=G.rowArray.join(" "),G.iExact=E.filter_ignoreCase?G.exact.toLowerCase():G.exact,G.cache=G.cacheArray.slice(0,-1).join(" "),y=null,a.each(b.filter.types,function(b,c){return a.inArray(b,H)<0&&(q=c(D,G),null!==q)?(y=q,!1):void 0}),null!==y)s=y;else if(E.filter_startsWith)for(s=!1,m=D.columns;!s&&m>0;)m--,s=s||0===G.rowArray[m].indexOf(G.iFilter);else s=(G.iExact+G.childRowText).indexOf(G.iFilter)>=0;G.anyMatch=!1}for(m=0;m<D.columns;m++)G.filter=d[m],G.index=m,z=(b.getColumnData(c,E.filter_excludeFilter,m,!0)||"").split(/\s+/),G.filter&&(G.cache=G.cacheArray[m],E.filter_useParsedData||G.parsed[m]?G.exact=G.cache:(u=k[m],r=u?a.trim(u.getAttribute(D.textAttribute)||u.textContent||k.eq(m).text()):"",G.exact=D.sortLocaleCompare?b.replaceAccents(r):r),G.iExact=!C.type.test(typeof G.exact)&&E.filter_ignoreCase?G.exact.toLocaleLowerCase():G.exact,r=s,B=E.filter_columnFilters?D.$filters.add(D.$externalFilters).filter('[data-column="'+m+'"]').find("select option:selected").attr("data-function-name")||"":"",D.sortLocaleCompare&&(G.filter=b.replaceAccents(G.filter)),u=!0,E.filter_defaultFilter&&C.iQuery.test(b.getColumnData(c,E.filter_defaultFilter,m)||"")&&(G.filter=b.filter.defaultFilter(G.filter,b.getColumnData(c,E.filter_defaultFilter,m)),u=!1),G.iFilter=E.filter_ignoreCase?(G.filter||"").toLocaleLowerCase():G.filter,A=b.getColumnData(c,E.filter_functions,m),l=D.$headers.filter('[data-column="'+m+'"]:last'),p=l.hasClass("filter-select"),A||p&&u?A===!0||p?r=l.hasClass("filter-match")?G.iExact.search(G.iFilter)>=0:G.filter===G.exact:"function"==typeof A?r=A(G.exact,G.cache,G.filter,m,g.eq(h)):"function"==typeof A[B||G.filter]&&(r=A[B||G.filter](G.exact,G.cache,G.filter,m,g.eq(h))):(y=null,a.each(b.filter.types,function(b,c){return a.inArray(b,z)<0&&(q=c(D,G),null!==q)?(y=q,!1):void 0}),null!==y?r=y:(G.exact=(G.iExact+G.childRowText).indexOf(b.filter.parseFilter(D,G.iFilter,m,G.parsed[m])),r=!E.filter_startsWith&&G.exact>=0||E.filter_startsWith&&0===G.exact)),s=r?s:!1);g.eq(h).toggle(s).toggleClass(E.filter_filteredRow,!s),n.length&&n.toggleClass(E.filter_filteredRow,!s)}}D.filteredRows+=g.not("."+E.filter_filteredRow).length,D.totalRows+=g.length,b.processTbody(c,j,!1)}D.lastCombinedFilter=e,D.lastSearch=d,D.$table.data("lastSearch",d),E.filter_saveFilters&&b.storage&&b.storage(c,"tablesorter-filters",d),D.debug&&b.benchmark("Completed filter widget search",t),E.filter_initialized&&D.$table.trigger("filterEnd",D),setTimeout(function(){D.$table.trigger("applyWidgets")},0)}},getOptionSource:function(c,d,e){c=a(c)[0];var f,g=c.config,h=g.widgetOptions,i=[],j=!1,k=h.filter_selectSource,l=g.$table.data("lastSearch")||[],m=a.isFunction(k)?!0:b.getColumnData(c,k,d);if(e&&""!==l[d]&&(e=!1),m===!0)j=k(c,d,e);else{if(m instanceof a||"string"===a.type(m)&&m.indexOf("</option>")>=0)return m;a.isArray(m)?j=m:"object"===a.type(k)&&m&&(j=m(c,d,e))}return j===!1&&(j=b.filter.getOptions(c,d,e)),j=a.grep(j,function(b,c){return a.inArray(b,j)===c}),g.$headers.filter('[data-column="'+d+'"]:last').hasClass("filter-select-nosort")?j:(a.each(j,function(a,b){i.push({t:b,p:g.parsers&&g.parsers[d].format(b,c,[],d)})}),f=g.textSorter||"",i.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}),j=[],a.each(i,function(a,b){j.push(b.t)}),j)},getOptions:function(b,c,d){b=a(b)[0];var e,f,g,h,i,j,k=b.config,l=k.widgetOptions,m=k.$table.children("tbody"),n=[];for(f=0;f<m.length;f++)if(!m.eq(f).hasClass(k.cssInfoBlock))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")?n.push(""+i.normalized[e][c]):(j=h.cells[c],j&&n.push(a.trim(j.getAttribute(k.textAttribute)||j.textContent||a(j).text()))));return n},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);