17 lines
6.4 KiB
JavaScript
17 lines
6.4 KiB
JavaScript
/*!
|
|
Responsive 1.0.2
|
|
2014 SpryMedia Ltd - datatables.net/license
|
|
*/
|
|
(function(m,o){var l=function(e,i){var h=function(d,a){if(!i.versionCheck||!i.versionCheck("1.10.1"))throw"DataTables Responsive requires DataTables 1.10.1 or newer";this.s={dt:new i.Api(d),columns:[]};this.s.dt.settings()[0].responsive||(a&&"string"===typeof a.details&&(a.details={type:a.details}),this.c=e.extend(!0,{},h.defaults,i.defaults.responsive,a),d.responsive=this,this._constructor())};h.prototype={_constructor:function(){var d=this,a=this.s.dt;a.settings()[0]._responsive=this;e(m).on("resize.dtr orientationchange.dtr",
|
|
a.settings()[0].oApi._fnThrottle(function(){d._resize()}));a.on("destroy.dtr",function(){e(m).off("resize.dtr orientationchange.dtr")});this.c.breakpoints.sort(function(a,c){return a.width<c.width?1:a.width>c.width?-1:0});this._classLogic();this._resizeAuto();this._resize();var c=this.c.details;c.type&&(d._detailsInit(),this._detailsVis(),a.on("column-visibility.dtr",function(){d._detailsVis()}),e(a.table().node()).addClass("dtr-"+c.type))},_columnsVisiblity:function(d){var a=this.s.dt,c=this.s.columns,
|
|
b,f,g=e.map(c,function(a){return a.auto&&null===a.minWidth?!1:!0===a.auto?"-":-1!==e.inArray(d,a.includeIn)}),n=0;b=0;for(f=g.length;b<f;b++)!0===g[b]&&(n+=c[b].minWidth);a=a.table().container().offsetWidth-n;b=0;for(f=g.length;b<f;b++)c[b].control?a-=c[b].minWidth:"-"===g[b]&&(g[b]=0>a-c[b].minWidth?!1:!0,a-=c[b].minWidth);a=!1;b=0;for(f=c.length;b<f;b++)if(!c[b].control&&!c[b].never&&!g[b]){a=!0;break}b=0;for(f=c.length;b<f;b++)c[b].control&&(g[b]=a);-1===e.inArray(!0,g)&&(g[0]=!0);return g},_classLogic:function(){var d=
|
|
this,a=this.c.breakpoints,c=this.s.dt.columns().eq(0).map(function(a){a=this.column(a).header().className;return{className:a,includeIn:[],auto:!1,control:!1,never:a.match(/\bnever\b/)?!0:!1}}),b=function(a,b){var d=c[a].includeIn;-1===e.inArray(b,d)&&d.push(b)},f=function(f,e,k,j){if(k)if("max-"===k){j=d._find(e).width;e=0;for(k=a.length;e<k;e++)a[e].width<=j&&b(f,a[e].name)}else if("min-"===k){j=d._find(e).width;e=0;for(k=a.length;e<k;e++)a[e].width>=j&&b(f,a[e].name)}else{if("not-"===k){e=0;for(k=
|
|
a.length;e<k;e++)-1===a[e].name.indexOf(j)&&b(f,a[e].name)}}else c[f].includeIn.push(e)};c.each(function(b,c){for(var d=b.className.split(" "),j=!1,h=0,l=d.length;h<l;h++){var i=e.trim(d[h]);if("all"===i){j=!0;b.includeIn=e.map(a,function(a){return a.name});return}if("none"===i||"never"===i){j=!0;return}if("control"===i){j=!0;b.control=!0;return}e.each(a,function(a,b){var e=b.name.split("-"),d=i.match(RegExp("(min\\-|max\\-|not\\-)?("+e[0]+")(\\-[_a-zA-Z0-9])?"));d&&(j=!0,d[2]===e[0]&&d[3]==="-"+
|
|
e[1]?f(c,b.name,d[1],d[2]+d[3]):d[2]===e[0]&&!d[3]&&f(c,b.name,d[1],d[2]))})}j||(b.auto=!0)});this.s.columns=c},_detailsInit:function(){var d=this,a=this.s.dt,c=this.c.details;"inline"===c.type&&(c.target="td:first-child");var b=c.target;e(a.table().body()).on("click","string"===typeof b?b:"td",function(){if(e(a.table().node()).hasClass("collapsed")&&a.row(e(this).closest("tr")).length){if(typeof b==="number"){var c=b<0?a.columns().eq(0).length+b:b;if(a.cell(this).index().column!==c)return}c=a.row(e(this).closest("tr"));
|
|
if(c.child.isShown()){c.child(false);e(c.node()).removeClass("parent")}else{var g=d.c.details.renderer(a,c[0]);c.child(g,"child").show();e(c.node()).addClass("parent")}}})},_detailsVis:function(){var d=this,a=this.s.dt,c=a.columns().indexes().filter(function(b){var c=a.column(b);return c.visible()?null:e(c.header()).hasClass("never")?null:b}),b=!0;if(0===c.length||1===c.length&&this.s.columns[c[0]].control)b=!1;b?(e(a.table().node()).addClass("collapsed"),a.rows().eq(0).each(function(b){b=a.row(b);
|
|
if(b.child()){var c=d.c.details.renderer(a,b[0]);!1===c?b.child.hide():b.child(c,"child").show()}})):(e(a.table().node()).removeClass("collapsed"),a.rows().eq(0).each(function(b){a.row(b).child.hide()}))},_find:function(d){for(var a=this.c.breakpoints,c=0,b=a.length;c<b;c++)if(a[c].name===d)return a[c]},_resize:function(){for(var d=this.s.dt,a=e(m).width(),c=this.c.breakpoints,b=c[0].name,f=c.length-1;0<=f;f--)if(a<=c[f].width){b=c[f].name;break}var g=this._columnsVisiblity(b);d.columns().eq(0).each(function(a,
|
|
b){d.column(a).visible(g[b])})},_resizeAuto:function(){var d=this.s.dt,a=this.s.columns;if(this.c.auto&&-1!==e.inArray(!0,e.map(a,function(a){return a.auto}))){d.table().node();var c=d.table().node().cloneNode(!1),b=e(d.table().header().cloneNode(!1)).appendTo(c),f=e(d.table().body().cloneNode(!1)).appendTo(c);d.rows({page:"current"}).indexes().flatten().each(function(a){var b=d.row(a).node().cloneNode(!0);d.columns(":hidden").flatten().length&&e(b).append(d.cells(a,":hidden").nodes().to$().clone());
|
|
e(b).appendTo(f)});var g=d.columns().header().to$().clone(!1).wrapAll("tr").appendTo(b),c=e("<div/>").css({width:1,height:1,overflow:"hidden"}).append(c).insertBefore(d.table().node());d.columns().eq(0).each(function(b){a[b].minWidth=g[b].offsetWidth||0});c.remove()}}};h.breakpoints=[{name:"desktop",width:Infinity},{name:"tablet-l",width:1024},{name:"tablet-p",width:768},{name:"mobile-l",width:480},{name:"mobile-p",width:320}];h.defaults={breakpoints:h.breakpoints,auto:!0,details:{renderer:function(d,
|
|
a){var c=d.cells(a,":hidden").eq(0).map(function(a){var c=e(d.column(a.column).header()),a=d.cell(a).index();if(c.hasClass("control")||c.hasClass("never"))return"";var g=d.settings()[0],g=g.oApi._fnGetCellData(g,a.row,a.column,"display");return'<li data-dtr-index="'+a.column+'"><span class="dtr-title">'+c.text()+':</span> <span class="dtr-data">'+g+"</span></li>"}).toArray().join("");return c?e('<ul data-dtr-index="'+a+'"/>').append(c):!1},target:0,type:"inline"}};var l=e.fn.dataTable.Api;l.register("responsive()",
|
|
function(){return this});l.register("responsive.recalc()",function(){this.iterator("table",function(d){d._responsive&&(d._responsive._resizeAuto(),d._responsive._resize())})});l.register("responsive.index()",function(d){d=e(d);return{column:d.data("dtr-index"),row:d.parent().data("dtr-index")}});h.version="1.0.2";e.fn.dataTable.Responsive=h;e.fn.DataTable.Responsive=h;e(o).on("init.dt.dtr",function(d,a){if(e(a.nTable).hasClass("responsive")||e(a.nTable).hasClass("dt-responsive")||a.oInit.responsive||
|
|
i.defaults.responsive){var c=a.oInit.responsive;!1!==c&&new h(a,e.isPlainObject(c)?c:{})}});return h};"function"===typeof define&&define.amd?define(["jquery","datatables"],l):"object"===typeof exports?l(require("jquery"),require("datatables")):jQuery&&!jQuery.fn.dataTable.Responsive&&l(jQuery,jQuery.fn.dataTable)})(window,document);
|