root / trunk / web / dojo / dojox / image / Badge.js
History | View | Annotate | Download (3.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.image.Badge"]){ |
| 9 |
dojo._hasResource["dojox.image.Badge"]=true; |
| 10 |
dojo.provide("dojox.image.Badge");
|
| 11 |
dojo.experimental("dojox.image.Badge");
|
| 12 |
dojo.require("dijit._Widget");
|
| 13 |
dojo.require("dijit._Templated");
|
| 14 |
dojo.require("dojo.fx.easing");
|
| 15 |
dojo.declare("dojox.image.Badge",[dijit._Widget,dijit._Templated],{baseClass:"dojoxBadge",templateString:"<div class=\"dojoxBadge\" dojoAttachPoint=\"containerNode\"></div>",children:"div.dojoxBadgeImage",rows:4,cols:5,cellSize:50,cellMargin:1,delay:2000,threads:1,easing:"dojo.fx.easing.backOut",startup:function(){ |
| 16 |
if(this._started){ |
| 17 |
return;
|
| 18 |
} |
| 19 |
if(dojo.isString(this.easing)){ |
| 20 |
this.easing=dojo.getObject(this.easing); |
| 21 |
} |
| 22 |
this.inherited(arguments); |
| 23 |
this._init();
|
| 24 |
},_init:function(){ |
| 25 |
var _1=0,_2=this.cellSize; |
| 26 |
dojo.style(this.domNode,{width:_2*this.cols+"px",height:_2*this.rows+"px"}); |
| 27 |
this._nl=dojo.query(this.children,this.containerNode).forEach(function(n,_3){ |
| 28 |
var _4=_3%this.cols,t=_1*_2,l=_4*_2,m=this.cellMargin*2; |
| 29 |
dojo.style(n,{top:t+"px",left:l+"px",width:_2-m+"px",height:_2-m+"px"});
|
| 30 |
if(_4==this.cols-1){ |
| 31 |
_1++; |
| 32 |
} |
| 33 |
dojo.addClass(n,this.baseClass+"Image"); |
| 34 |
},this);
|
| 35 |
var l=this._nl.length; |
| 36 |
while(this.threads--){ |
| 37 |
var s=Math.floor(Math.random()*l);
|
| 38 |
setTimeout(dojo.hitch(this,"_enbiggen",{target:this._nl[s]}),this.delay*this.threads); |
| 39 |
} |
| 40 |
},_getCell:function(n){ |
| 41 |
var _5=this._nl.indexOf(n); |
| 42 |
if(_5>=0){ |
| 43 |
var _6=_5%this.cols; |
| 44 |
var _7=Math.floor(_5/this.cols); |
| 45 |
return {x:_6,y:_7,n:this._nl[_5],io:_5}; |
| 46 |
}else{
|
| 47 |
return undefined; |
| 48 |
} |
| 49 |
},_getImage:function(){ |
| 50 |
return "url('')"; |
| 51 |
},_enbiggen:function(e){ |
| 52 |
var _8=this._getCell(e.target||e); |
| 53 |
if(_8){
|
| 54 |
var m=this.cellMargin,_9=(this.cellSize*2)-(m*2),_a={height:_9,width:_9}; |
| 55 |
var _b=function(){ |
| 56 |
return Math.round(Math.random());
|
| 57 |
}; |
| 58 |
if(_8.x==this.cols-1||(_8.x>0&&_b())){ |
| 59 |
_a.left=this.cellSize*(_8.x-m);
|
| 60 |
} |
| 61 |
if(_8.y==this.rows-1||(_8.y>0&&_b())){ |
| 62 |
_a.top=this.cellSize*(_8.y-m);
|
| 63 |
} |
| 64 |
var bc=this.baseClass; |
| 65 |
dojo.addClass(_8.n,bc+"Top");
|
| 66 |
dojo.addClass(_8.n,bc+"Seen");
|
| 67 |
dojo.animateProperty({node:_8.n,properties:_a,onEnd:dojo.hitch(this,"_loadUnder",_8,_a),easing:this.easing}).play();
|
| 68 |
} |
| 69 |
},_loadUnder:function(_c,_d){ |
| 70 |
var _e=_c.io;
|
| 71 |
var _f=[];
|
| 72 |
var _10=(_d.left>=0); |
| 73 |
var _11=(_d.top>=0); |
| 74 |
var c=this.cols,e=_e+(_10?-1:1),f=_e+(_11?-c:c),g=(_11?(_10?e-c:f+1):(_10?f-1:e+c)),bc=this.baseClass; |
| 75 |
dojo.forEach([e,f,g],function(x){
|
| 76 |
var n=this._nl[x]; |
| 77 |
if(n){
|
| 78 |
if(dojo.hasClass(n,bc+"Seen")){ |
| 79 |
dojo.removeClass(n,bc+"Seen");
|
| 80 |
} |
| 81 |
} |
| 82 |
},this);
|
| 83 |
setTimeout(dojo.hitch(this,"_disenbiggen",_c,_d),this.delay*1.25); |
| 84 |
},_disenbiggen:function(_12,_13){ |
| 85 |
if(_13.top>=0){ |
| 86 |
_13.top+=this.cellSize;
|
| 87 |
} |
| 88 |
if(_13.left>=0){ |
| 89 |
_13.left+=this.cellSize;
|
| 90 |
} |
| 91 |
var _14=this.cellSize-(this.cellMargin*2); |
| 92 |
dojo.animateProperty({node:_12.n,properties:dojo.mixin(_13,{width:_14,height:_14}),onEnd:dojo.hitch(this,"_cycle",_12,_13)}).play(5);
|
| 93 |
},_cycle:function(_15,_16){ |
| 94 |
var bc=this.baseClass; |
| 95 |
dojo.removeClass(_15.n,bc+"Top");
|
| 96 |
var ns=this._nl.filter(function(n){ |
| 97 |
return !dojo.hasClass(n,bc+"Seen"); |
| 98 |
}); |
| 99 |
var c=ns[Math.floor(Math.random()*ns.length)];
|
| 100 |
setTimeout(dojo.hitch(this,"_enbiggen",{target:c}),this.delay/2); |
| 101 |
}}); |
| 102 |
} |