czl-web/js/plugin/datatable-responsive/datatables.responsive.min.js

1 line
8.1 KiB
JavaScript
Raw Normal View History

2025-05-20 13:54:27 +08:00
"use strict";function ResponsiveDatatablesHelper(a,b,c){"string"==typeof a?this.tableElement=$(a):this.tableElement=a,this.api=this.tableElement.dataTable().api(),this.columnIndexes=[],this.columnsShownIndexes=[],this.columnsHiddenIndexes=[],this.currentBreakpoint="",this.lastBreakpoint="",this.lastColumnsHiddenIndexes=[];var d=window.location.pathname.split("/").pop(),e=this.api.settings().context[0];this.tableId=e.sTableId,this.saveState=e.oInit.bStateSave,this.cookieName="DataTablesResponsiveHelper_"+this.tableId+(d?"_"+d:""),this.lastStateExists=!1,this.expandColumn=void 0,this.origBreakpointsDefs=void 0,this.breakpoints={},this.options={"hideEmptyColumnsInRowDetail":!1,"clickOn":"icon","showDetail":null,"hideDetail":null},this.expandIconTemplate='<span class="responsiveExpander"></span>',this.rowTemplate='<tr class="row-detail"><td><ul><!--column item--></ul></td></tr>',this.rowLiTemplate='<li><span class="columnTitle"><!--column title--></span>: <span class="columnValue"><!--column value--></span></li>',this.disabled=!0,this.skipNextWindowsWidthChange=!1,this.init(b,c)}ResponsiveDatatablesHelper.prototype.init=function(a,b){this.origBreakpointsDefs=a,this.initBreakpoints(),this.disable(!1),$.extend(this.options,b)},ResponsiveDatatablesHelper.prototype.initBreakpoints=function(){if(this.saveState&&this.getState(),!this.lastStateExists){var a=[];for(var b in this.origBreakpointsDefs)a.push({"name":b,"upperLimit":this.origBreakpointsDefs[b],"columnsToHide":[]});a.sort(function(a,b){return a.upperLimit-b.upperLimit});for(var c=0,d=0;d<a.length;d++)a[d].lowerLimit=c,c=a[d].upperLimit;a.push({"name":"always","lowerLimit":c,"upperLimit":1/0,"columnsToHide":[]}),this.breakpoints={};var d,e;for(d=0,e=a.length;e>d;d++)this.breakpoints[a[d].name]=a[d];var f=this.api.columns().header(),g=[];for(d=0,e=f.length;e>d;d++)this.api.column(d).visible()&&(this.columnIndexes.push(d),g.push(f[d]));for(var h=0;h<g.length;h++){var i=$(g[h]);"expand"===i.attr("data-class")&&(this.expandColumn=this.columnIndexes[h]);var j=i.attr("data-hide");if(void 0!==j)for(var k=j.split(/,\s*/),d=0;d<k.length;d++){var l=k[d];if("always"===l)for(var b in this.breakpoints)"default"!==this.breakpoints[b].name&&this.breakpoints[b].columnsToHide.push(this.columnIndexes[h]);else void 0!==this.breakpoints[l]&&this.breakpoints[l].columnsToHide.push(this.columnIndexes[h])}}}},ResponsiveDatatablesHelper.prototype.setWindowsResizeHandler=function(a){if(void 0===a&&(a=!0),a){var b=this;$(window).bind("resize",function(){b.respond()})}else $(window).unbind("resize")},ResponsiveDatatablesHelper.prototype.respond=function(){if(!this.disabled){var a=this,b=$(window).width(),c=[];for(var d in this.breakpoints){var e=this.breakpoints[d];(!e.lowerLimit||b>e.lowerLimit)&&(!e.upperLimit||b<=e.upperLimit)&&(this.currentBreakpoint=e.name,c=e.columnsToHide)}var f=!1;if(!this.skipNextWindowsWidthChange)if(0===this.lastBreakpoint.length&&c.length)f=!0;else if(this.lastBreakpoint!=this.currentBreakpoint)f=!0;else if(this.columnsHiddenIndexes.length!==c.length)f=!0;else{var g=this.difference(this.columnsHiddenIndexes,c).length,h=this.difference(c,this.columnsHiddenIndexes).length;f=g+h>0}f&&(this.skipNextWindowsWidthChange=!0,this.columnsHiddenIndexes=c,this.columnsShownIndexes=this.difference(this.columnIndexes,this.columnsHiddenIndexes),this.showHideColumns(),this.lastBreakpoint=this.currentBreakpoint,this.setState(),this.skipNextWindowsWidthChange=!1),this.columnsHiddenIndexes.length?(this.tableElement.addClass("has-columns-hidden"),$("tr.detail-show",this.tableElement).each(function(b,c){var d=$(c);0===d.next(".row-detail").length&&ResponsiveDatatablesHelper.prototype.showRowDetail(a,d)})):(this.tableElement.removeClass("has-columns-hidden"),$("tr.row-detail",this.tableElement).each(function(b){ResponsiveDatatablesHelper.prototype.hideRowDetail(a,$(this).prev())}))}},ResponsiveDatatablesHelper.prototype.showHideColumns=function(){for(var a=0,b=this.columnsShownIndexes.length;b>a;a++)this.api.column(this.columnsShownIndexes[a]).visible(!0);for(var a=0,b=this.columnsHiddenIndexe