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 |
} |