You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
27 lines
5.8 KiB
JavaScript
27 lines
5.8 KiB
JavaScript
/*!
|
|
Copyright 2018 SpryMedia Ltd.
|
|
|
|
This source file is free software, available under the following license:
|
|
MIT license - http://datatables.net/license/mit
|
|
|
|
This source file is distributed in the hope that it will be useful, but
|
|
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
|
or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.
|
|
|
|
For details please refer to: http://www.datatables.net
|
|
SearchPane 0.0.2
|
|
2018 SpryMedia Ltd - datatables.net/license
|
|
*/
|
|
var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.findInternal=function(a,c,d){a instanceof String&&(a=String(a));for(var f=a.length,e=0;e<f;e++){var m=a[e];if(c.call(d,m,e,a))return{i:e,v:m}}return{i:-1,v:void 0}};$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.SIMPLE_FROUND_POLYFILL=!1;
|
|
$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(a,c,d){a!=Array.prototype&&a!=Object.prototype&&(a[c]=d.value)};$jscomp.getGlobal=function(a){return"undefined"!=typeof window&&window===a?a:"undefined"!=typeof global&&null!=global?global:a};$jscomp.global=$jscomp.getGlobal(this);
|
|
$jscomp.polyfill=function(a,c,d,f){if(c){d=$jscomp.global;a=a.split(".");for(f=0;f<a.length-1;f++){var e=a[f];e in d||(d[e]={});d=d[e]}a=a[a.length-1];f=d[a];c=c(f);c!=f&&null!=c&&$jscomp.defineProperty(d,a,{configurable:!0,writable:!0,value:c})}};$jscomp.polyfill("Array.prototype.find",function(a){return a?a:function(a,d){return $jscomp.findInternal(this,a,d).v}},"es6","es3");
|
|
(function(a){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(c){return a(c,window,document)}):"object"===typeof exports?module.exports=function(c,d){c||(c=window);d&&d.fn.dataTable||(d=require("datatables.net")(c,d).$);return a(d,c,c.document)}:a(jQuery,window,document)})(function(a,c,d,f){function e(b,h){var g=this;b=new m.Api(b);this.classes=a.extend(!0,{},e.classes);this.dom={container:a("<div/>").addClass(this.classes.container)};this.c=a.extend(!0,{},e.defaults,
|
|
h);this.s={dt:b};b.settings()[0].searchPane=this;b.columns(this.c.columns).eq(0).each(function(a){g._pane(a)});a(this.dom.container).on("click","li",function(){g._toggle(this)}).on("click","button."+this.classes.clear,function(){g._clear(a(this).closest("div."+g.classes.pane.container))});this._attach()}var m=a.fn.dataTable;a.extend(e.prototype,{rebuild:function(){var a=this;this.dom.container.empty();this.s.dt.columns(this.c.columns).eq(0).each(function(b){a._pane(b)})},_attach:function(){var b=
|
|
this.c.container;b="function"===typeof b?b(this.s.dt):b;"prepend"===this.c.insert?a(this.dom.container).prependTo(b):a(this.dom.container).appendTo(b)},_binData:function(a){for(var b={},g=0,d=a.length;g<d;g++){var k=a[g];k&&(b[k]?b[k]++:b[k]=1)}return b},_clear:function(a){var b=this.classes,g=b.item.selected;a.find("li."+g).removeClass(g);a.removeClass(b.pane.active);this.s.dt.column(a.data("column")).search("").draw()},_pane:function(b){var h=this.classes,g=h.item;h=h.pane;var d=this.s.dt,k=d.column(b),
|
|
c=this._getOptions(b),e=a("<ul/>"),l="function"===typeof c.options?c.options(d,b):c.options?new m.Api(null,c.options):k.data();d=this._binData(l.flatten());if(!(this._variance(d)<this.c.threshold)){c=(c=k.search())?c.substr(1,c.length-2).split("|"):[];l=l.unique().sort().toArray();for(var f=0,p=l.length;f<p;f++)if(l[f]){var n=a("<li/>").html('<span class="'+g.label+'">'+l[f]+"</span>").data("filter",l[f]).append(a("<span/>").addClass(g.count).html(d[l[f]]));if(c.length){var q=l[f].replace?a.fn.dataTable.util.escapeRegex(l[f]):
|
|
l[f];-1!==a.inArray(q,c)&&n.addClass(g.selected)}e.append(n)}g=a("<div/>").data("column",b).addClass(h.container).addClass(c.length?h.active:"").append(a('<button type="button">×</button>').addClass(this.classes.clear)).append(a("<div/>").addClass(h.title).html(a(k.header()).text())).append(a("<div/>").addClass(h.scroller).append(e));h=this.dom.container;k=h.children().map(function(){if(a(this).data("column")==b)return this});k.length?k.replaceWith(g):a(h).append(g)}},_getOptions:function(a){return this.s.dt.settings()[0].aoColumns[a].searchPane||
|
|
{}},_toggle:function(b){var c=this.classes,g=c.item.selected,d=this.s.dt;b=a(b);var e=b.closest("div."+c.pane.container),f=e.data("column"),m=this._getOptions(f);b.toggleClass(g,!b.hasClass(g));b=e.find("li."+g);0===b.length?(e.removeClass(c.pane.active),d.column(f).search("").draw()):"any"===m.match?(e.addClass(c.pane.active),d.column(f).search("("+a.map(b,function(b){b=a(b).data("filter").toString();b=a("<div/>").html(b).text();return a.fn.dataTable.util.escapeRegex(b)}).join("|")+")",!0,!1).draw()):
|
|
(e.addClass(c.pane.active),d.column(f).search("^("+a.map(b,function(b){b=a(b).data("filter").toString();b=a("<div/>").html(b).text();return a.fn.dataTable.util.escapeRegex(b)}).join("|")+")$",!0,!1).draw())},_variance:function(b){b=a.map(b,function(a,b){return a});for(var c=b.length,g=0,d=0,e=c;d<e;d++)g+=b[d];g/=c;var f=0;d=0;for(e=c;d<e;d++)f+=Math.pow(g-b[d],2);return f/(c-1)}});e.classes={container:"dt-searchPanes",clear:"clear",pane:{active:"filtering",container:"pane",title:"title",scroller:"scroller"},
|
|
item:{selected:"selected",label:"label",count:"count"}};e.defaults={container:function(a){return a.table().container()},columns:f,insert:"prepend",threshold:.5};e.version="0.0.2";a.fn.dataTable.SearchPanes=e;a.fn.DataTable.SearchPanes=e;m.Api.register("searchPanes.rebuild()",function(){return this.iterator("table",function(a){a.searchPane&&a.searchPane.rebuild()})});m.Api.register("column().paneOptions()",function(a){return this.iterator("column",function(b,c){c=b.aoColumns[c];c.searchPane||(c.searchPane=
|
|
{});c.searchPane.options=a;b.searchPane&&b.searchPane.rebuild()})});a(d).on("init.dt",function(b,c,d){"dt"===b.namespace&&(b=c.oInit.searchPane,d=m.defaults.searchPane,b||d)&&(d=a.extend({},b,d),!1!==b&&new e(c,d))})});
|