CompoundColumns.js
2.39 KB
//>>built
define(["dojo/_base/lang","dojo/_base/declare","dojo/sniff","dojo/query","../util/misc"],function(r,t,v,p,u){return t(null,{configStructure:function(){function a(b,n,l,k){var f=0,m=function(){},q,h;u.each(b,function(d,p){"string"===typeof d&&(d={label:d});b instanceof Array||d.field||(d.field=p);h=(q=d.children)&&!1!==d.showChildHeaders;d.parentColumn=k;q?null==d.id?d.id=(k&&k.id||n-1)+"-"+g.length:k&&k.id&&(d.id=k.id+"-"+d.id):(e.push(d),g.push(r.delegate(d,{renderHeaderCell:m})),f++);h||(d=r.delegate(d,
{rowSpan:-n}));q&&(f+=d.colSpan=a(q,n+1,h,d));l&&(c[n]||(c[n]=[])).push(d)},this);return f}var b=this.subRows&&this.subRows[0]||this.columns,c=[[]],g=c[0],e=[];c[0].className="dgrid-spacer-row";a(b,1,!0);var b=c.length,l,f,h,m;for(l=0;l<b;l++)for(h=c[l],f=0;f<h.length;f++)m=h[f],1>m.rowSpan&&(m.rowSpan+=b);e=[e];e.headerRows=c;this.subRows=e;this.inherited(arguments)},renderHeader:function(){var a,b=this.subRows[0],c=this.subRows.headerRows[0];this.inherited(arguments);for(a=b.length;a--;)b[a].headerNode=
c[a].headerNode},_findSortArrowParent:function(){var a=this.inherited(arguments),b=p(".dgrid-spacer-row",this.headerNode)[0];if(a&&b.contains(a))return a=a.columnId,a=p(".dgrid-column-"+a,this.headerNode),a[a.length-1]},_configColumn:function(a,b,c){var g=a.parentColumn,e=a.id;g&&(e=0===e.indexOf(c)?e.substring(c.length):e,c=g.id+"-",e=a.id=c+e);this.inherited(arguments,[a,b,c])},cell:function(a,b){if("object"!==typeof b){var c=this.column(b);c&&(b=c.id)}return this.inherited(arguments,[a,b])},column:function(a){var b=
this.inherited(arguments);if(null==b&&"object"!==typeof a){var c="-"+a,g=c.length,e;for(e in this.columns)if(-1!==e.indexOf(c,e.length-g))return this.columns[e]}return b},_updateCompoundHiddenStates:function(a,b){a=this.columns[a];var c;if(!a||a.hidden!==b)for(;a&&a.parentColumn;){a=a.parentColumn;if(c=a.colSpan+=b?-1:1)a.headerNode.colSpan=c;1!==c||b?!c&&b&&this._hideColumn(a.id):this._showColumn(a.id)}},_hideColumn:function(a){var b=this;this._updateCompoundHiddenStates(a,!0);this.inherited(arguments);
this.headerNode.style.display="none";setTimeout(function(){b.headerNode.style.display="";b.resize()},0)},_showColumn:function(a){this._updateCompoundHiddenStates(a,!1);this.inherited(arguments)},_getResizedColumnWidths:function(){var a=0,b=this.columns,c;for(c in b)a+=b[c].headerNode.offsetWidth;return{totalWidth:a,lastColId:this.subRows[0][this.subRows[0].length-1].id}}})});