package { import flash.display.MovieClip; import flash.geom.Rectangle; public class stbar { public var myclip; public var solidbody; public var mythickness; public var mydistance; public var myuiManager; public var mychart; public var mycolor; public var mymax; public var myval; public var rawval; public var mymask; public var myframe; public var myorientation; public var extrayoff; public var framecap, solidcap, frameedge1, frameedge2, grad; public var framecorner1, framecorner2, framejoiner; public var solidcorner1, solidcorner2, solidjoiner; public var plab; public var patternclip; public var whichbartype; public var usepattern; public var labelback; public var uselabback; public var holdrect; public var glasstop_w, glasstop_h, glasstop_base, glasstop_stem; public var dohidelab; public var doinitspace; public function stbar(uiman, chart) { this.myuiManager = uiman; this.mychart = chart; this.dohidelab = false; this.doinitspace = false; this.glasstop_w = 91; this.glasstop_h = 45; this.glasstop_base = 16; this.glasstop_stem = 8; this.extrayoff = 0; // constructor code } public function drawglassbar(){ var ratio_w = this.mythickness / this.glasstop_w; var gt_w = this.glasstop_w * ratio_w; if(gt_w %2>0){gt_w++;} var gt_h = this.glasstop_h * ratio_w; var gt_b = this.glasstop_base * ratio_w; var gt_s = this.glasstop_stem * ratio_w; if(gt_s %2>0){gt_s++;} var gt_s_hlf = gt_s/2; var mdpnt = gt_w/2; var remht = this.mydistance- (gt_w + gt_b); this.grad.graphics.moveTo(0,0); this.grad.graphics.lineTo(gt_w,0); this.grad.graphics.lineTo(gt_w,gt_h); this.grad.graphics.lineTo(mdpnt+gt_s_hlf,gt_h+gt_b); this.grad.graphics.lineTo(mdpnt+gt_s_hlf,this.mydistance); this.grad.graphics.lineTo(mdpnt-gt_s_hlf,this.mydistance); this.grad.graphics.lineTo(mdpnt-gt_s_hlf,gt_h+gt_b); this.grad.graphics.lineTo(0,gt_h); this.grad.graphics.lineTo(0,0); } public function hidelab(){ this.plab.alpha = 0.0; } public function setOrientation(ornt){ this.myorientation = ornt; } public function setThickness(th){ this.mythickness = th; if(this.mythickness > 12){ this.usepattern = false; } else{ this.usepattern = false; } } public function setDistance(d){ this.mydistance = d; } public function setValues(m,v,r){ this.mymax = m; this.myval = v.toFixed(4); this.rawval = r; } public function shiftplab(dir){ if(dir == "up"){ this.plab.y -= 5; } else if(dir=="down"){ this.plab.y +=1; } else if(dir == "right"){ this.plab.x += 5; } else if(dir == "left"){ this.plab.x -= 5; } else if(dir == "nudgeup"){ this.plab.y -= 2; } else if(dir == "nudgedown"){ this.plab.y += 2; } } public function changeLabColor(c){ this.myuiManager.changeLabColor(this.plab.labtxt,c); } public function changeColor(c){ this.mycolor = c; this.grad.graphics.clear(); this.grad.graphics.beginFill(this.mycolor); if(this.mychart.barstyle == "glass"){ this.drawglassbar(); } else if(this.myorientation == "horizontal"){ this.grad.graphics.drawRect(this.holdrect.x,this.holdrect.y,this.holdrect.width,this.holdrect.height); } else if(this.myorientation == "vertical"){ this.grad.graphics.drawRect(this.holdrect.x,this.holdrect.y,this.holdrect.width,this.holdrect.height); } this.grad.graphics.endFill(); } public function addValLab(val,x){ var newlab = new labLeftVal(); if(val >= 0){ if(val == 0){ newlab.labtxt.text = "0"; } else if(val > 1.0){ if(val > 1000){ newlab.labtxt.text = "$"+(Math.round(val/1000))+"K"; } //this.plab.labtxt.text = this.mychart.dollarFormat(this.myval); else{ newlab.labtxt.text = this.mychart.decimalFormatRound(newlab); } } else{ if(!(this.mychart.mydataManager.getrule("pctdecimal")==false)){ newlab.labtxt.text = this.mychart.decimalFormatRound(val)+"%"; } else{ if((val*100) < 0.5){ newlab.labtxt.text = "<1%"; } else{ newlab.labtxt.text = Math.round((val*100))+"%"; } } } } else{ if(val > 1.0){ newlab.labtxt.text = -this.mychart.dollarFormat(val); } else{ newlab.labtxt.text = -Math.round(val)+"%"; } } this.myuiManager.changeLabSize(newlab.labtxt,8); this.myclip.addChild(newlab); newlab.labtxt.width = newlab.labtxt.textWidth+10; newlab.x = x; newlab.y = this.mythickness/2; trace("~~"+val+" "+x+"~~"); } public function buildBar(){ /* piece parts framecap: framecapVert, framecapHorz; solidcap: solidcapVert, solidcapHorz; frameedgevert frameedgehorz; gradientHorz, gradientVert; */ if(this.mychart.barstyle=="glass"){ this.plab = new lableftwhite(); this.myuiManager.changeLabSize(this.plab.labtxt,13); } else if(this.mychart.labellist.length > 6){ if(this.mychart.islonglist){ this.plab = new labLeftVal(); } else{ this.plab = new labLeftVal(); } } else{ this.plab = new labLeftVal(); } if(this.myval >= 0){ if(this.myval == 0){ this.plab.labtxt.text = "0"; } else if(this.rawval > 1.0){ if(this.rawval > 1000){ this.plab.labtxt.text = "$"+(Math.round(this.myval/1000))+"K"; } //this.plab.labtxt.text = this.mychart.dollarFormat(this.myval); else{ this.plab.labtxt.text = this.mychart.decimalFormatRound(this.myval); } } else{ if(!(this.mychart.mydataManager.getrule("pctdecimal")==false)){ this.plab.labtxt.text = this.mychart.decimalFormatRound(this.myval)+"%"; } else{ if(this.myval < 0.5){ this.plab.labtxt.text = "<1%"; } else{ this.plab.labtxt.text = Math.round(this.myval)+"%"; } } } } else{ if(this.rawval > 1.0){ this.plab.labtxt.text = -this.mychart.dollarFormat(this.myval); } else{ this.plab.labtxt.text = -Math.round(this.myval)+"%"; } } this.myclip = new MovieClip(); this.mymask = new MovieClip(); this.patternclip = new dlinepattern(); if(this.myorientation == "horizontal"){ this.grad = new MovieClip(); } else{ this.grad = new MovieClip(); } this.grad.graphics.beginFill(this.mycolor); if(this.mychart.islonglist == true){ this.grad.alpha = 0.3; } if( (!(this.mychart.barstyle=="glass")) && this.usepattern == true){ this.grad.addChild(this.patternclip); } this.myclip.addChild(this.grad); if(!(this.mychart.barstyle=="glass")){ this.myclip.addChild(this.mymask); } if(this.mychart.numperGroup>1 && this.mychart.orientation=="horizontal"){ this.labelback = new MovieClip(); this.labelback.graphics.beginFill(this.mychart.labcolor); this.labelback.graphics.drawRect(0,0,2,this.mythickness); if(this.dohidelab == false){ this.myclip.addChild(this.labelback); } } if(this.dohidelab == true){ ; } else{ this.myclip.addChild(this.plab); } if(!(this.mychart.barstyle=="glass")){ this.grad.mask = this.mymask; } var usemethod; if(this.mychart.barstyle =="glass"){ var d = this.mychart.chartHeight * (this.myval / this.mymax); this.setDistance(d); this.myuiManager.changeLabSize(this.plab.labtxt,22); if(this.mythickness > ((this.plab.labtxt.textWidth)*1.5) || this.myuiManager.ismobile==true){ this.myuiManager.changeLabSize(this.plab.labtxt,16); } this.plab.x = (this.mythickness/2)-(this.plab.labtxt.textWidth/2)-4; this.plab.y = this.myuiManager.ismobile==true?12:16; this.grad.x = 0; this.grad.y = 0; this.drawglassbar(); this.grad.graphics.endFill(); } else if(this.myorientation == "horizontal"){ /* var d; if(this.mychart.islonglist == true){ d = this.mychart.fullwidth * (this.myval / this.mymax); } else if (this.mychart.ismultihorz==true){ d = (this.mychart.chartWidth-40) * (this.myval / this.mymax); } else{ d = this.mychart.chartWidth * (this.myval / this.mymax); } */ //this.setDistance(d); var d = this.mydistance; //tempset this.grad.x = 0; this.grad.y = 0; if(this.mychart.numperGroup>1){ this.labelback.x = 0; this.labelback.y = 0; this.labelback.alpha = 0.5; var laboff; if(this.doinitspace == true){ if(this.mychart.numperGroup==3){ laboff = 65; } else{ laboff = 45; } } else{ laboff = 0; } this.grad.graphics.drawRect(laboff,0,d,this.mythickness); this.holdrect = new Rectangle(laboff,0,d,this.mythickness); //this.grad.width = d+1; //this.grad.height= this.mythickness; var solidwidth = (this.mydistance); this.mymask.graphics.beginFill(0x000000,1.0); this.mymask.graphics.drawRect(laboff,0,solidwidth,this.mythickness); this.mymask.graphics.endFill(); this.mymask.x = 0; this.mymask.y = 0; this.mychart.myuiManager.changeFont(this.plab.labtxt,"pnsb"); this.mychart.myuiManager.changeLabColor(this.plab.labtxt,this.mychart.labcolor); this.plab.labtxt.width = this.plab.labtxt.textWidth+10; this.plab.x = 4; var tstlabw = this.plab.labtxt.textWidth; var difftest = tstlabw - ((40 - this.plab.x)-3); if(difftest > 0){ var px = this.plab.x; this.plab.x -= difftest; } this.plab.y = this.mythickness/2; } else{ if(this.mychart.islonglist == true){ this.grad.graphics.drawRect(0,0,d,this.mythickness); this.holdrect = new Rectangle(0,0,d,this.mythickness); } else{ if(this.dohidelab == false){ this.grad.graphics.drawRect(40,0,d,this.mythickness); this.holdrect = new Rectangle(40,0,d,this.mythickness); } else{ this.grad.graphics.drawRect(0,0,d,this.mythickness); this.holdrect = new Rectangle(0,0,d,this.mythickness); } } //this.grad.width = d+1; //this.grad.height= this.mythickness; var solidwidth = (this.mydistance); this.mymask.graphics.beginFill(0x000000,1.0); if(this.mychart.islonglist == true){ this.mymask.graphics.drawRect(0,0,solidwidth,this.mythickness); this.myuiManager.changeFont(this.plab.labtxt,"pnr"); this.myuiManager.changeLabColor(this.plab.labtxt,this.myuiManager.colorhexoblist['dark_black']); this.myuiManager.changeLabSize(this.plab.labtxt,16); } else{ if(this.dohidelab == false){ this.mymask.graphics.drawRect(40,0,solidwidth,this.mythickness); this.myuiManager.changeFont(this.plab.labtxt,"pnb"); this.myuiManager.changeLabColor(this.plab.labtxt,this.myuiManager.colorhexoblist['dark_black']); } else{ this.mymask.graphics.drawRect(0,0,solidwidth,this.mythickness); this.myuiManager.changeFont(this.plab.labtxt,"pnb"); this.myuiManager.changeLabColor(this.plab.labtxt,this.myuiManager.colorhexoblist['dark_black']); } } //this.myuiManager.changeLabSize(this.plab.labtxt,16); this.mymask.graphics.endFill(); this.mymask.x = 0; this.mymask.y = 0; var textwidthtest = this.plab.labtxt.textWidth; //this.plab.labtxt.width = this.plab.labtxt.textWidth+40; if(this.mychart.islonglist == true){ this.plab.x = this.mychart.fullwidth - 80; } else{ this.plab.labtxt.width = 44; var tf = this.plab.labtxt.defaultTextFormat; tf.align = "center"; this.plab.labtxt.defaultTextFormat = tf; this.plab.labtxt.setTextFormat(tf); if(this.mychart.labellist.length > 6){ this.plab.x = -3; } else{ this.plab.x = -3; } } var yoff = this.myuiManager.ismobile?3:1; this.plab.y = this.mythickness/2-yoff; } if(this.myuiManager.labexception == true){ this.grad.alpha = 0.0; } } else if(this.myorientation == "vertical"){ var d; if(this.mychart.maxvalneg == 0){ d = this.mychart.chartHeight * (this.myval / this.mymax); } else{ var maxtotal = Math.abs(this.mychart.maxvalneg) + this.mychart.maxval; var negfrac = (Math.abs(this.mychart.maxvalneg) / maxtotal); var negportion = negfrac * this.mychart.chartHeight; var posportion = (this.mychart.chartHeight - negportion); if(this.myval < 0){ d = negportion * (Math.abs(this.myval) / Math.abs(this.mychart.maxvalneg)); } else{ d = posportion * (this.myval / this.mychart.maxval); } } this.setDistance(d); if(this.myval >= 0){ this.plab.y = 8; } else{ this.plab.y = (d + 8); } this.myuiManager.changeFont(this.plab.labtxt,"rcr"); this.myuiManager.changeLabColor(this.plab.labtxt,0xffffff); this.myuiManager.changeLabSize(this.plab.labtxt,22); if(this.plab.labtxt.textWidth > (this.mythickness-2)){ this.myuiManager.changeLabSize(this.plab.labtxt,14); } this.plab.x = (this.mythickness/2)-(this.plab.labtxt.textWidth/2)-5; this.plab.x += 2; if(d < (this.plab.labtxt.textHeight+10)){ this.myuiManager.changeLabColor(this.plab.labtxt,this.mycolor); this.plab.y = -(this.plab.labtxt.textHeight+4); } this.grad.x = 0; this.grad.y = -1; this.grad.graphics.drawRect(0,0,this.mythickness-1,d+1); this.holdrect = new Rectangle(0,0,this.mythickness-1,d+1); this.grad.graphics.endFill(); //this.grad.width = this.mythickness-1; //this.grad.height= d+1; var solidheight = (this.mydistance); this.mymask.graphics.beginFill(0x000000,1.0); this.mymask.graphics.drawRect(0,0,this.mythickness-1,solidheight-1); this.mymask.graphics.endFill(); this.mymask.x = 0; this.mymask.y = 0; } } } }