/*! * ZUI: 数据表格 - v1.10.0 - 2021-11-04 * http://openzui.com * GitHub: https://github.com/easysoft/zui.git * Copyright (c) 2021 cnezsoft.com; Licensed MIT */ !function(a){"use strict";var t="zui.datatable",e=a.zui.store,s=function(e,s){this.name=t,this.$=a(e),this.isTable="TABLE"===this.$[0].tagName,this.firstShow=!0,this.isTable?(this.$table=this.$,this.id="datatable-"+(this.$.attr("id")||a.zui.uuid())):(this.$datatable=this.$.addClass("datatable"),this.$.attr("id")?this.id=this.$.attr("id"):(this.id="datatable-"+a.zui.uuid(),this.$.attr("id",this.id))),this.getOptions(s),this.load(),this.callEvent("ready")};s.DEFAULTS={checkable:!1,checkByClickRow:!0,checkedClass:"active",checkboxName:null,selectable:!0,sortable:!1,storage:!0,fixedHeader:!1,fixedHeaderOffset:0,fixedLeftWidth:"30%",fixedRightWidth:"30%",flexHeadDrag:!0,scrollPos:"in",rowHover:!0,colHover:!0,hoverClass:"hover",colHoverClass:"col-hover",fixCellHeight:!0,mergeRows:!1,minColWidth:20,minFixedLeftWidth:200,minFixedRightWidth:200,minFlexAreaWidth:200},s.prototype.getOptions=function(t){var e=this.$;t=a.extend({},s.DEFAULTS,this.$.data(),t),t.tableClass=t.tableClass||"",t.tableClass=" "+t.tableClass+" table-datatable",a.each(["bordered","condensed","striped","condensed","fixed"],function(a,s){s="table-"+s,e.hasClass(s)&&(t.tableClass+=" "+s)}),(e.hasClass("table-hover")||t.rowHover)&&(t.tableClass+=" table-hover"),t.checkable&&a.fn.selectable||(t.selectable=!1),this.options=t},s.prototype.load=function(e){var s,l=this.options;if("function"==typeof e)e=e(this.data,this),e.keepSort=!0;else if(a.isPlainObject(e))this.data=e;else if("string"==typeof e){var d=a(e);d.length&&(this.$table=d.first(),this.$table.data(t,this),this.isTable=!0),e=null}else e=l.data;if(!e){if(!this.isTable)throw new Error("No data available!");e={cols:[],rows:[]},s=e.cols;var i,o,r,n,c,h,f=e.rows,p=this.$table;p.children("thead").children("tr:first").children("th").each(function(){o=a(this),s.push(a.extend({text:o.html(),flex:o.hasClass("flex-col"),width:"auto",cssClass:o.attr("class"),css:o.attr("style"),type:"string",ignore:o.hasClass("ignore"),sort:!o.hasClass("sort-disabled"),mergeRows:o.attr("merge-rows"),title:o.attr("title")},o.data()))}),p.children("tbody").children("tr").each(function(){r=a(this),c=a.extend({data:[],checked:!1,cssClass:r.attr("class"),css:r.attr("style"),id:r.attr("id")},r.data()),r.children("td").each(function(){if(n=a(this),h=n.attr("colspan")||1,c.data.push(a.extend({cssClass:n.attr("class"),css:n.attr("style"),text:n.html(),colSpan:h,title:n.attr("title")},n.data())),h>1)for(i=1;i').append(b))}e.flexStart=-1,e.flexEnd=-1,s=e.cols,e.colsLength=s.length;for(var i=0;i=0,e.fixedRight=e.flexEnd>=0&&e.flexEnd0,e.flexStart<0&&e.flexEnd<0&&(e.fixedLeft=!0,e.flexStart=e.colsLength,e.flexEnd=e.colsLength),this.data=e,this.callEvent("afterLoad",{data:e}),this.render()},s.prototype.render=function(){var e,s,l,d,i=this,o=i.$datatable||(i.isTable?a('
'):i.$datatable),r=i.options,n=i.data,c=i.data.cols,h=i.data.rows,f=r.checkable,p='
',b='
';o.children(".datatable-head, .datatable-rows, .scroll-wrapper").remove(),o.toggleClass("sortable",r.sortable);var g,v,u,w=a('
');for(e=a(''),l=a(''),d=a(''),s=0;s=n.flexStart&&s<=n.flexEnd?d:l,0===s&&f&&g.append(''),u.ignore||(v=a(''),v.toggleClass("sort-down","down"===u.sort).toggleClass("sort-up","up"===u.sort).toggleClass("sort-disabled",u.sort===!1),v.addClass(u.cssClass).addClass(u.colClass).html(u.text).attr({"data-index":s,"data-type":u.type,style:u.css,title:u.title}).css("width",u.width),g.append(v));var x;n.fixedLeft&&(x=a(b),x.addClass("fixed-left").find("table").addClass(r.tableClass).find("thead").append(e),w.append(x)),n.flexArea&&(x=a(b),x.addClass("flexarea").find(".datatable-wrapper").append('
').find("table").addClass(r.tableClass).find("thead").append(d),w.append(x)),n.fixedRight&&(x=a(b),x.addClass("fixed-right").find("table").addClass(r.tableClass).find("thead").append(l),w.append(x)),o.append(w);var C,m,k,y,$,S,A,E,T=a('
'),L=h.length;e=a(""),l=a(""),d=a("");for(var H=0;H'),C.addClass(S.cssClass).toggleClass(r.checkedClass,!!S.checked).attr({"data-index":H,"data-id":S.id}),m=C.clone().addClass("datatable-row-flex"),k=C.clone().addClass("datatable-row-right"),C.addClass("datatable-row-left"),E=S.data.length,s=0;s0&&A.empty||(g=s=n.flexStart&&s<=n.flexEnd?m:k,0===s&&f&&($=a(''),r.checkboxName&&$.append(''),g.append($)),c[s].ignore||(a.isPlainObject(A)?(A.row=H,A.index=s):A={text:A,row:H,index:s},S.data[s]=A,y=a(''),y.html(A.text).addClass(A.cssClass).addClass(c[s].colClass).attr("colspan",A.colSpan).attr({"data-row":H,"data-index":s,"data-flex":!1,"data-type":c[s].type,style:A.css,title:A.title||""}).css("width",c[s].width),g.append(y)));e.append(C),d.append(m),l.append(k)}var R;n.fixedLeft&&(R=a(p),R.addClass("fixed-left").find("table").addClass(r.tableClass).append(e),T.append(R)),n.flexArea&&(R=a(p),R.addClass("flexarea").find(".datatable-wrapper").append('
').find("table").addClass(r.tableClass).append(d),T.append(R)),n.fixedRight&&(R=a(p),R.addClass("fixed-right").find("table").addClass(r.tableClass).append(l),T.append(R)),o.append(T),n.flexArea&&o.append('
');var z=o.children(".datatable-footer").detach();n.footer?(o.append(a('