root / trunk / web / dojo / dojox / grid / _View.js @ 11
History | View | Annotate | Download (18.4 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._View"]){ |
| 9 |
dojo._hasResource["dojox.grid._View"]=true; |
| 10 |
dojo.provide("dojox.grid._View");
|
| 11 |
dojo.require("dijit._Widget");
|
| 12 |
dojo.require("dijit._Templated");
|
| 13 |
dojo.require("dojox.grid._Builder");
|
| 14 |
dojo.require("dojox.html.metrics");
|
| 15 |
dojo.require("dojox.grid.util");
|
| 16 |
dojo.require("dojo.dnd.Source");
|
| 17 |
dojo.require("dojo.dnd.Manager");
|
| 18 |
(function(){
|
| 19 |
var _1=function(_2,_3){ |
| 20 |
return _2.style.cssText==undefined?_2.getAttribute("style"):_2.style.cssText; |
| 21 |
}; |
| 22 |
dojo.declare("dojox.grid._View",[dijit._Widget,dijit._Templated],{defaultWidth:"18em",viewWidth:"",templateString:"<div class=\"dojoxGridView\" wairole=\"presentation\">\n\t<div class=\"dojoxGridHeader\" dojoAttachPoint=\"headerNode\" wairole=\"presentation\">\n\t\t<div dojoAttachPoint=\"headerNodeContainer\" style=\"width:9000em\" wairole=\"presentation\">\n\t\t\t<div dojoAttachPoint=\"headerContentNode\" wairole=\"row\"></div>\n\t\t</div>\n\t</div>\n\t<input type=\"checkbox\" class=\"dojoxGridHiddenFocus\" dojoAttachPoint=\"hiddenFocusNode\" wairole=\"presentation\" />\n\t<input type=\"checkbox\" class=\"dojoxGridHiddenFocus\" wairole=\"presentation\" />\n\t<div class=\"dojoxGridScrollbox\" dojoAttachPoint=\"scrollboxNode\" wairole=\"presentation\">\n\t\t<div class=\"dojoxGridContent\" dojoAttachPoint=\"contentNode\" hidefocus=\"hidefocus\" wairole=\"presentation\"></div>\n\t</div>\n</div>\n",themeable:false,classTag:"dojoxGrid",marginBottom:0,rowPad:2,_togglingColumn:-1,_headerBuilderClass:dojox.grid._HeaderBuilder,_contentBuilderClass:dojox.grid._ContentBuilder,postMixInProperties:function(){ |
| 23 |
this.rowNodes={};
|
| 24 |
},postCreate:function(){ |
| 25 |
this.connect(this.scrollboxNode,"onscroll","doscroll"); |
| 26 |
dojox.grid.util.funnelEvents(this.contentNode,this,"doContentEvent",["mouseover","mouseout","click","dblclick","contextmenu","mousedown"]); |
| 27 |
dojox.grid.util.funnelEvents(this.headerNode,this,"doHeaderEvent",["dblclick","mouseover","mouseout","mousemove","mousedown","click","contextmenu"]); |
| 28 |
this.content=new this._contentBuilderClass(this); |
| 29 |
this.header=new this._headerBuilderClass(this); |
| 30 |
if(!dojo._isBodyLtr()){
|
| 31 |
this.headerNodeContainer.style.width=""; |
| 32 |
} |
| 33 |
},destroy:function(){ |
| 34 |
dojo.destroy(this.headerNode);
|
| 35 |
delete this.headerNode; |
| 36 |
for(var i in this.rowNodes){ |
| 37 |
dojo.destroy(this.rowNodes[i]);
|
| 38 |
} |
| 39 |
this.rowNodes={};
|
| 40 |
if(this.source){ |
| 41 |
this.source.destroy();
|
| 42 |
} |
| 43 |
this.inherited(arguments); |
| 44 |
},focus:function(){ |
| 45 |
if(dojo.isIE||dojo.isWebKit||dojo.isOpera){
|
| 46 |
this.hiddenFocusNode.focus();
|
| 47 |
}else{
|
| 48 |
this.scrollboxNode.focus();
|
| 49 |
} |
| 50 |
},setStructure:function(_4){ |
| 51 |
var vs=(this.structure=_4); |
| 52 |
if(vs.width&&!isNaN(vs.width)){
|
| 53 |
this.viewWidth=vs.width+"em"; |
| 54 |
}else{
|
| 55 |
this.viewWidth=vs.width||(vs.noscroll?"auto":this.viewWidth); |
| 56 |
} |
| 57 |
this._onBeforeRow=vs.onBeforeRow||function(){ |
| 58 |
}; |
| 59 |
this._onAfterRow=vs.onAfterRow||function(){ |
| 60 |
}; |
| 61 |
this.noscroll=vs.noscroll;
|
| 62 |
if(this.noscroll){ |
| 63 |
this.scrollboxNode.style.overflow="hidden"; |
| 64 |
} |
| 65 |
this.simpleStructure=Boolean(vs.cells.length==1); |
| 66 |
this.testFlexCells();
|
| 67 |
this.updateStructure();
|
| 68 |
},_cleanupRowWidgets:function(_5){ |
| 69 |
if(_5){
|
| 70 |
dojo.forEach(dojo.query("[widgetId]",_5).map(dijit.byNode),function(w){ |
| 71 |
if(w._destroyOnRemove){
|
| 72 |
w.destroy(); |
| 73 |
delete w;
|
| 74 |
}else{
|
| 75 |
if(w.domNode&&w.domNode.parentNode){
|
| 76 |
w.domNode.parentNode.removeChild(w.domNode); |
| 77 |
} |
| 78 |
} |
| 79 |
}); |
| 80 |
} |
| 81 |
},onBeforeRow:function(_6,_7){ |
| 82 |
this._onBeforeRow(_6,_7);
|
| 83 |
if(_6>=0){ |
| 84 |
this._cleanupRowWidgets(this.getRowNode(_6)); |
| 85 |
} |
| 86 |
},onAfterRow:function(_8,_9,_a){ |
| 87 |
this._onAfterRow(_8,_9,_a);
|
| 88 |
var g=this.grid; |
| 89 |
dojo.forEach(dojo.query(".dojoxGridStubNode",_a),function(n){ |
| 90 |
if(n&&n.parentNode){
|
| 91 |
var lw=n.getAttribute("linkWidget"); |
| 92 |
var _b=window.parseInt(dojo.attr(n,"cellIdx"),10); |
| 93 |
var _c=g.getCell(_b);
|
| 94 |
var w=dijit.byId(lw);
|
| 95 |
if(w){
|
| 96 |
n.parentNode.replaceChild(w.domNode,n); |
| 97 |
if(!w._started){
|
| 98 |
w.startup(); |
| 99 |
} |
| 100 |
}else{
|
| 101 |
n.innerHTML="";
|
| 102 |
} |
| 103 |
} |
| 104 |
},this);
|
| 105 |
},testFlexCells:function(){ |
| 106 |
this.flexCells=false; |
| 107 |
for(var j=0,_d;(_d=this.structure.cells[j]);j++){ |
| 108 |
for(var i=0,_e;(_e=_d[i]);i++){ |
| 109 |
_e.view=this;
|
| 110 |
this.flexCells=this.flexCells||_e.isFlex(); |
| 111 |
} |
| 112 |
} |
| 113 |
return this.flexCells; |
| 114 |
},updateStructure:function(){ |
| 115 |
this.header.update();
|
| 116 |
this.content.update();
|
| 117 |
},getScrollbarWidth:function(){ |
| 118 |
var _f=this.hasVScrollbar(); |
| 119 |
var _10=dojo.style(this.scrollboxNode,"overflow"); |
| 120 |
if(this.noscroll||!_10||_10=="hidden"){ |
| 121 |
_f=false;
|
| 122 |
}else{
|
| 123 |
if(_10=="scroll"){ |
| 124 |
_f=true;
|
| 125 |
} |
| 126 |
} |
| 127 |
return (_f?dojox.html.metrics.getScrollbar().w:0); |
| 128 |
},getColumnsWidth:function(){ |
| 129 |
var h=this.headerContentNode; |
| 130 |
return h&&h.firstChild?h.firstChild.offsetWidth:0; |
| 131 |
},setColumnsWidth:function(_11){ |
| 132 |
this.headerContentNode.firstChild.style.width=_11+"px"; |
| 133 |
if(this.viewWidth){ |
| 134 |
this.viewWidth=_11+"px"; |
| 135 |
} |
| 136 |
},getWidth:function(){ |
| 137 |
return this.viewWidth||(this.getColumnsWidth()+this.getScrollbarWidth())+"px"; |
| 138 |
},getContentWidth:function(){ |
| 139 |
return Math.max(0,dojo._getContentBox(this.domNode).w-this.getScrollbarWidth())+"px"; |
| 140 |
},render:function(){ |
| 141 |
this.scrollboxNode.style.height=""; |
| 142 |
this.renderHeader();
|
| 143 |
if(this._togglingColumn>=0){ |
| 144 |
this.setColumnsWidth(this.getColumnsWidth()-this._togglingColumn); |
| 145 |
this._togglingColumn=-1; |
| 146 |
} |
| 147 |
var _12=this.grid.layout.cells; |
| 148 |
var _13=dojo.hitch(this,function(_14,_15){ |
| 149 |
!dojo._isBodyLtr()&&(_15=!_15); |
| 150 |
var inc=_15?-1:1; |
| 151 |
var idx=this.header.getCellNodeIndex(_14)+inc; |
| 152 |
var _16=_12[idx];
|
| 153 |
while(_16&&_16.getHeaderNode()&&_16.getHeaderNode().style.display=="none"){ |
| 154 |
idx+=inc; |
| 155 |
_16=_12[idx]; |
| 156 |
} |
| 157 |
if(_16){
|
| 158 |
return _16.getHeaderNode();
|
| 159 |
} |
| 160 |
return null; |
| 161 |
}); |
| 162 |
if(this.grid.columnReordering&&this.simpleStructure){ |
| 163 |
if(this.source){ |
| 164 |
this.source.destroy();
|
| 165 |
} |
| 166 |
var _17="dojoxGrid_bottomMarker"; |
| 167 |
var _18="dojoxGrid_topMarker"; |
| 168 |
if(this.bottomMarker){ |
| 169 |
dojo.destroy(this.bottomMarker);
|
| 170 |
} |
| 171 |
this.bottomMarker=dojo.byId(_17);
|
| 172 |
if(this.topMarker){ |
| 173 |
dojo.destroy(this.topMarker);
|
| 174 |
} |
| 175 |
this.topMarker=dojo.byId(_18);
|
| 176 |
if(!this.bottomMarker){ |
| 177 |
this.bottomMarker=dojo.create("div",{"id":_17,"class":"dojoxGridColPlaceBottom"},dojo.body()); |
| 178 |
this._hide(this.bottomMarker); |
| 179 |
this.topMarker=dojo.create("div",{"id":_18,"class":"dojoxGridColPlaceTop"},dojo.body()); |
| 180 |
this._hide(this.topMarker); |
| 181 |
} |
| 182 |
this.arrowDim=dojo.contentBox(this.bottomMarker); |
| 183 |
var _19=dojo.contentBox(this.headerContentNode.firstChild.rows[0]).h; |
| 184 |
this.source=new dojo.dnd.Source(this.headerContentNode.firstChild.rows[0],{horizontal:true,accept:["gridColumn_"+this.grid.id],viewIndex:this.index,generateText:false,onMouseDown:dojo.hitch(this,function(e){ |
| 185 |
this.header.decorateEvent(e);
|
| 186 |
if((this.header.overRightResizeArea(e)||this.header.overLeftResizeArea(e))&&this.header.canResize(e)&&!this.header.moveable){ |
| 187 |
this.header.beginColumnResize(e);
|
| 188 |
}else{
|
| 189 |
if(this.grid.headerMenu){ |
| 190 |
this.grid.headerMenu.onCancel(true); |
| 191 |
} |
| 192 |
if(e.button===(dojo.isIE?1:0)){ |
| 193 |
dojo.dnd.Source.prototype.onMouseDown.call(this.source,e);
|
| 194 |
} |
| 195 |
} |
| 196 |
}),onMouseOver:dojo.hitch(this,function(e){ |
| 197 |
var src=this.source; |
| 198 |
if(src._getChildByEvent(e)){
|
| 199 |
dojo.dnd.Source.prototype.onMouseOver.apply(src,arguments);
|
| 200 |
} |
| 201 |
}),_markTargetAnchor:dojo.hitch(this,function(_1a){ |
| 202 |
var src=this.source; |
| 203 |
if(src.current==src.targetAnchor&&src.before==_1a){
|
| 204 |
return;
|
| 205 |
} |
| 206 |
if(src.targetAnchor&&_13(src.targetAnchor,src.before)){
|
| 207 |
src._removeItemClass(_13(src.targetAnchor,src.before),src.before?"After":"Before"); |
| 208 |
} |
| 209 |
dojo.dnd.Source.prototype._markTargetAnchor.call(src,_1a); |
| 210 |
var _1b=_1a?src.targetAnchor:_13(src.targetAnchor,src.before);
|
| 211 |
var _1c=0; |
| 212 |
if(!_1b){
|
| 213 |
_1b=src.targetAnchor; |
| 214 |
_1c=dojo.contentBox(_1b).w+this.arrowDim.w/2+2; |
| 215 |
} |
| 216 |
var pos=(dojo.position||dojo._abs)(_1b,true); |
| 217 |
var _1d=Math.floor(pos.x-this.arrowDim.w/2+_1c); |
| 218 |
dojo.style(this.bottomMarker,"visibility","visible"); |
| 219 |
dojo.style(this.topMarker,"visibility","visible"); |
| 220 |
dojo.style(this.bottomMarker,{"left":_1d+"px","top":(_19+pos.y)+"px"}); |
| 221 |
dojo.style(this.topMarker,{"left":_1d+"px","top":(pos.y-this.arrowDim.h)+"px"}); |
| 222 |
if(src.targetAnchor&&_13(src.targetAnchor,src.before)){
|
| 223 |
src._addItemClass(_13(src.targetAnchor,src.before),src.before?"After":"Before"); |
| 224 |
} |
| 225 |
}),_unmarkTargetAnchor:dojo.hitch(this,function(){ |
| 226 |
var src=this.source; |
| 227 |
if(!src.targetAnchor){
|
| 228 |
return;
|
| 229 |
} |
| 230 |
if(src.targetAnchor&&_13(src.targetAnchor,src.before)){
|
| 231 |
src._removeItemClass(_13(src.targetAnchor,src.before),src.before?"After":"Before"); |
| 232 |
} |
| 233 |
this._hide(this.bottomMarker); |
| 234 |
this._hide(this.topMarker); |
| 235 |
dojo.dnd.Source.prototype._unmarkTargetAnchor.call(src); |
| 236 |
}),destroy:dojo.hitch(this,function(){ |
| 237 |
dojo.disconnect(this._source_conn);
|
| 238 |
dojo.unsubscribe(this._source_sub);
|
| 239 |
dojo.dnd.Source.prototype.destroy.call(this.source);
|
| 240 |
if(this.bottomMarker){ |
| 241 |
dojo.destroy(this.bottomMarker);
|
| 242 |
delete this.bottomMarker; |
| 243 |
} |
| 244 |
if(this.topMarker){ |
| 245 |
dojo.destroy(this.topMarker);
|
| 246 |
delete this.topMarker; |
| 247 |
} |
| 248 |
}),onDndCancel:dojo.hitch(this,function(){ |
| 249 |
dojo.dnd.Source.prototype.onDndCancel.call(this.source);
|
| 250 |
this._hide(this.bottomMarker); |
| 251 |
this._hide(this.topMarker); |
| 252 |
})}); |
| 253 |
this._source_conn=dojo.connect(this.source,"onDndDrop",this,"_onDndDrop"); |
| 254 |
this._source_sub=dojo.subscribe("/dnd/drop/before",this,"_onDndDropBefore"); |
| 255 |
this.source.startup();
|
| 256 |
} |
| 257 |
},_hide:function(_1e){ |
| 258 |
dojo.style(_1e,{left:"-10000px",top:"-10000px","visibility":"hidden"});
|
| 259 |
},_onDndDropBefore:function(_1f,_20,_21){ |
| 260 |
if(dojo.dnd.manager().target!==this.source){ |
| 261 |
return;
|
| 262 |
} |
| 263 |
this.source._targetNode=this.source.targetAnchor; |
| 264 |
this.source._beforeTarget=this.source.before; |
| 265 |
var _22=this.grid.views.views; |
| 266 |
var _23=_22[_1f.viewIndex];
|
| 267 |
var _24=_22[this.index]; |
| 268 |
if(_24!=_23){
|
| 269 |
_23.convertColPctToFixed(); |
| 270 |
_24.convertColPctToFixed(); |
| 271 |
} |
| 272 |
},_onDndDrop:function(_25,_26,_27){ |
| 273 |
if(dojo.dnd.manager().target!==this.source){ |
| 274 |
if(dojo.dnd.manager().source===this.source){ |
| 275 |
this._removingColumn=true; |
| 276 |
} |
| 277 |
return;
|
| 278 |
} |
| 279 |
this._hide(this.bottomMarker); |
| 280 |
this._hide(this.topMarker); |
| 281 |
var _28=function(n){ |
| 282 |
return n?dojo.attr(n,"idx"):null; |
| 283 |
}; |
| 284 |
var w=dojo.marginBox(_26[0]).w; |
| 285 |
if(_25.viewIndex!==this.index){ |
| 286 |
var _29=this.grid.views.views; |
| 287 |
var _2a=_29[_25.viewIndex];
|
| 288 |
var _2b=_29[this.index]; |
| 289 |
if(_2a.viewWidth&&_2a.viewWidth!="auto"){ |
| 290 |
_2a.setColumnsWidth(_2a.getColumnsWidth()-w); |
| 291 |
} |
| 292 |
if(_2b.viewWidth&&_2b.viewWidth!="auto"){ |
| 293 |
_2b.setColumnsWidth(_2b.getColumnsWidth()); |
| 294 |
} |
| 295 |
} |
| 296 |
var stn=this.source._targetNode; |
| 297 |
var stb=this.source._beforeTarget; |
| 298 |
!dojo._isBodyLtr()&&(stb=!stb); |
| 299 |
var _2c=this.grid.layout; |
| 300 |
var idx=this.index; |
| 301 |
delete this.source._targetNode; |
| 302 |
delete this.source._beforeTarget; |
| 303 |
_2c.moveColumn(_25.viewIndex,idx,_28(_26[0]),_28(stn),stb);
|
| 304 |
},renderHeader:function(){ |
| 305 |
this.headerContentNode.innerHTML=this.header.generateHtml(this._getHeaderContent); |
| 306 |
if(this.flexCells){ |
| 307 |
this.contentWidth=this.getContentWidth(); |
| 308 |
this.headerContentNode.firstChild.style.width=this.contentWidth; |
| 309 |
} |
| 310 |
dojox.grid.util.fire(this,"onAfterRow",[-1,this.structure.cells,this.headerContentNode]); |
| 311 |
},_getHeaderContent:function(_2d){ |
| 312 |
var n=_2d.name||_2d.grid.getCellName(_2d);
|
| 313 |
var ret=["<div class=\"dojoxGridSortNode"]; |
| 314 |
if(_2d.index!=_2d.grid.getSortIndex()){
|
| 315 |
ret.push("\">");
|
| 316 |
}else{
|
| 317 |
ret=ret.concat([" ",_2d.grid.sortInfo>0?"dojoxGridSortUp":"dojoxGridSortDown","\"><div class=\"dojoxGridArrowButtonChar\">",_2d.grid.sortInfo>0?"▲":"▼","</div><div class=\"dojoxGridArrowButtonNode\" role=\"presentation\"></div>","<div class=\"dojoxGridColCaption\">"]); |
| 318 |
} |
| 319 |
ret=ret.concat([n,"</div></div>"]);
|
| 320 |
return ret.join(""); |
| 321 |
},resize:function(){ |
| 322 |
this.adaptHeight();
|
| 323 |
this.adaptWidth();
|
| 324 |
},hasHScrollbar:function(_2e){ |
| 325 |
var _2f=this._hasHScroll||false; |
| 326 |
if(this._hasHScroll==undefined||_2e){ |
| 327 |
if(this.noscroll){ |
| 328 |
this._hasHScroll=false; |
| 329 |
}else{
|
| 330 |
var _30=dojo.style(this.scrollboxNode,"overflow"); |
| 331 |
if(_30=="hidden"){ |
| 332 |
this._hasHScroll=false; |
| 333 |
}else{
|
| 334 |
if(_30=="scroll"){ |
| 335 |
this._hasHScroll=true; |
| 336 |
}else{
|
| 337 |
this._hasHScroll=(this.scrollboxNode.offsetWidth-this.getScrollbarWidth()<this.contentNode.offsetWidth); |
| 338 |
} |
| 339 |
} |
| 340 |
} |
| 341 |
} |
| 342 |
if(_2f!==this._hasHScroll){ |
| 343 |
this.grid.update();
|
| 344 |
} |
| 345 |
return this._hasHScroll; |
| 346 |
},hasVScrollbar:function(_31){ |
| 347 |
var _32=this._hasVScroll||false; |
| 348 |
if(this._hasVScroll==undefined||_31){ |
| 349 |
if(this.noscroll){ |
| 350 |
this._hasVScroll=false; |
| 351 |
}else{
|
| 352 |
var _33=dojo.style(this.scrollboxNode,"overflow"); |
| 353 |
if(_33=="hidden"){ |
| 354 |
this._hasVScroll=false; |
| 355 |
}else{
|
| 356 |
if(_33=="scroll"){ |
| 357 |
this._hasVScroll=true; |
| 358 |
}else{
|
| 359 |
this._hasVScroll=(this.scrollboxNode.scrollHeight>this.scrollboxNode.clientHeight); |
| 360 |
} |
| 361 |
} |
| 362 |
} |
| 363 |
} |
| 364 |
if(_32!==this._hasVScroll){ |
| 365 |
this.grid.update();
|
| 366 |
} |
| 367 |
return this._hasVScroll; |
| 368 |
},convertColPctToFixed:function(){ |
| 369 |
var _34=false; |
| 370 |
this.grid.initialWidth=""; |
| 371 |
var _35=dojo.query("th",this.headerContentNode); |
| 372 |
var _36=dojo.map(_35,function(c,_37){ |
| 373 |
var w=c.style.width;
|
| 374 |
dojo.attr(c,"vIdx",_37);
|
| 375 |
if(w&&w.slice(-1)=="%"){ |
| 376 |
_34=true;
|
| 377 |
}else{
|
| 378 |
if(w&&w.slice(-2)=="px"){ |
| 379 |
return window.parseInt(w,10); |
| 380 |
} |
| 381 |
} |
| 382 |
return dojo.contentBox(c).w;
|
| 383 |
}); |
| 384 |
if(_34){
|
| 385 |
dojo.forEach(this.grid.layout.cells,function(_38,idx){ |
| 386 |
if(_38.view==this){ |
| 387 |
var _39=_38.view.getHeaderCellNode(_38.index);
|
| 388 |
if(_39&&dojo.hasAttr(_39,"vIdx")){ |
| 389 |
var _3a=window.parseInt(dojo.attr(_39,"vIdx")); |
| 390 |
this.setColWidth(idx,_36[_3a]);
|
| 391 |
dojo.removeAttr(_39,"vIdx");
|
| 392 |
} |
| 393 |
} |
| 394 |
},this);
|
| 395 |
return true; |
| 396 |
} |
| 397 |
return false; |
| 398 |
},adaptHeight:function(_3b){ |
| 399 |
if(!this.grid._autoHeight){ |
| 400 |
var h=(this.domNode.style.height&&parseInt(this.domNode.style.height.replace(/px/,""),10))||this.domNode.clientHeight; |
| 401 |
var _3c=this; |
| 402 |
var _3d=function(){ |
| 403 |
var v;
|
| 404 |
for(var i in _3c.grid.views.views){ |
| 405 |
v=_3c.grid.views.views[i]; |
| 406 |
if(v!==_3c&&v.hasHScrollbar()){
|
| 407 |
return true; |
| 408 |
} |
| 409 |
} |
| 410 |
return false; |
| 411 |
}; |
| 412 |
if(_3b||(this.noscroll&&_3d())){ |
| 413 |
h-=dojox.html.metrics.getScrollbar().h; |
| 414 |
} |
| 415 |
dojox.grid.util.setStyleHeightPx(this.scrollboxNode,h);
|
| 416 |
} |
| 417 |
this.hasVScrollbar(true); |
| 418 |
},adaptWidth:function(){ |
| 419 |
if(this.flexCells){ |
| 420 |
this.contentWidth=this.getContentWidth(); |
| 421 |
this.headerContentNode.firstChild.style.width=this.contentWidth; |
| 422 |
} |
| 423 |
var w=this.scrollboxNode.offsetWidth-this.getScrollbarWidth(); |
| 424 |
if(!this._removingColumn){ |
| 425 |
w=Math.max(w,this.getColumnsWidth())+"px"; |
| 426 |
}else{
|
| 427 |
w=Math.min(w,this.getColumnsWidth())+"px"; |
| 428 |
this._removingColumn=false; |
| 429 |
} |
| 430 |
var cn=this.contentNode; |
| 431 |
cn.style.width=w; |
| 432 |
this.hasHScrollbar(true); |
| 433 |
},setSize:function(w,h){ |
| 434 |
var ds=this.domNode.style; |
| 435 |
var hs=this.headerNode.style; |
| 436 |
if(w){
|
| 437 |
ds.width=w; |
| 438 |
hs.width=w; |
| 439 |
} |
| 440 |
ds.height=(h>=0?h+"px":""); |
| 441 |
},renderRow:function(_3e){ |
| 442 |
var _3f=this.createRowNode(_3e); |
| 443 |
this.buildRow(_3e,_3f);
|
| 444 |
this.grid.edit.restore(this,_3e); |
| 445 |
return _3f;
|
| 446 |
},createRowNode:function(_40){ |
| 447 |
var _41=document.createElement("div"); |
| 448 |
_41.className=this.classTag+"Row"; |
| 449 |
if(this instanceof dojox.grid._RowSelector){ |
| 450 |
dojo.attr(_41,"role","presentation"); |
| 451 |
}else{
|
| 452 |
dojo.attr(_41,"role","row"); |
| 453 |
if(this.grid.selectionMode!="none"){ |
| 454 |
dojo.attr(_41,"aria-selected","false"); |
| 455 |
} |
| 456 |
} |
| 457 |
_41[dojox.grid.util.gridViewTag]=this.id;
|
| 458 |
_41[dojox.grid.util.rowIndexTag]=_40; |
| 459 |
this.rowNodes[_40]=_41;
|
| 460 |
return _41;
|
| 461 |
},buildRow:function(_42,_43){ |
| 462 |
this.buildRowContent(_42,_43);
|
| 463 |
this.styleRow(_42,_43);
|
| 464 |
},buildRowContent:function(_44,_45){ |
| 465 |
_45.innerHTML=this.content.generateHtml(_44,_44);
|
| 466 |
if(this.flexCells&&this.contentWidth){ |
| 467 |
_45.firstChild.style.width=this.contentWidth;
|
| 468 |
} |
| 469 |
dojox.grid.util.fire(this,"onAfterRow",[_44,this.structure.cells,_45]); |
| 470 |
},rowRemoved:function(_46){ |
| 471 |
if(_46>=0){ |
| 472 |
this._cleanupRowWidgets(this.getRowNode(_46)); |
| 473 |
} |
| 474 |
this.grid.edit.save(this,_46); |
| 475 |
delete this.rowNodes[_46]; |
| 476 |
},getRowNode:function(_47){ |
| 477 |
return this.rowNodes[_47]; |
| 478 |
},getCellNode:function(_48,_49){ |
| 479 |
var row=this.getRowNode(_48); |
| 480 |
if(row){
|
| 481 |
return this.content.getCellNode(row,_49); |
| 482 |
} |
| 483 |
},getHeaderCellNode:function(_4a){ |
| 484 |
if(this.headerContentNode){ |
| 485 |
return this.header.getCellNode(this.headerContentNode,_4a); |
| 486 |
} |
| 487 |
},styleRow:function(_4b,_4c){ |
| 488 |
_4c._style=_1(_4c); |
| 489 |
this.styleRowNode(_4b,_4c);
|
| 490 |
},styleRowNode:function(_4d,_4e){ |
| 491 |
if(_4e){
|
| 492 |
this.doStyleRowNode(_4d,_4e);
|
| 493 |
} |
| 494 |
},doStyleRowNode:function(_4f,_50){ |
| 495 |
this.grid.styleRowNode(_4f,_50);
|
| 496 |
},updateRow:function(_51){ |
| 497 |
var _52=this.getRowNode(_51); |
| 498 |
if(_52){
|
| 499 |
_52.style.height="";
|
| 500 |
this.buildRow(_51,_52);
|
| 501 |
} |
| 502 |
return _52;
|
| 503 |
},updateRowStyles:function(_53){ |
| 504 |
this.styleRowNode(_53,this.getRowNode(_53)); |
| 505 |
},lastTop:0,firstScroll:0,doscroll:function(_54){ |
| 506 |
var _55=dojo._isBodyLtr();
|
| 507 |
if(this.firstScroll<2){ |
| 508 |
if((!_55&&this.firstScroll==1)||(_55&&this.firstScroll===0)){ |
| 509 |
var s=dojo.marginBox(this.headerNodeContainer); |
| 510 |
if(dojo.isIE){
|
| 511 |
this.headerNodeContainer.style.width=s.w+this.getScrollbarWidth()+"px"; |
| 512 |
}else{
|
| 513 |
if(dojo.isMoz){
|
| 514 |
this.headerNodeContainer.style.width=s.w-this.getScrollbarWidth()+"px"; |
| 515 |
this.scrollboxNode.scrollLeft=_55?this.scrollboxNode.clientWidth-this.scrollboxNode.scrollWidth:this.scrollboxNode.scrollWidth-this.scrollboxNode.clientWidth; |
| 516 |
} |
| 517 |
} |
| 518 |
} |
| 519 |
this.firstScroll++;
|
| 520 |
} |
| 521 |
this.headerNode.scrollLeft=this.scrollboxNode.scrollLeft; |
| 522 |
var top=this.scrollboxNode.scrollTop; |
| 523 |
if(top!==this.lastTop){ |
| 524 |
this.grid.scrollTo(top);
|
| 525 |
} |
| 526 |
},setScrollTop:function(_56){ |
| 527 |
this.lastTop=_56;
|
| 528 |
this.scrollboxNode.scrollTop=_56;
|
| 529 |
return this.scrollboxNode.scrollTop; |
| 530 |
},doContentEvent:function(e){ |
| 531 |
if(this.content.decorateEvent(e)){ |
| 532 |
this.grid.onContentEvent(e);
|
| 533 |
} |
| 534 |
},doHeaderEvent:function(e){ |
| 535 |
if(this.header.decorateEvent(e)){ |
| 536 |
this.grid.onHeaderEvent(e);
|
| 537 |
} |
| 538 |
},dispatchContentEvent:function(e){ |
| 539 |
return this.content.dispatchEvent(e); |
| 540 |
},dispatchHeaderEvent:function(e){ |
| 541 |
return this.header.dispatchEvent(e); |
| 542 |
},setColWidth:function(_57,_58){ |
| 543 |
this.grid.setCellWidth(_57,_58+"px"); |
| 544 |
},update:function(){ |
| 545 |
if(!this.domNode){ |
| 546 |
return;
|
| 547 |
} |
| 548 |
this.content.update();
|
| 549 |
this.grid.update();
|
| 550 |
var _59=this.scrollboxNode.scrollLeft; |
| 551 |
this.scrollboxNode.scrollLeft=_59;
|
| 552 |
this.headerNode.scrollLeft=_59;
|
| 553 |
}}); |
| 554 |
dojo.declare("dojox.grid._GridAvatar",dojo.dnd.Avatar,{construct:function(){ |
| 555 |
var dd=dojo.doc;
|
| 556 |
var a=dd.createElement("table"); |
| 557 |
a.cellPadding=a.cellSpacing="0";
|
| 558 |
a.className="dojoxGridDndAvatar";
|
| 559 |
a.style.position="absolute";
|
| 560 |
a.style.zIndex=1999;
|
| 561 |
a.style.margin="0px";
|
| 562 |
var b=dd.createElement("tbody"); |
| 563 |
var tr=dd.createElement("tr"); |
| 564 |
var td=dd.createElement("td"); |
| 565 |
var img=dd.createElement("td"); |
| 566 |
tr.className="dojoxGridDndAvatarItem";
|
| 567 |
img.className="dojoxGridDndAvatarItemImage";
|
| 568 |
img.style.width="16px";
|
| 569 |
var _5a=this.manager.source,_5b; |
| 570 |
if(_5a.creator){
|
| 571 |
_5b=_5a._normalizedCreator(_5a.getItem(this.manager.nodes[0].id).data,"avatar").node; |
| 572 |
}else{
|
| 573 |
_5b=this.manager.nodes[0].cloneNode(true); |
| 574 |
var _5c,_5d;
|
| 575 |
if(_5b.tagName.toLowerCase()=="tr"){ |
| 576 |
_5c=dd.createElement("table");
|
| 577 |
_5d=dd.createElement("tbody");
|
| 578 |
_5d.appendChild(_5b); |
| 579 |
_5c.appendChild(_5d); |
| 580 |
_5b=_5c; |
| 581 |
}else{
|
| 582 |
if(_5b.tagName.toLowerCase()=="th"){ |
| 583 |
_5c=dd.createElement("table");
|
| 584 |
_5d=dd.createElement("tbody");
|
| 585 |
var r=dd.createElement("tr"); |
| 586 |
_5c.cellPadding=_5c.cellSpacing="0";
|
| 587 |
r.appendChild(_5b); |
| 588 |
_5d.appendChild(r); |
| 589 |
_5c.appendChild(_5d); |
| 590 |
_5b=_5c; |
| 591 |
} |
| 592 |
} |
| 593 |
} |
| 594 |
_5b.id="";
|
| 595 |
td.appendChild(_5b); |
| 596 |
tr.appendChild(img); |
| 597 |
tr.appendChild(td); |
| 598 |
dojo.style(tr,"opacity",0.9); |
| 599 |
b.appendChild(tr); |
| 600 |
a.appendChild(b); |
| 601 |
this.node=a;
|
| 602 |
var m=dojo.dnd.manager();
|
| 603 |
this.oldOffsetY=m.OFFSET_Y;
|
| 604 |
m.OFFSET_Y=1;
|
| 605 |
},destroy:function(){ |
| 606 |
dojo.dnd.manager().OFFSET_Y=this.oldOffsetY;
|
| 607 |
this.inherited(arguments); |
| 608 |
}}); |
| 609 |
var _5e=dojo.dnd.manager().makeAvatar;
|
| 610 |
dojo.dnd.manager().makeAvatar=function(){ |
| 611 |
var src=this.source; |
| 612 |
if(src.viewIndex!==undefined&&!dojo.hasClass(dojo.body(),"dijit_a11y")){ |
| 613 |
return new dojox.grid._GridAvatar(this); |
| 614 |
} |
| 615 |
return _5e.call(dojo.dnd.manager());
|
| 616 |
}; |
| 617 |
})(); |
| 618 |
} |