Christophe Dumez
16 years ago
6 changed files with 111 additions and 11 deletions
@ -0,0 +1,89 @@ |
|||||||
|
var ProgressBar=new Class({ |
||||||
|
initialize:function(value,parameters){ |
||||||
|
var vals={ |
||||||
|
'id':'progressbar_'+(ProgressBars++), |
||||||
|
'value':$pick(value,0), |
||||||
|
'width':0, |
||||||
|
'height':0, |
||||||
|
'darkbg':'#006', |
||||||
|
'darkfg':'#fff', |
||||||
|
'lightbg':'#fff', |
||||||
|
'lightfg':'#000' |
||||||
|
}; |
||||||
|
if(parameters && $type(parameters)=='object')$extend(vals,parameters); |
||||||
|
if(vals.height<12)vals.height=12; |
||||||
|
var obj=new Element('div',{ |
||||||
|
'id':vals.id, |
||||||
|
'class':'progressbar_wrapper', |
||||||
|
'styles':{ |
||||||
|
'border':'1px solid #000', |
||||||
|
'width':vals.width, |
||||||
|
'height':vals.height, |
||||||
|
'position':'relative' |
||||||
|
} |
||||||
|
}); |
||||||
|
obj.vals=vals; |
||||||
|
obj.vals.dark=new Element('div',{ |
||||||
|
'id':vals.id+'_dark', |
||||||
|
'class':'progressbar_dark', |
||||||
|
'styles':{ |
||||||
|
'width':vals.width, |
||||||
|
'height':vals.height, |
||||||
|
'background':vals.darkbg, |
||||||
|
'color':vals.darkfg, |
||||||
|
'position':'absolute', |
||||||
|
'text-align':'center', |
||||||
|
'left':0, |
||||||
|
'top':0, |
||||||
|
'line-height':vals.height-2 |
||||||
|
} |
||||||
|
}); |
||||||
|
obj.vals.light=new Element('div',{ |
||||||
|
'id':vals.id+'_light', |
||||||
|
'class':'progressbar_light', |
||||||
|
'styles':{ |
||||||
|
'width':vals.width, |
||||||
|
'height':vals.height, |
||||||
|
'background':vals.lightbg, |
||||||
|
'color':vals.lightfg, |
||||||
|
'position':'absolute', |
||||||
|
'text-align':'center', |
||||||
|
'left':0, |
||||||
|
'top':0, |
||||||
|
'line-height':vals.height-2 |
||||||
|
} |
||||||
|
}); |
||||||
|
obj.appendChild(obj.vals.dark); |
||||||
|
obj.appendChild(obj.vals.light); |
||||||
|
obj.setValue=ProgressBar_setValue; |
||||||
|
if(vals.width)obj.setValue(vals.value); |
||||||
|
else setTimeout('ProgressBar_checkForParent("'+obj.id+'")',1); |
||||||
|
return obj; |
||||||
|
} |
||||||
|
}); |
||||||
|
function ProgressBar_setValue(value){ |
||||||
|
value=parseFloat(value); |
||||||
|
if(isNaN(value))value=0; |
||||||
|
if(value>100)value=100; |
||||||
|
if(value<0)value=0; |
||||||
|
this.vals.value=value; |
||||||
|
this.vals.dark.empty(); |
||||||
|
this.vals.light.empty(); |
||||||
|
this.vals.dark.appendText(value+'%'); |
||||||
|
this.vals.light.appendText(value+'%'); |
||||||
|
var r=parseInt(this.vals.width*(value/100)); |
||||||
|
this.vals.dark.setStyle('clip','rect(0,'+r+'px,'+this.vals.height+'px,0)'); |
||||||
|
this.vals.light.setStyle('clip','rect(0,'+this.vals.width+'px,'+this.vals.height+'px,'+r+'px)'); |
||||||
|
} |
||||||
|
function ProgressBar_checkForParent(id){ |
||||||
|
var obj=$(id); |
||||||
|
if(!obj)return; |
||||||
|
if(!obj.parentNode)return setTimeout('ProgressBar_checkForParent("'+id+'")',1); |
||||||
|
obj.setStyle('width','100%'); |
||||||
|
var w=obj.offsetWidth; |
||||||
|
obj.vals.dark.setStyle('width',w); |
||||||
|
obj.vals.light.setStyle('width',w); |
||||||
|
obj.vals.width=w; |
||||||
|
obj.setValue(obj.vals.value); |
||||||
|
} |
||||||
|
var ProgressBars=0; |
Loading…
Reference in new issue