root / trunk / web / dojo / dojox / widget / Standby.js @ 9
History | View | Annotate | Download (9.83 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.widget.Standby"]){ |
||
| 9 | dojo._hasResource["dojox.widget.Standby"]=true; |
||
| 10 | dojo.provide("dojox.widget.Standby");
|
||
| 11 | dojo.require("dojo.window");
|
||
| 12 | dojo.require("dojo.fx");
|
||
| 13 | dojo.require("dijit._Widget");
|
||
| 14 | dojo.require("dijit._Templated");
|
||
| 15 | dojo.experimental("dojox.widget.Standby");
|
||
| 16 | dojo.declare("dojox.widget.Standby",[dijit._Widget,dijit._Templated],{templateString:"<div>"+"<div style=\"display: none; opacity: 0; z-index: 9999; "+"position: absolute; cursor:wait;\" dojoAttachPoint=\"_underlayNode\"></div>"+"<img src=\"${image}\" style=\"opacity: 0; display: none; z-index: -10000; "+"position: absolute; top: 0px; left: 0px; cursor:wait;\" "+"dojoAttachPoint=\"_imageNode\">"+"<div style=\"opacity: 0; display: none; z-index: -10000; position: absolute; "+"top: 0px;\" dojoAttachPoint=\"_textNode\"></div>"+"</div>",_underlayNode:null,_imageNode:null,_textNode:null,_centerNode:null,image:dojo.moduleUrl("dojox","widget/Standby/images/loading.gif").toString(),imageText:"Please Wait...",text:"Please wait...",centerIndicator:"image",_displayed:false,_resizeCheck:null,target:"",color:"#C0C0C0",duration:500,_started:false,_parent:null,zIndex:"auto",startup:function(_1){ |
||
| 17 | if(!this._started){ |
||
| 18 | if(typeof this.target==="string"){ |
||
| 19 | var w=dijit.byId(this.target); |
||
| 20 | if(w){
|
||
| 21 | this.target=w.domNode;
|
||
| 22 | }else{
|
||
| 23 | this.target=dojo.byId(this.target); |
||
| 24 | } |
||
| 25 | } |
||
| 26 | if(this.text){ |
||
| 27 | this._textNode.innerHTML=this.text; |
||
| 28 | } |
||
| 29 | if(this.centerIndicator==="image"){ |
||
| 30 | this._centerNode=this._imageNode; |
||
| 31 | dojo.attr(this._imageNode,"src",this.image); |
||
| 32 | dojo.attr(this._imageNode,"alt",this.imageText); |
||
| 33 | }else{
|
||
| 34 | this._centerNode=this._textNode; |
||
| 35 | } |
||
| 36 | dojo.style(this._underlayNode,{display:"none",backgroundColor:this.color}); |
||
| 37 | dojo.style(this._centerNode,"display","none"); |
||
| 38 | this.connect(this._underlayNode,"onclick","_ignore"); |
||
| 39 | if(this.domNode.parentNode&&this.domNode.parentNode!=dojo.body()){ |
||
| 40 | dojo.body().appendChild(this.domNode);
|
||
| 41 | } |
||
| 42 | if(dojo.isIE==7){ |
||
| 43 | this._ieFixNode=dojo.doc.createElement("div"); |
||
| 44 | dojo.style(this._ieFixNode,{opacity:"0",zIndex:"-1000",position:"absolute",top:"-1000px"}); |
||
| 45 | dojo.body().appendChild(this._ieFixNode);
|
||
| 46 | } |
||
| 47 | } |
||
| 48 | },show:function(){ |
||
| 49 | if(!this._displayed){ |
||
| 50 | this._displayed=true; |
||
| 51 | this._size();
|
||
| 52 | this._disableOverflow();
|
||
| 53 | this._fadeIn();
|
||
| 54 | } |
||
| 55 | },hide:function(){ |
||
| 56 | if(this._displayed){ |
||
| 57 | this._size();
|
||
| 58 | this._fadeOut();
|
||
| 59 | this._displayed=false; |
||
| 60 | if(this._resizeCheck!==null){ |
||
| 61 | clearInterval(this._resizeCheck);
|
||
| 62 | this._resizeCheck=null; |
||
| 63 | } |
||
| 64 | } |
||
| 65 | },isVisible:function(){ |
||
| 66 | return this._displayed; |
||
| 67 | },onShow:function(){ |
||
| 68 | },onHide:function(){ |
||
| 69 | },uninitialize:function(){ |
||
| 70 | this._displayed=false; |
||
| 71 | if(this._resizeCheck){ |
||
| 72 | clearInterval(this._resizeCheck);
|
||
| 73 | } |
||
| 74 | dojo.style(this._centerNode,"display","none"); |
||
| 75 | dojo.style(this._underlayNode,"display","none"); |
||
| 76 | if(dojo.isIE==7){ |
||
| 77 | dojo.body().removeChild(this._ieFixNode);
|
||
| 78 | delete this._ieFixNode; |
||
| 79 | } |
||
| 80 | this.target=null; |
||
| 81 | this._imageNode=null; |
||
| 82 | this._textNode=null; |
||
| 83 | this._centerNode=null; |
||
| 84 | this.inherited(arguments); |
||
| 85 | },_size:function(){ |
||
| 86 | if(this._displayed){ |
||
| 87 | var _2=dojo.attr(dojo.body(),"dir"); |
||
| 88 | if(_2){
|
||
| 89 | _2=_2.toLowerCase(); |
||
| 90 | } |
||
| 91 | var _3;
|
||
| 92 | var _4=this._scrollerWidths(); |
||
| 93 | var _5=this.target; |
||
| 94 | var _6=dojo.style(this._centerNode,"display"); |
||
| 95 | dojo.style(this._centerNode,"display","block"); |
||
| 96 | var _7=dojo.position(_5,true); |
||
| 97 | if(_5===dojo.body()||_5===dojo.doc){
|
||
| 98 | _7=dojo.window.getBox(); |
||
| 99 | _7.x=_7.l; |
||
| 100 | _7.y=_7.t; |
||
| 101 | } |
||
| 102 | var _8=dojo.marginBox(this._centerNode); |
||
| 103 | dojo.style(this._centerNode,"display",_6); |
||
| 104 | if(this._ieFixNode){ |
||
| 105 | _3=-this._ieFixNode.offsetTop/1000; |
||
| 106 | _7.x=Math.floor((_7.x+0.9)/_3);
|
||
| 107 | _7.y=Math.floor((_7.y+0.9)/_3);
|
||
| 108 | _7.w=Math.floor((_7.w+0.9)/_3);
|
||
| 109 | _7.h=Math.floor((_7.h+0.9)/_3);
|
||
| 110 | } |
||
| 111 | var zi=dojo.style(_5,"zIndex"); |
||
| 112 | var _9=zi;
|
||
| 113 | var _a=zi;
|
||
| 114 | if(this.zIndex==="auto"){ |
||
| 115 | if(zi!="auto"){ |
||
| 116 | _9=parseInt(_9,10)+1; |
||
| 117 | _a=parseInt(_a,10)+2; |
||
| 118 | }else{
|
||
| 119 | var _b=_5.parentNode;
|
||
| 120 | var _c=-100000; |
||
| 121 | while(_b&&_b!==dojo.body()){
|
||
| 122 | zi=dojo.style(_b,"zIndex");
|
||
| 123 | if(!zi||zi==="auto"){ |
||
| 124 | _b=_b.parentNode; |
||
| 125 | }else{
|
||
| 126 | var _d=parseInt(zi,10); |
||
| 127 | if(_c<_d){
|
||
| 128 | _c=_d; |
||
| 129 | _9=_d+1;
|
||
| 130 | _a=_d+2;
|
||
| 131 | } |
||
| 132 | _b=_b.parentNode; |
||
| 133 | } |
||
| 134 | } |
||
| 135 | } |
||
| 136 | }else{
|
||
| 137 | _9=parseInt(this.zIndex,10)+1; |
||
| 138 | _a=parseInt(this.zIndex,10)+2; |
||
| 139 | } |
||
| 140 | dojo.style(this._centerNode,"zIndex",_a); |
||
| 141 | dojo.style(this._underlayNode,"zIndex",_9); |
||
| 142 | var pn=_5.parentNode;
|
||
| 143 | if(pn&&pn!==dojo.body()&&_5!==dojo.body()&&_5!==dojo.doc){
|
||
| 144 | var _e=_7.h;
|
||
| 145 | var _f=_7.w;
|
||
| 146 | var _10=dojo.position(pn,true); |
||
| 147 | if(this._ieFixNode){ |
||
| 148 | _3=-this._ieFixNode.offsetTop/1000; |
||
| 149 | _10.x=Math.floor((_10.x+0.9)/_3);
|
||
| 150 | _10.y=Math.floor((_10.y+0.9)/_3);
|
||
| 151 | _10.w=Math.floor((_10.w+0.9)/_3);
|
||
| 152 | _10.h=Math.floor((_10.h+0.9)/_3);
|
||
| 153 | } |
||
| 154 | _10.w-=pn.scrollHeight>pn.clientHeight&&pn.clientHeight>0?_4.v:0; |
||
| 155 | _10.h-=pn.scrollWidth>pn.clientWidth&&pn.clientWidth>0?_4.h:0; |
||
| 156 | if(_2==="rtl"){ |
||
| 157 | if(dojo.isOpera){
|
||
| 158 | _7.x+=pn.scrollHeight>pn.clientHeight&&pn.clientHeight>0?_4.v:0; |
||
| 159 | _10.x+=pn.scrollHeight>pn.clientHeight&&pn.clientHeight>0?_4.v:0; |
||
| 160 | }else{
|
||
| 161 | if(dojo.isIE){
|
||
| 162 | _10.x+=pn.scrollHeight>pn.clientHeight&&pn.clientHeight>0?_4.v:0; |
||
| 163 | }else{
|
||
| 164 | if(dojo.isWebKit){
|
||
| 165 | } |
||
| 166 | } |
||
| 167 | } |
||
| 168 | } |
||
| 169 | if(_10.w<_7.w){
|
||
| 170 | _7.w=_7.w-_10.w; |
||
| 171 | } |
||
| 172 | if(_10.h<_7.h){
|
||
| 173 | _7.h=_7.h-_10.h; |
||
| 174 | } |
||
| 175 | var _11=_10.y;
|
||
| 176 | var _12=_10.y+_10.h;
|
||
| 177 | var _13=_7.y;
|
||
| 178 | var _14=_7.y+_e;
|
||
| 179 | var _15=_10.x;
|
||
| 180 | var _16=_10.x+_10.w;
|
||
| 181 | var _17=_7.x;
|
||
| 182 | var _18=_7.x+_f;
|
||
| 183 | var _19;
|
||
| 184 | if(_14>_11&&_13<_11){
|
||
| 185 | _7.y=_10.y; |
||
| 186 | _19=_11-_13; |
||
| 187 | var _1a=_e-_19;
|
||
| 188 | if(_1a<_10.h){
|
||
| 189 | _7.h=_1a; |
||
| 190 | }else{
|
||
| 191 | _7.h-=2*(pn.scrollWidth>pn.clientWidth&&pn.clientWidth>0?_4.h:0); |
||
| 192 | } |
||
| 193 | }else{
|
||
| 194 | if(_13<_12&&_14>_12){
|
||
| 195 | _7.h=_12-_13; |
||
| 196 | }else{
|
||
| 197 | if(_14<=_11||_13>=_12){
|
||
| 198 | _7.h=0;
|
||
| 199 | } |
||
| 200 | } |
||
| 201 | } |
||
| 202 | if(_18>_15&&_17<_15){
|
||
| 203 | _7.x=_10.x; |
||
| 204 | _19=_15-_17; |
||
| 205 | var _1b=_f-_19;
|
||
| 206 | if(_1b<_10.w){
|
||
| 207 | _7.w=_1b; |
||
| 208 | }else{
|
||
| 209 | _7.w-=2*(pn.scrollHeight>pn.clientHeight&&pn.clientHeight>0?_4.w:0); |
||
| 210 | } |
||
| 211 | }else{
|
||
| 212 | if(_17<_16&&_18>_16){
|
||
| 213 | _7.w=_16-_17; |
||
| 214 | }else{
|
||
| 215 | if(_18<=_15||_17>=_16){
|
||
| 216 | _7.w=0;
|
||
| 217 | } |
||
| 218 | } |
||
| 219 | } |
||
| 220 | } |
||
| 221 | if(_7.h>0&&_7.w>0){ |
||
| 222 | dojo.style(this._underlayNode,{display:"block",width:_7.w+"px",height:_7.h+"px",top:_7.y+"px",left:_7.x+"px"}); |
||
| 223 | var _1c=["borderRadius","borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius"]; |
||
| 224 | this._cloneStyles(_1c);
|
||
| 225 | if(!dojo.isIE){
|
||
| 226 | _1c=["MozBorderRadius","MozBorderRadiusTopleft","MozBorderRadiusTopright","MozBorderRadiusBottomleft","MozBorderRadiusBottomright","WebkitBorderRadius","WebkitBorderTopLeftRadius","WebkitBorderTopRightRadius","WebkitBorderBottomLeftRadius","WebkitBorderBottomRightRadius"]; |
||
| 227 | this._cloneStyles(_1c,this); |
||
| 228 | } |
||
| 229 | var _1d=(_7.h/2)-(_8.h/2); |
||
| 230 | var _1e=(_7.w/2)-(_8.w/2); |
||
| 231 | if(_7.h>=_8.h&&_7.w>=_8.w){
|
||
| 232 | dojo.style(this._centerNode,{top:(_1d+_7.y)+"px",left:(_1e+_7.x)+"px",display:"block"}); |
||
| 233 | }else{
|
||
| 234 | dojo.style(this._centerNode,"display","none"); |
||
| 235 | } |
||
| 236 | }else{
|
||
| 237 | dojo.style(this._underlayNode,"display","none"); |
||
| 238 | dojo.style(this._centerNode,"display","none"); |
||
| 239 | } |
||
| 240 | if(this._resizeCheck===null){ |
||
| 241 | var _1f=this; |
||
| 242 | this._resizeCheck=setInterval(function(){ |
||
| 243 | _1f._size(); |
||
| 244 | },100);
|
||
| 245 | } |
||
| 246 | } |
||
| 247 | },_cloneStyles:function(_20){ |
||
| 248 | dojo.forEach(_20,function(_21){
|
||
| 249 | dojo.style(this._underlayNode,_21,dojo.style(this.target,_21)); |
||
| 250 | },this);
|
||
| 251 | },_fadeIn:function(){ |
||
| 252 | var _22=this; |
||
| 253 | var _23=dojo.animateProperty({duration:_22.duration,node:_22._underlayNode,properties:{opacity:{start:0,end:0.75}}}); |
||
| 254 | var _24=dojo.animateProperty({duration:_22.duration,node:_22._centerNode,properties:{opacity:{start:0,end:1}},onEnd:function(){ |
||
| 255 | _22.onShow(); |
||
| 256 | }}); |
||
| 257 | var _25=dojo.fx.combine([_23,_24]);
|
||
| 258 | _25.play(); |
||
| 259 | },_fadeOut:function(){ |
||
| 260 | var _26=this; |
||
| 261 | var _27=dojo.animateProperty({duration:_26.duration,node:_26._underlayNode,properties:{opacity:{start:0.75,end:0}},onEnd:function(){ |
||
| 262 | dojo.style(this.node,{"display":"none","zIndex":"-1000"}); |
||
| 263 | }}); |
||
| 264 | var _28=dojo.animateProperty({duration:_26.duration,node:_26._centerNode,properties:{opacity:{start:1,end:0}},onEnd:function(){ |
||
| 265 | dojo.style(this.node,{"display":"none","zIndex":"-1000"}); |
||
| 266 | _26.onHide(); |
||
| 267 | _26._enableOverflow(); |
||
| 268 | }}); |
||
| 269 | var _29=dojo.fx.combine([_27,_28]);
|
||
| 270 | _29.play(); |
||
| 271 | },_ignore:function(_2a){ |
||
| 272 | if(_2a){
|
||
| 273 | dojo.stopEvent(_2a); |
||
| 274 | } |
||
| 275 | },_scrollerWidths:function(){ |
||
| 276 | var div=dojo.doc.createElement("div"); |
||
| 277 | dojo.style(div,{position:"absolute",opacity:0,overflow:"hidden",width:"50px",height:"50px",zIndex:"-100",top:"-200px",left:"-200px",padding:"0px",margin:"0px"});
|
||
| 278 | var _2b=dojo.doc.createElement("div"); |
||
| 279 | dojo.style(_2b,{width:"200px",height:"10px"});
|
||
| 280 | div.appendChild(_2b); |
||
| 281 | dojo.body().appendChild(div); |
||
| 282 | var b=dojo.contentBox(div);
|
||
| 283 | dojo.style(div,"overflow","scroll"); |
||
| 284 | var a=dojo.contentBox(div);
|
||
| 285 | dojo.body().removeChild(div); |
||
| 286 | return {v:b.w-a.w,h:b.h-a.h}; |
||
| 287 | },_setTextAttr:function(_2c){ |
||
| 288 | this._textNode.innerHTML=_2c;
|
||
| 289 | this.text=_2c;
|
||
| 290 | },_setColorAttr:function(c){ |
||
| 291 | dojo.style(this._underlayNode,"backgroundColor",c); |
||
| 292 | this.color=c;
|
||
| 293 | },_setImageTextAttr:function(_2d){ |
||
| 294 | dojo.attr(this._imageNode,"alt",_2d); |
||
| 295 | this.imageText=_2d;
|
||
| 296 | },_setImageAttr:function(url){ |
||
| 297 | dojo.attr(this._imageNode,"src",url); |
||
| 298 | this.image=url;
|
||
| 299 | },_setCenterIndicatorAttr:function(_2e){ |
||
| 300 | this.centerIndicator=_2e;
|
||
| 301 | if(_2e==="image"){ |
||
| 302 | this._centerNode=this._imageNode; |
||
| 303 | dojo.style(this._textNode,"display","none"); |
||
| 304 | }else{
|
||
| 305 | this._centerNode=this._textNode; |
||
| 306 | dojo.style(this._imageNode,"display","none"); |
||
| 307 | } |
||
| 308 | },_disableOverflow:function(){ |
||
| 309 | if(this.target===dojo.body()||this.target===dojo.doc){ |
||
| 310 | this._overflowDisabled=true; |
||
| 311 | var _2f=dojo.body();
|
||
| 312 | if(_2f.style&&_2f.style.overflow){
|
||
| 313 | this._oldOverflow=dojo.style(_2f,"overflow"); |
||
| 314 | }else{
|
||
| 315 | this._oldOverflow=""; |
||
| 316 | } |
||
| 317 | if(dojo.isIE&&!dojo.isQuirks){
|
||
| 318 | if(_2f.parentNode&&_2f.parentNode.style&&_2f.parentNode.style.overflow){
|
||
| 319 | this._oldBodyParentOverflow=_2f.parentNode.style.overflow;
|
||
| 320 | }else{
|
||
| 321 | try{
|
||
| 322 | this._oldBodyParentOverflow=dojo.style(_2f.parentNode,"overflow"); |
||
| 323 | } |
||
| 324 | catch(e){
|
||
| 325 | this._oldBodyParentOverflow="scroll"; |
||
| 326 | } |
||
| 327 | } |
||
| 328 | dojo.style(_2f.parentNode,"overflow","hidden"); |
||
| 329 | } |
||
| 330 | dojo.style(_2f,"overflow","hidden"); |
||
| 331 | } |
||
| 332 | },_enableOverflow:function(){ |
||
| 333 | if(this._overflowDisabled){ |
||
| 334 | delete this._overflowDisabled; |
||
| 335 | var _30=dojo.body();
|
||
| 336 | if(dojo.isIE&&!dojo.isQuirks){
|
||
| 337 | _30.parentNode.style.overflow=this._oldBodyParentOverflow;
|
||
| 338 | delete this._oldBodyParentOverflow; |
||
| 339 | } |
||
| 340 | dojo.style(_30,"overflow",this._oldOverflow); |
||
| 341 | if(dojo.isWebKit){
|
||
| 342 | var div=dojo.create("div",{style:{height:"2px"}}); |
||
| 343 | _30.appendChild(div); |
||
| 344 | setTimeout(function(){
|
||
| 345 | _30.removeChild(div); |
||
| 346 | },0);
|
||
| 347 | } |
||
| 348 | delete this._oldOverflow; |
||
| 349 | } |
||
| 350 | }}); |
||
| 351 | } |