root / trunk / web / dojo / dojox / grid / _Layout.js
History | View | Annotate | Download (4.18 KB)
| 1 |
/*
|
|---|---|
| 2 |
Copyright (c) 2004-2010, 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 |
|
| 7 |
|
| 8 |
if(!dojo._hasResource["dojox.grid._Layout"]){ |
| 9 |
dojo._hasResource["dojox.grid._Layout"]=true; |
| 10 |
dojo.provide("dojox.grid._Layout");
|
| 11 |
dojo.require("dojox.grid.cells");
|
| 12 |
dojo.require("dojox.grid._RowSelector");
|
| 13 |
dojo.declare("dojox.grid._Layout",null,{constructor:function(_1){ |
| 14 |
this.grid=_1;
|
| 15 |
},cells:[],structure:null,defaultWidth:"6em",moveColumn:function(_2,_3,_4,_5,_6){ |
| 16 |
var _7=this.structure[_2].cells[0]; |
| 17 |
var _8=this.structure[_3].cells[0]; |
| 18 |
var _9=null; |
| 19 |
var _a=0; |
| 20 |
var _b=0; |
| 21 |
for(var i=0,c;c=_7[i];i++){ |
| 22 |
if(c.index==_4){
|
| 23 |
_a=i; |
| 24 |
break;
|
| 25 |
} |
| 26 |
} |
| 27 |
_9=_7.splice(_a,1)[0]; |
| 28 |
_9.view=this.grid.views.views[_3];
|
| 29 |
for(i=0,c=null;c=_8[i];i++){ |
| 30 |
if(c.index==_5){
|
| 31 |
_b=i; |
| 32 |
break;
|
| 33 |
} |
| 34 |
} |
| 35 |
if(!_6){
|
| 36 |
_b+=1;
|
| 37 |
} |
| 38 |
_8.splice(_b,0,_9);
|
| 39 |
var _c=this.grid.getCell(this.grid.getSortIndex()); |
| 40 |
if(_c){
|
| 41 |
_c._currentlySorted=this.grid.getSortAsc();
|
| 42 |
} |
| 43 |
this.cells=[];
|
| 44 |
_4=0;
|
| 45 |
var v;
|
| 46 |
for(i=0;v=this.structure[i];i++){ |
| 47 |
for(var j=0,cs;cs=v.cells[j];j++){ |
| 48 |
for(var k=0;c=cs[k];k++){ |
| 49 |
c.index=_4; |
| 50 |
this.cells.push(c);
|
| 51 |
if("_currentlySorted" in c){ |
| 52 |
var si=_4+1; |
| 53 |
si*=c._currentlySorted?1:-1; |
| 54 |
this.grid.sortInfo=si;
|
| 55 |
delete c._currentlySorted;
|
| 56 |
} |
| 57 |
_4++; |
| 58 |
} |
| 59 |
} |
| 60 |
} |
| 61 |
this.grid.setupHeaderMenu();
|
| 62 |
},setColumnVisibility:function(_d,_e){ |
| 63 |
var _f=this.cells[_d]; |
| 64 |
if(_f.hidden==_e){
|
| 65 |
_f.hidden=!_e; |
| 66 |
var v=_f.view,w=v.viewWidth;
|
| 67 |
if(w&&w!="auto"){ |
| 68 |
v._togglingColumn=dojo.marginBox(_f.getHeaderNode()).w||0;
|
| 69 |
} |
| 70 |
v.update(); |
| 71 |
return true; |
| 72 |
}else{
|
| 73 |
return false; |
| 74 |
} |
| 75 |
},addCellDef:function(_10,_11,_12){ |
| 76 |
var _13=this; |
| 77 |
var _14=function(_15){ |
| 78 |
var w=0; |
| 79 |
if(_15.colSpan>1){ |
| 80 |
w=0;
|
| 81 |
}else{
|
| 82 |
w=_15.width||_13._defaultCellProps.width||_13.defaultWidth; |
| 83 |
if(!isNaN(w)){
|
| 84 |
w=w+"em";
|
| 85 |
} |
| 86 |
} |
| 87 |
return w;
|
| 88 |
}; |
| 89 |
var _16={grid:this.grid,subrow:_10,layoutIndex:_11,index:this.cells.length}; |
| 90 |
if(_12&&_12 instanceof dojox.grid.cells._Base){ |
| 91 |
var _17=dojo.clone(_12);
|
| 92 |
_16.unitWidth=_14(_17._props); |
| 93 |
_17=dojo.mixin(_17,this._defaultCellProps,_12._props,_16);
|
| 94 |
return _17;
|
| 95 |
} |
| 96 |
var _18=_12.type||this._defaultCellProps.type||dojox.grid.cells.Cell; |
| 97 |
_16.unitWidth=_14(_12); |
| 98 |
return new _18(dojo.mixin({},this._defaultCellProps,_12,_16)); |
| 99 |
},addRowDef:function(_19,_1a){ |
| 100 |
var _1b=[];
|
| 101 |
var _1c=0,_1d=0,_1e=true; |
| 102 |
for(var i=0,def,_1f;(def=_1a[i]);i++){ |
| 103 |
_1f=this.addCellDef(_19,i,def);
|
| 104 |
_1b.push(_1f); |
| 105 |
this.cells.push(_1f);
|
| 106 |
if(_1e&&_1f.relWidth){
|
| 107 |
_1c+=_1f.relWidth; |
| 108 |
}else{
|
| 109 |
if(_1f.width){
|
| 110 |
var w=_1f.width;
|
| 111 |
if(typeof w=="string"&&w.slice(-1)=="%"){ |
| 112 |
_1d+=window.parseInt(w,10);
|
| 113 |
}else{
|
| 114 |
if(w=="auto"){ |
| 115 |
_1e=false;
|
| 116 |
} |
| 117 |
} |
| 118 |
} |
| 119 |
} |
| 120 |
} |
| 121 |
if(_1c&&_1e){
|
| 122 |
dojo.forEach(_1b,function(_20){
|
| 123 |
if(_20.relWidth){
|
| 124 |
_20.width=_20.unitWidth=((_20.relWidth/_1c)*(100-_1d))+"%"; |
| 125 |
} |
| 126 |
}); |
| 127 |
} |
| 128 |
return _1b;
|
| 129 |
},addRowsDef:function(_21){ |
| 130 |
var _22=[];
|
| 131 |
if(dojo.isArray(_21)){
|
| 132 |
if(dojo.isArray(_21[0])){ |
| 133 |
for(var i=0,row;_21&&(row=_21[i]);i++){ |
| 134 |
_22.push(this.addRowDef(i,row));
|
| 135 |
} |
| 136 |
}else{
|
| 137 |
_22.push(this.addRowDef(0,_21)); |
| 138 |
} |
| 139 |
} |
| 140 |
return _22;
|
| 141 |
},addViewDef:function(_23){ |
| 142 |
this._defaultCellProps=_23.defaultCell||{};
|
| 143 |
if(_23.width&&_23.width=="auto"){ |
| 144 |
delete _23.width;
|
| 145 |
} |
| 146 |
return dojo.mixin({},_23,{cells:this.addRowsDef(_23.rows||_23.cells)}); |
| 147 |
},setStructure:function(_24){ |
| 148 |
this.fieldIndex=0; |
| 149 |
this.cells=[];
|
| 150 |
var s=this.structure=[]; |
| 151 |
if(this.grid.rowSelector){ |
| 152 |
var sel={type:dojox._scopeName+".grid._RowSelector"}; |
| 153 |
if(dojo.isString(this.grid.rowSelector)){ |
| 154 |
var _25=this.grid.rowSelector; |
| 155 |
if(_25=="false"){ |
| 156 |
sel=null;
|
| 157 |
}else{
|
| 158 |
if(_25!="true"){ |
| 159 |
sel["width"]=_25;
|
| 160 |
} |
| 161 |
} |
| 162 |
}else{
|
| 163 |
if(!this.grid.rowSelector){ |
| 164 |
sel=null;
|
| 165 |
} |
| 166 |
} |
| 167 |
if(sel){
|
| 168 |
s.push(this.addViewDef(sel));
|
| 169 |
} |
| 170 |
} |
| 171 |
var _26=function(def){ |
| 172 |
return ("name" in def||"field" in def||"get" in def); |
| 173 |
}; |
| 174 |
var _27=function(def){ |
| 175 |
if(dojo.isArray(def)){
|
| 176 |
if(dojo.isArray(def[0])||_26(def[0])){ |
| 177 |
return true; |
| 178 |
} |
| 179 |
} |
| 180 |
return false; |
| 181 |
}; |
| 182 |
var _28=function(def){ |
| 183 |
return (def!==null&&dojo.isObject(def)&&("cells" in def||"rows" in def||("type" in def&&!_26(def)))); |
| 184 |
}; |
| 185 |
if(dojo.isArray(_24)){
|
| 186 |
var _29=false; |
| 187 |
for(var i=0,st;(st=_24[i]);i++){ |
| 188 |
if(_28(st)){
|
| 189 |
_29=true;
|
| 190 |
break;
|
| 191 |
} |
| 192 |
} |
| 193 |
if(!_29){
|
| 194 |
s.push(this.addViewDef({cells:_24})); |
| 195 |
}else{
|
| 196 |
for(i=0;(st=_24[i]);i++){ |
| 197 |
if(_27(st)){
|
| 198 |
s.push(this.addViewDef({cells:st})); |
| 199 |
}else{
|
| 200 |
if(_28(st)){
|
| 201 |
s.push(this.addViewDef(st));
|
| 202 |
} |
| 203 |
} |
| 204 |
} |
| 205 |
} |
| 206 |
}else{
|
| 207 |
if(_28(_24)){
|
| 208 |
s.push(this.addViewDef(_24));
|
| 209 |
} |
| 210 |
} |
| 211 |
this.cellCount=this.cells.length; |
| 212 |
this.grid.setupHeaderMenu();
|
| 213 |
}}); |
| 214 |
} |