root / trunk / web / dojo / dojox / grid / _Builder.js @ 10
History | View | Annotate | Download (14.3 KB)
| 1 | 9 | andrej.cim | /*
|
|---|---|---|---|
| 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._Builder"]){ |
||
| 9 | dojo._hasResource["dojox.grid._Builder"]=true; |
||
| 10 | dojo.provide("dojox.grid._Builder");
|
||
| 11 | dojo.require("dojox.grid.util");
|
||
| 12 | dojo.require("dojo.dnd.Moveable");
|
||
| 13 | (function(){
|
||
| 14 | var dg=dojox.grid;
|
||
| 15 | var _1=function(td){ |
||
| 16 | return td.cellIndex>=0?td.cellIndex:dojo.indexOf(td.parentNode.cells,td); |
||
| 17 | }; |
||
| 18 | var _2=function(tr){ |
||
| 19 | return tr.rowIndex>=0?tr.rowIndex:dojo.indexOf(tr.parentNode.childNodes,tr); |
||
| 20 | }; |
||
| 21 | var _3=function(_4,_5){ |
||
| 22 | return _4&&((_4.rows||0)[_5]||_4.childNodes[_5]); |
||
| 23 | }; |
||
| 24 | var _6=function(_7){ |
||
| 25 | for(var n=_7;n&&n.tagName!="TABLE";n=n.parentNode){ |
||
| 26 | } |
||
| 27 | return n;
|
||
| 28 | }; |
||
| 29 | var _8=function(_9,_a){ |
||
| 30 | for(var n=_9;n&&_a(n);n=n.parentNode){ |
||
| 31 | } |
||
| 32 | return n;
|
||
| 33 | }; |
||
| 34 | var _b=function(_c){ |
||
| 35 | var _d=_c.toUpperCase();
|
||
| 36 | return function(_e){ |
||
| 37 | return _e.tagName!=_d;
|
||
| 38 | }; |
||
| 39 | }; |
||
| 40 | var _f=dojox.grid.util.rowIndexTag;
|
||
| 41 | var _10=dojox.grid.util.gridViewTag;
|
||
| 42 | dg._Builder=dojo.extend(function(_11){
|
||
| 43 | if(_11){
|
||
| 44 | this.view=_11;
|
||
| 45 | this.grid=_11.grid;
|
||
| 46 | } |
||
| 47 | },{view:null,_table:"<table class=\"dojoxGridRowTable\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" role=\"presentation\"",getTableArray:function(){
|
||
| 48 | var _12=[this._table]; |
||
| 49 | if(this.view.viewWidth){ |
||
| 50 | _12.push([" style=\"width:",this.view.viewWidth,";\""].join("")); |
||
| 51 | } |
||
| 52 | _12.push(">");
|
||
| 53 | return _12;
|
||
| 54 | },generateCellMarkup:function(_13,_14,_15,_16){ |
||
| 55 | var _17=[],_18;
|
||
| 56 | if(_16){
|
||
| 57 | var _19=_13.index!=_13.grid.getSortIndex()?"":_13.grid.sortInfo>0?"aria-sort=\"ascending\"":"aria-sort=\"descending\""; |
||
| 58 | if(!_13.id){
|
||
| 59 | _13.id=this.grid.id+"Hdr"+_13.index; |
||
| 60 | } |
||
| 61 | _18=["<th tabIndex=\"-1\" aria-readonly=\"true\" role=\"columnheader\"",_19,"id=\"",_13.id,"\""]; |
||
| 62 | }else{
|
||
| 63 | var _1a=this.grid.editable&&!_13.editable?"aria-readonly=\"true\"":""; |
||
| 64 | _18=["<td tabIndex=\"-1\" role=\"gridcell\"",_1a];
|
||
| 65 | } |
||
| 66 | if(_13.colSpan){
|
||
| 67 | _18.push(" colspan=\"",_13.colSpan,"\""); |
||
| 68 | } |
||
| 69 | if(_13.rowSpan){
|
||
| 70 | _18.push(" rowspan=\"",_13.rowSpan,"\""); |
||
| 71 | } |
||
| 72 | _18.push(" class=\"dojoxGridCell ");
|
||
| 73 | if(_13.classes){
|
||
| 74 | _18.push(_13.classes," ");
|
||
| 75 | } |
||
| 76 | if(_15){
|
||
| 77 | _18.push(_15," ");
|
||
| 78 | } |
||
| 79 | _17.push(_18.join(""));
|
||
| 80 | _17.push("");
|
||
| 81 | _18=["\" idx=\"",_13.index,"\" style=\""]; |
||
| 82 | if(_14&&_14[_14.length-1]!=";"){ |
||
| 83 | _14+=";";
|
||
| 84 | } |
||
| 85 | _18.push(_13.styles,_14||"",_13.hidden?"display:none;":""); |
||
| 86 | if(_13.unitWidth){
|
||
| 87 | _18.push("width:",_13.unitWidth,";"); |
||
| 88 | } |
||
| 89 | _17.push(_18.join(""));
|
||
| 90 | _17.push("");
|
||
| 91 | _18=["\""];
|
||
| 92 | if(_13.attrs){
|
||
| 93 | _18.push(" ",_13.attrs);
|
||
| 94 | } |
||
| 95 | _18.push(">");
|
||
| 96 | _17.push(_18.join(""));
|
||
| 97 | _17.push("");
|
||
| 98 | _17.push(_16?"</th>":"</td>"); |
||
| 99 | return _17;
|
||
| 100 | },isCellNode:function(_1b){ |
||
| 101 | return Boolean(_1b&&_1b!=dojo.doc&&dojo.attr(_1b,"idx")); |
||
| 102 | },getCellNodeIndex:function(_1c){ |
||
| 103 | return _1c?Number(dojo.attr(_1c,"idx")):-1; |
||
| 104 | },getCellNode:function(_1d,_1e){ |
||
| 105 | for(var i=0,row;(row=_3(_1d.firstChild,i));i++){ |
||
| 106 | for(var j=0,_1f;(_1f=row.cells[j]);j++){ |
||
| 107 | if(this.getCellNodeIndex(_1f)==_1e){ |
||
| 108 | return _1f;
|
||
| 109 | } |
||
| 110 | } |
||
| 111 | } |
||
| 112 | return null; |
||
| 113 | },findCellTarget:function(_20,_21){ |
||
| 114 | var n=_20;
|
||
| 115 | while(n&&(!this.isCellNode(n)||(n.offsetParent&&_10 in n.offsetParent.parentNode&&n.offsetParent.parentNode[_10]!=this.view.id))&&(n!=_21)){ |
||
| 116 | n=n.parentNode; |
||
| 117 | } |
||
| 118 | return n!=_21?n:null; |
||
| 119 | },baseDecorateEvent:function(e){ |
||
| 120 | e.dispatch="do"+e.type;
|
||
| 121 | e.grid=this.grid;
|
||
| 122 | e.sourceView=this.view;
|
||
| 123 | e.cellNode=this.findCellTarget(e.target,e.rowNode);
|
||
| 124 | e.cellIndex=this.getCellNodeIndex(e.cellNode);
|
||
| 125 | e.cell=(e.cellIndex>=0?this.grid.getCell(e.cellIndex):null); |
||
| 126 | },findTarget:function(_22,_23){ |
||
| 127 | var n=_22;
|
||
| 128 | while(n&&(n!=this.domNode)&&(!(_23 in n)||(_10 in n&&n[_10]!=this.view.id))){ |
||
| 129 | n=n.parentNode; |
||
| 130 | } |
||
| 131 | return (n!=this.domNode)?n:null; |
||
| 132 | },findRowTarget:function(_24){ |
||
| 133 | return this.findTarget(_24,_f); |
||
| 134 | },isIntraNodeEvent:function(e){ |
||
| 135 | try{
|
||
| 136 | return (e.cellNode&&e.relatedTarget&&dojo.isDescendant(e.relatedTarget,e.cellNode));
|
||
| 137 | } |
||
| 138 | catch(x){
|
||
| 139 | return false; |
||
| 140 | } |
||
| 141 | },isIntraRowEvent:function(e){ |
||
| 142 | try{
|
||
| 143 | var row=e.relatedTarget&&this.findRowTarget(e.relatedTarget); |
||
| 144 | return !row&&(e.rowIndex==-1)||row&&(e.rowIndex==row.gridRowIndex); |
||
| 145 | } |
||
| 146 | catch(x){
|
||
| 147 | return false; |
||
| 148 | } |
||
| 149 | },dispatchEvent:function(e){ |
||
| 150 | if(e.dispatch in this){ |
||
| 151 | return this[e.dispatch](e); |
||
| 152 | } |
||
| 153 | return false; |
||
| 154 | },domouseover:function(e){ |
||
| 155 | if(e.cellNode&&(e.cellNode!=this.lastOverCellNode)){ |
||
| 156 | this.lastOverCellNode=e.cellNode;
|
||
| 157 | this.grid.onMouseOver(e);
|
||
| 158 | } |
||
| 159 | this.grid.onMouseOverRow(e);
|
||
| 160 | },domouseout:function(e){ |
||
| 161 | if(e.cellNode&&(e.cellNode==this.lastOverCellNode)&&!this.isIntraNodeEvent(e,this.lastOverCellNode)){ |
||
| 162 | this.lastOverCellNode=null; |
||
| 163 | this.grid.onMouseOut(e);
|
||
| 164 | if(!this.isIntraRowEvent(e)){ |
||
| 165 | this.grid.onMouseOutRow(e);
|
||
| 166 | } |
||
| 167 | } |
||
| 168 | },domousedown:function(e){ |
||
| 169 | if(e.cellNode){
|
||
| 170 | this.grid.onMouseDown(e);
|
||
| 171 | } |
||
| 172 | this.grid.onMouseDownRow(e);
|
||
| 173 | }}); |
||
| 174 | dg._ContentBuilder=dojo.extend(function(_25){
|
||
| 175 | dg._Builder.call(this,_25);
|
||
| 176 | },dg._Builder.prototype,{update:function(){
|
||
| 177 | this.prepareHtml();
|
||
| 178 | },prepareHtml:function(){ |
||
| 179 | var _26=this.grid.get,_27=this.view.structure.cells; |
||
| 180 | for(var j=0,row;(row=_27[j]);j++){ |
||
| 181 | for(var i=0,_28;(_28=row[i]);i++){ |
||
| 182 | _28.get=_28.get||(_28.value==undefined)&&_26;
|
||
| 183 | _28.markup=this.generateCellMarkup(_28,_28.cellStyles,_28.cellClasses,false); |
||
| 184 | if(!this.grid.editable&&_28.editable){ |
||
| 185 | this.grid.editable=true; |
||
| 186 | } |
||
| 187 | } |
||
| 188 | } |
||
| 189 | },generateHtml:function(_29,_2a){ |
||
| 190 | var _2b=this.getTableArray(),v=this.view,_2c=v.structure.cells,_2d=this.grid.getItem(_2a); |
||
| 191 | dojox.grid.util.fire(this.view,"onBeforeRow",[_2a,_2c]); |
||
| 192 | for(var j=0,row;(row=_2c[j]);j++){ |
||
| 193 | if(row.hidden||row.header){
|
||
| 194 | continue;
|
||
| 195 | } |
||
| 196 | _2b.push(!row.invisible?"<tr>":"<tr class=\"dojoxGridInvisible\">"); |
||
| 197 | for(var i=0,_2e,m,cc,cs;(_2e=row[i]);i++){ |
||
| 198 | m=_2e.markup; |
||
| 199 | cc=_2e.customClasses=[]; |
||
| 200 | cs=_2e.customStyles=[]; |
||
| 201 | m[5]=_2e.format(_2a,_2d);
|
||
| 202 | m[1]=cc.join(" "); |
||
| 203 | m[3]=cs.join(";"); |
||
| 204 | _2b.push.apply(_2b,m); |
||
| 205 | } |
||
| 206 | _2b.push("</tr>");
|
||
| 207 | } |
||
| 208 | _2b.push("</table>");
|
||
| 209 | return _2b.join(""); |
||
| 210 | },decorateEvent:function(e){ |
||
| 211 | e.rowNode=this.findRowTarget(e.target);
|
||
| 212 | if(!e.rowNode){
|
||
| 213 | return false; |
||
| 214 | } |
||
| 215 | e.rowIndex=e.rowNode[_f]; |
||
| 216 | this.baseDecorateEvent(e);
|
||
| 217 | e.cell=this.grid.getCell(e.cellIndex);
|
||
| 218 | return true; |
||
| 219 | }}); |
||
| 220 | dg._HeaderBuilder=dojo.extend(function(_2f){
|
||
| 221 | this.moveable=null; |
||
| 222 | dg._Builder.call(this,_2f);
|
||
| 223 | },dg._Builder.prototype,{_skipBogusClicks:false,overResizeWidth:4,minColWidth:1,update:function(){
|
||
| 224 | if(this.tableMap){ |
||
| 225 | this.tableMap.mapRows(this.view.structure.cells); |
||
| 226 | }else{
|
||
| 227 | this.tableMap=new dg._TableMap(this.view.structure.cells); |
||
| 228 | } |
||
| 229 | },generateHtml:function(_30,_31){ |
||
| 230 | var _32=this.getTableArray(),_33=this.view.structure.cells; |
||
| 231 | dojox.grid.util.fire(this.view,"onBeforeRow",[-1,_33]); |
||
| 232 | for(var j=0,row;(row=_33[j]);j++){ |
||
| 233 | if(row.hidden){
|
||
| 234 | continue;
|
||
| 235 | } |
||
| 236 | _32.push(!row.invisible?"<tr>":"<tr class=\"dojoxGridInvisible\">"); |
||
| 237 | for(var i=0,_34,_35;(_34=row[i]);i++){ |
||
| 238 | _34.customClasses=[]; |
||
| 239 | _34.customStyles=[]; |
||
| 240 | if(this.view.simpleStructure){ |
||
| 241 | if(_34.draggable){
|
||
| 242 | if(_34.headerClasses){
|
||
| 243 | if(_34.headerClasses.indexOf("dojoDndItem")==-1){ |
||
| 244 | _34.headerClasses+=" dojoDndItem";
|
||
| 245 | } |
||
| 246 | }else{
|
||
| 247 | _34.headerClasses="dojoDndItem";
|
||
| 248 | } |
||
| 249 | } |
||
| 250 | if(_34.attrs){
|
||
| 251 | if(_34.attrs.indexOf("dndType='gridColumn_")==-1){ |
||
| 252 | _34.attrs+=" dndType='gridColumn_"+this.grid.id+"'"; |
||
| 253 | } |
||
| 254 | }else{
|
||
| 255 | _34.attrs="dndType='gridColumn_"+this.grid.id+"'"; |
||
| 256 | } |
||
| 257 | } |
||
| 258 | _35=this.generateCellMarkup(_34,_34.headerStyles,_34.headerClasses,true); |
||
| 259 | _35[5]=(_31!=undefined?_31:_30(_34)); |
||
| 260 | _35[3]=_34.customStyles.join(";"); |
||
| 261 | _35[1]=_34.customClasses.join(" "); |
||
| 262 | _32.push(_35.join(""));
|
||
| 263 | } |
||
| 264 | _32.push("</tr>");
|
||
| 265 | } |
||
| 266 | _32.push("</table>");
|
||
| 267 | return _32.join(""); |
||
| 268 | },getCellX:function(e){ |
||
| 269 | var n,x=e.layerX;
|
||
| 270 | if(dojo.isMoz){
|
||
| 271 | n=_8(e.target,_b("th"));
|
||
| 272 | x-=(n&&n.offsetLeft)||0;
|
||
| 273 | var t=e.sourceView.getScrollbarWidth();
|
||
| 274 | if(!dojo._isBodyLtr()){
|
||
| 275 | table=_8(n,_b("table"));
|
||
| 276 | x-=(table&&table.offsetLeft)||0;
|
||
| 277 | } |
||
| 278 | } |
||
| 279 | n=_8(e.target,function(){
|
||
| 280 | if(!n||n==e.cellNode){
|
||
| 281 | return false; |
||
| 282 | } |
||
| 283 | x+=(n.offsetLeft<0?0:n.offsetLeft); |
||
| 284 | return true; |
||
| 285 | }); |
||
| 286 | return x;
|
||
| 287 | },decorateEvent:function(e){ |
||
| 288 | this.baseDecorateEvent(e);
|
||
| 289 | e.rowIndex=-1;
|
||
| 290 | e.cellX=this.getCellX(e);
|
||
| 291 | return true; |
||
| 292 | },prepareResize:function(e,mod){ |
||
| 293 | do{
|
||
| 294 | var i=_1(e.cellNode);
|
||
| 295 | e.cellNode=(i?e.cellNode.parentNode.cells[i+mod]:null);
|
||
| 296 | e.cellIndex=(e.cellNode?this.getCellNodeIndex(e.cellNode):-1); |
||
| 297 | }while(e.cellNode&&e.cellNode.style.display=="none"); |
||
| 298 | return Boolean(e.cellNode);
|
||
| 299 | },canResize:function(e){ |
||
| 300 | if(!e.cellNode||e.cellNode.colSpan>1){ |
||
| 301 | return false; |
||
| 302 | } |
||
| 303 | var _36=this.grid.getCell(e.cellIndex); |
||
| 304 | return !_36.noresize&&_36.canResize();
|
||
| 305 | },overLeftResizeArea:function(e){ |
||
| 306 | if(dojo.hasClass(dojo.body(),"dojoDndMove")){ |
||
| 307 | return false; |
||
| 308 | } |
||
| 309 | if(dojo.isIE){
|
||
| 310 | var tN=e.target;
|
||
| 311 | if(dojo.hasClass(tN,"dojoxGridArrowButtonNode")||dojo.hasClass(tN,"dojoxGridArrowButtonChar")){ |
||
| 312 | return false; |
||
| 313 | } |
||
| 314 | } |
||
| 315 | if(dojo._isBodyLtr()){
|
||
| 316 | return (e.cellIndex>0)&&(e.cellX<this.overResizeWidth)&&this.prepareResize(e,-1); |
||
| 317 | } |
||
| 318 | var t=e.cellNode&&(e.cellX<this.overResizeWidth); |
||
| 319 | return t;
|
||
| 320 | },overRightResizeArea:function(e){ |
||
| 321 | if(dojo.hasClass(dojo.body(),"dojoDndMove")){ |
||
| 322 | return false; |
||
| 323 | } |
||
| 324 | if(dojo.isIE){
|
||
| 325 | var tN=e.target;
|
||
| 326 | if(dojo.hasClass(tN,"dojoxGridArrowButtonNode")||dojo.hasClass(tN,"dojoxGridArrowButtonChar")){ |
||
| 327 | return false; |
||
| 328 | } |
||
| 329 | } |
||
| 330 | if(dojo._isBodyLtr()){
|
||
| 331 | return e.cellNode&&(e.cellX>=e.cellNode.offsetWidth-this.overResizeWidth); |
||
| 332 | } |
||
| 333 | return (e.cellIndex>0)&&(e.cellX>=e.cellNode.offsetWidth-this.overResizeWidth)&&this.prepareResize(e,-1); |
||
| 334 | },domousemove:function(e){ |
||
| 335 | if(!this.moveable){ |
||
| 336 | var c=(this.overRightResizeArea(e)?"dojoxGridColResize":(this.overLeftResizeArea(e)?"dojoxGridColResize":"")); |
||
| 337 | if(c&&!this.canResize(e)){ |
||
| 338 | c="dojoxGridColNoResize";
|
||
| 339 | } |
||
| 340 | dojo.toggleClass(e.sourceView.headerNode,"dojoxGridColNoResize",(c=="dojoxGridColNoResize")); |
||
| 341 | dojo.toggleClass(e.sourceView.headerNode,"dojoxGridColResize",(c=="dojoxGridColResize")); |
||
| 342 | if(dojo.isIE){
|
||
| 343 | var t=e.sourceView.headerNode.scrollLeft;
|
||
| 344 | e.sourceView.headerNode.scrollLeft=t; |
||
| 345 | } |
||
| 346 | if(c){
|
||
| 347 | dojo.stopEvent(e); |
||
| 348 | } |
||
| 349 | } |
||
| 350 | },domousedown:function(e){ |
||
| 351 | if(!this.moveable){ |
||
| 352 | if((this.overRightResizeArea(e)||this.overLeftResizeArea(e))&&this.canResize(e)){ |
||
| 353 | this.beginColumnResize(e);
|
||
| 354 | }else{
|
||
| 355 | this.grid.onMouseDown(e);
|
||
| 356 | this.grid.onMouseOverRow(e);
|
||
| 357 | } |
||
| 358 | } |
||
| 359 | },doclick:function(e){ |
||
| 360 | if(this._skipBogusClicks){ |
||
| 361 | dojo.stopEvent(e); |
||
| 362 | return true; |
||
| 363 | } |
||
| 364 | return false; |
||
| 365 | },colResizeSetup:function(e,_37){ |
||
| 366 | var _38=dojo.contentBox(e.sourceView.headerNode);
|
||
| 367 | if(_37){
|
||
| 368 | this.lineDiv=document.createElement("div"); |
||
| 369 | var vw=(dojo.position||dojo._abs)(e.sourceView.headerNode,true); |
||
| 370 | var _39=dojo.contentBox(e.sourceView.domNode);
|
||
| 371 | var l=e.clientX;
|
||
| 372 | if(!dojo._isBodyLtr()&&dojo.isIE<8){ |
||
| 373 | l-=dojox.html.metrics.getScrollbar().w; |
||
| 374 | } |
||
| 375 | dojo.style(this.lineDiv,{top:vw.y+"px",left:l+"px",height:(_39.h+_38.h)+"px"}); |
||
| 376 | dojo.addClass(this.lineDiv,"dojoxGridResizeColLine"); |
||
| 377 | this.lineDiv._origLeft=l;
|
||
| 378 | dojo.body().appendChild(this.lineDiv);
|
||
| 379 | } |
||
| 380 | var _3a=[],_3b=this.tableMap.findOverlappingNodes(e.cellNode); |
||
| 381 | for(var i=0,_3c;(_3c=_3b[i]);i++){ |
||
| 382 | _3a.push({node:_3c,index:this.getCellNodeIndex(_3c),width:_3c.offsetWidth});
|
||
| 383 | } |
||
| 384 | var _3d=e.sourceView;
|
||
| 385 | var adj=dojo._isBodyLtr()?1:-1; |
||
| 386 | var _3e=e.grid.views.views;
|
||
| 387 | var _3f=[];
|
||
| 388 | for(var j=_3d.idx+adj,_40;(_40=_3e[j]);j=j+adj){ |
||
| 389 | _3f.push({node:_40.headerNode,left:window.parseInt(_40.headerNode.style.left)});
|
||
| 390 | } |
||
| 391 | var _41=_3d.headerContentNode.firstChild;
|
||
| 392 | var _42={scrollLeft:e.sourceView.headerNode.scrollLeft,view:_3d,node:e.cellNode,index:e.cellIndex,w:dojo.contentBox(e.cellNode).w,vw:_38.w,table:_41,tw:dojo.contentBox(_41).w,spanners:_3a,followers:_3f}; |
||
| 393 | return _42;
|
||
| 394 | },beginColumnResize:function(e){ |
||
| 395 | this.moverDiv=document.createElement("div"); |
||
| 396 | dojo.style(this.moverDiv,{position:"absolute",left:0}); |
||
| 397 | dojo.body().appendChild(this.moverDiv);
|
||
| 398 | dojo.addClass(this.grid.domNode,"dojoxGridColumnResizing"); |
||
| 399 | var m=(this.moveable=new dojo.dnd.Moveable(this.moverDiv)); |
||
| 400 | var _43=this.colResizeSetup(e,true); |
||
| 401 | m.onMove=dojo.hitch(this,"doResizeColumn",_43); |
||
| 402 | dojo.connect(m,"onMoveStop",dojo.hitch(this,function(){ |
||
| 403 | this.endResizeColumn(_43);
|
||
| 404 | if(_43.node.releaseCapture){
|
||
| 405 | _43.node.releaseCapture(); |
||
| 406 | } |
||
| 407 | this.moveable.destroy();
|
||
| 408 | delete this.moveable; |
||
| 409 | this.moveable=null; |
||
| 410 | dojo.removeClass(this.grid.domNode,"dojoxGridColumnResizing"); |
||
| 411 | })); |
||
| 412 | if(e.cellNode.setCapture){
|
||
| 413 | e.cellNode.setCapture(); |
||
| 414 | } |
||
| 415 | m.onMouseDown(e); |
||
| 416 | },doResizeColumn:function(_44,_45,_46){ |
||
| 417 | var _47=_46.l;
|
||
| 418 | var _48={deltaX:_47,w:_44.w+(dojo._isBodyLtr()?_47:-_47),vw:_44.vw+_47,tw:_44.tw+_47}; |
||
| 419 | this.dragRecord={inDrag:_44,mover:_45,leftTop:_46}; |
||
| 420 | if(_48.w>=this.minColWidth){ |
||
| 421 | if(!_45){
|
||
| 422 | this.doResizeNow(_44,_48);
|
||
| 423 | }else{
|
||
| 424 | dojo.style(this.lineDiv,"left",(this.lineDiv._origLeft+_48.deltaX)+"px"); |
||
| 425 | } |
||
| 426 | } |
||
| 427 | },endResizeColumn:function(_49){ |
||
| 428 | if(this.dragRecord){ |
||
| 429 | var _4a=this.dragRecord.leftTop; |
||
| 430 | var _4b=dojo._isBodyLtr()?_4a.l:-_4a.l;
|
||
| 431 | _4b+=Math.max(_49.w+_4b,this.minColWidth)-(_49.w+_4b);
|
||
| 432 | if(dojo.isWebKit&&_49.spanners.length){
|
||
| 433 | _4b+=dojo._getPadBorderExtents(_49.spanners[0].node).w;
|
||
| 434 | } |
||
| 435 | var _4c={deltaX:_4b,w:_49.w+_4b,vw:_49.vw+_4b,tw:_49.tw+_4b}; |
||
| 436 | this.doResizeNow(_49,_4c);
|
||
| 437 | } |
||
| 438 | dojo.destroy(this.lineDiv);
|
||
| 439 | dojo.destroy(this.moverDiv);
|
||
| 440 | dojo.destroy(this.moverDiv);
|
||
| 441 | delete this.moverDiv; |
||
| 442 | this._skipBogusClicks=true; |
||
| 443 | _49.view.update(); |
||
| 444 | this._skipBogusClicks=false; |
||
| 445 | this.grid.onResizeColumn(_49.index);
|
||
| 446 | },doResizeNow:function(_4d,_4e){ |
||
| 447 | _4d.view.convertColPctToFixed(); |
||
| 448 | if(_4d.view.flexCells&&!_4d.view.testFlexCells()){
|
||
| 449 | var t=_6(_4d.node);
|
||
| 450 | if(t){
|
||
| 451 | (t.style.width="");
|
||
| 452 | } |
||
| 453 | } |
||
| 454 | var i,s,sw,f,fl;
|
||
| 455 | for(i=0;(s=_4d.spanners[i]);i++){ |
||
| 456 | sw=s.width+_4e.deltaX; |
||
| 457 | s.node.style.width=sw+"px";
|
||
| 458 | _4d.view.setColWidth(s.index,sw); |
||
| 459 | } |
||
| 460 | if(dojo._isBodyLtr()||!dojo.isIE){
|
||
| 461 | for(i=0;(f=_4d.followers[i]);i++){ |
||
| 462 | fl=f.left+_4e.deltaX; |
||
| 463 | f.node.style.left=fl+"px";
|
||
| 464 | } |
||
| 465 | } |
||
| 466 | _4d.node.style.width=_4e.w+"px";
|
||
| 467 | _4d.view.setColWidth(_4d.index,_4e.w); |
||
| 468 | _4d.view.headerNode.style.width=_4e.vw+"px";
|
||
| 469 | _4d.view.setColumnsWidth(_4e.tw); |
||
| 470 | if(!dojo._isBodyLtr()){
|
||
| 471 | _4d.view.headerNode.scrollLeft=_4d.scrollLeft+_4e.deltaX; |
||
| 472 | } |
||
| 473 | }}); |
||
| 474 | dg._TableMap=dojo.extend(function(_4f){
|
||
| 475 | this.mapRows(_4f);
|
||
| 476 | },{map:null,mapRows:function(_50){
|
||
| 477 | var _51=_50.length;
|
||
| 478 | if(!_51){
|
||
| 479 | return;
|
||
| 480 | } |
||
| 481 | this.map=[];
|
||
| 482 | var row;
|
||
| 483 | for(var k=0;(row=_50[k]);k++){ |
||
| 484 | this.map[k]=[];
|
||
| 485 | } |
||
| 486 | for(var j=0;(row=_50[j]);j++){ |
||
| 487 | for(var i=0,x=0,_52,_53,_54;(_52=row[i]);i++){ |
||
| 488 | while(this.map[j][x]){ |
||
| 489 | x++; |
||
| 490 | } |
||
| 491 | this.map[j][x]={c:i,r:j}; |
||
| 492 | _54=_52.rowSpan||1;
|
||
| 493 | _53=_52.colSpan||1;
|
||
| 494 | for(var y=0;y<_54;y++){ |
||
| 495 | for(var s=0;s<_53;s++){ |
||
| 496 | this.map[j+y][x+s]=this.map[j][x]; |
||
| 497 | } |
||
| 498 | } |
||
| 499 | x+=_53; |
||
| 500 | } |
||
| 501 | } |
||
| 502 | },dumpMap:function(){ |
||
| 503 | for(var j=0,row,h="";(row=this.map[j]);j++,h=""){ |
||
| 504 | for(var i=0,_55;(_55=row[i]);i++){ |
||
| 505 | h+=_55.r+","+_55.c+" "; |
||
| 506 | } |
||
| 507 | } |
||
| 508 | },getMapCoords:function(_56,_57){ |
||
| 509 | for(var j=0,row;(row=this.map[j]);j++){ |
||
| 510 | for(var i=0,_58;(_58=row[i]);i++){ |
||
| 511 | if(_58.c==_57&&_58.r==_56){
|
||
| 512 | return {j:j,i:i}; |
||
| 513 | } |
||
| 514 | } |
||
| 515 | } |
||
| 516 | return {j:-1,i:-1}; |
||
| 517 | },getNode:function(_59,_5a,_5b){ |
||
| 518 | var row=_59&&_59.rows[_5a];
|
||
| 519 | return row&&row.cells[_5b];
|
||
| 520 | },_findOverlappingNodes:function(_5c,_5d,_5e){ |
||
| 521 | var _5f=[];
|
||
| 522 | var m=this.getMapCoords(_5d,_5e); |
||
| 523 | for(var j=0,row;(row=this.map[j]);j++){ |
||
| 524 | if(j==m.j){
|
||
| 525 | continue;
|
||
| 526 | } |
||
| 527 | var rw=row[m.i];
|
||
| 528 | var n=(rw?this.getNode(_5c,rw.r,rw.c):null); |
||
| 529 | if(n){
|
||
| 530 | _5f.push(n); |
||
| 531 | } |
||
| 532 | } |
||
| 533 | return _5f;
|
||
| 534 | },findOverlappingNodes:function(_60){ |
||
| 535 | return this._findOverlappingNodes(_6(_60),_2(_60.parentNode),_1(_60)); |
||
| 536 | }}); |
||
| 537 | })(); |
||
| 538 | } |