_Layout.js 4.0 KB

12345678
  1. /*
  2. Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
  3. Available via Academic Free License >= 2.1 OR the modified BSD license.
  4. see: http://dojotoolkit.org/license for details
  5. */
  6. if(!dojo._hasResource["dojox.grid._Layout"]){dojo._hasResource["dojox.grid._Layout"]=true;dojo.provide("dojox.grid._Layout");dojo.require("dojox.grid.cells");dojo.require("dojox.grid._RowSelector");dojo.declare("dojox.grid._Layout",null,{constructor:function(_1){this.grid=_1;},cells:[],structure:null,defaultWidth:"6em",moveColumn:function(_2,_3,_4,_5,_6){var _7=this.structure[_2].cells[0];var _8=this.structure[_3].cells[0];var _9=null;var _a=0;var _b=0;for(var i=0,c;c=_7[i];i++){if(c.index==_4){_a=i;break;}}_9=_7.splice(_a,1)[0];_9.view=this.grid.views.views[_3];for(i=0,c=null;c=_8[i];i++){if(c.index==_5){_b=i;break;}}if(!_6){_b+=1;}_8.splice(_b,0,_9);var _c=this.grid.getCell(this.grid.getSortIndex());if(_c){_c._currentlySorted=this.grid.getSortAsc();}this.cells=[];_4=0;var v;for(i=0;v=this.structure[i];i++){for(var j=0,cs;cs=v.cells[j];j++){for(var k=0;c=cs[k];k++){c.index=_4;this.cells.push(c);if("_currentlySorted" in c){var si=_4+1;si*=c._currentlySorted?1:-1;this.grid.sortInfo=si;delete c._currentlySorted;}_4++;}}}this.grid.setupHeaderMenu();},setColumnVisibility:function(_d,_e){var _f=this.cells[_d];if(_f.hidden==_e){_f.hidden=!_e;var v=_f.view,w=v.viewWidth;if(w&&w!="auto"){v._togglingColumn=dojo.marginBox(_f.getHeaderNode()).w||0;}v.update();return true;}else{return false;}},addCellDef:function(_10,_11,_12){var _13=this;var _14=function(_15){var w=0;if(_15.colSpan>1){w=0;}else{w=_15.width||_13._defaultCellProps.width||_13.defaultWidth;if(!isNaN(w)){w=w+"em";}}return w;};var _16={grid:this.grid,subrow:_10,layoutIndex:_11,index:this.cells.length};if(_12&&_12 instanceof dojox.grid.cells._Base){var _17=dojo.clone(_12);_16.unitWidth=_14(_17._props);_17=dojo.mixin(_17,this._defaultCellProps,_12._props,_16);return _17;}var _18=_12.type||this._defaultCellProps.type||dojox.grid.cells.Cell;_16.unitWidth=_14(_12);return new _18(dojo.mixin({},this._defaultCellProps,_12,_16));},addRowDef:function(_19,_1a){var _1b=[];var _1c=0,_1d=0,_1e=true;for(var i=0,def,_1f;(def=_1a[i]);i++){_1f=this.addCellDef(_19,i,def);_1b.push(_1f);this.cells.push(_1f);if(_1e&&_1f.relWidth){_1c+=_1f.relWidth;}else{if(_1f.width){var w=_1f.width;if(typeof w=="string"&&w.slice(-1)=="%"){_1d+=window.parseInt(w,10);}else{if(w=="auto"){_1e=false;}}}}}if(_1c&&_1e){dojo.forEach(_1b,function(_20){if(_20.relWidth){_20.width=_20.unitWidth=((_20.relWidth/_1c)*(100-_1d))+"%";}});}return _1b;},addRowsDef:function(_21){var _22=[];if(dojo.isArray(_21)){if(dojo.isArray(_21[0])){for(var i=0,row;_21&&(row=_21[i]);i++){_22.push(this.addRowDef(i,row));}}else{_22.push(this.addRowDef(0,_21));}}return _22;},addViewDef:function(_23){this._defaultCellProps=_23.defaultCell||{};if(_23.width&&_23.width=="auto"){delete _23.width;}return dojo.mixin({},_23,{cells:this.addRowsDef(_23.rows||_23.cells)});},setStructure:function(_24){this.fieldIndex=0;this.cells=[];var s=this.structure=[];if(this.grid.rowSelector){var sel={type:dojox._scopeName+".grid._RowSelector"};if(dojo.isString(this.grid.rowSelector)){var _25=this.grid.rowSelector;if(_25=="false"){sel=null;}else{if(_25!="true"){sel["width"]=_25;}}}else{if(!this.grid.rowSelector){sel=null;}}if(sel){s.push(this.addViewDef(sel));}}var _26=function(def){return ("name" in def||"field" in def||"get" in def);};var _27=function(def){if(dojo.isArray(def)){if(dojo.isArray(def[0])||_26(def[0])){return true;}}return false;};var _28=function(def){return (def!==null&&dojo.isObject(def)&&("cells" in def||"rows" in def||("type" in def&&!_26(def))));};if(dojo.isArray(_24)){var _29=false;for(var i=0,st;(st=_24[i]);i++){if(_28(st)){_29=true;break;}}if(!_29){s.push(this.addViewDef({cells:_24}));}else{for(i=0;(st=_24[i]);i++){if(_27(st)){s.push(this.addViewDef({cells:st}));}else{if(_28(st)){s.push(this.addViewDef(st));}}}}}else{if(_28(_24)){s.push(this.addViewDef(_24));}}this.cellCount=this.cells.length;this.grid.setupHeaderMenu();}});}