Files
SIG/Scripts/AjaxControlToolkit/Release/PieChart.js
2024-11-05 10:47:20 -07:00

1 line
6.5 KiB
JavaScript

Type.registerNamespace("Sys.Extended.UI"),Sys.Extended.UI.PieChart=function(t){Sys.Extended.UI.PieChart.initializeBase(this,[t]);var e=this.get_id();e=e.replace("_ctl00",""),this._parentDiv=document.getElementById(e+"__ParentDiv"),this._chartWidth="300",this._chartHeight="300",this._chartTitle="",this._pieChartClientValues=null,this._theme="PieChart",this._chartTitleColor="",this.charLength=3.5},Sys.Extended.UI.PieChart.prototype={initialize:function(){if(Sys.Extended.UI.PieChart.callBaseMethod(this,"initialize"),!document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#Image","1.1"))throw"Current version of browser does not support SVG.";this.generatePieChart()},dispose:function(){Sys.Extended.UI.PieChart.callBaseMethod(this,"dispose")},generatePieChart:function(){var t=parseInt(this._chartWidth)>parseInt(this._chartHeight)?(parseInt(this._chartHeight)-10)/3:(parseInt(this._chartWidth)-10)/3,e=parseInt(this._chartWidth)/2,i=parseInt(this._chartHeight)/2.25,a=String.format('<?xml-stylesheet type="text/css" href="{0}.css"?>',this._theme);a=String.format('<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="{0}" height="{1}" style="position: relative; display: block;">',this._chartWidth,this._chartHeight),a+="<defs>",a+=String.format('<radialGradient gradientUnits="userSpaceOnUse" r="{0}" fy="{1}" fx="{2}" cy="{1}" cx="{2}">',t,e,i),a+='<stop offset="0%" id="RadialGradient1"></stop>',a+='<stop offset="25%" id="RadialGradient2"></stop>',a+='<stop offset="100%" id="RadialGradient3"></stop></RadialGradient>',a+="</defs>",a+=String.format('<rect id="ChartBackGround" width="{0}" height="{1}" style="opacity: 0"/>',this._chartWidth,this._chartHeight),a+=String.format('<text x="{0}" y="{1}" id="ChartTitle" style="fill:{3}">{2}</text>',parseInt(this._chartWidth)/2-this._chartTitle.length*this.charLength,5*parseInt(this._chartHeight)/100,this._chartTitle,this._chartTitleColor);for(var r=82*parseInt(this._chartHeight)/100+5,h=7.5,s=7.5,n=5,l=0,o=0;o<this._pieChartClientValues.length;o++)l+=this._pieChartClientValues[o].Category.length;var C=Math.round(5*l/2)+Math.round((h+2*n)*this._pieChartClientValues.length),u=!1;C>parseInt(this._chartWidth)/2&&(C/=2,u=!0),a+="<g>",a+=String.format('<path d="M{0} {1} {2} {1} {2} {3} {0} {3} z" id="LegendArea" stroke=""></path>',40*parseInt(this._chartWidth)/100-C/2,r,40*parseInt(this._chartWidth)/100+C/2,Math.round(97.5*parseInt(this._chartHeight)/100));for(var _=40*parseInt(this._chartWidth)/100-C/2+5+h+n,p=_,c=40*parseInt(this._chartWidth)/100-C/2+5,g=c,o=0;o<this._pieChartClientValues.length;o++)u&&o==Math.round(this._pieChartClientValues.length/2)&&(_=40*parseInt(this._chartWidth)/100-C/2+5+h+n,p=_,c=40*parseInt(this._chartWidth)/100-C/2+5,g=c,r=89*parseInt(this._chartHeight)/100+5,u=!1),c=g,_=p,a+=String.format('<path d="M{0} {1} {2} {1} {2} {3} {0} {3} z" id="Legend{4}" style="stroke:{6};fill:{5}"></path>',c,r+s,c+h,r+15,o+1,this._pieChartClientValues[o].PieChartValueColor,this._pieChartClientValues[o].PieChartValueStrokeColor),a+=String.format('<text x="{0}" y="{1}" id="LegendText">{2}</text>',_,r+15,this._pieChartClientValues[o].Category),this._pieChartClientValues[o].Category.length>10?(g=c+5.5*this._pieChartClientValues[o].Category.length+h+2*n,p=_+5.5*this._pieChartClientValues[o].Category.length+h+2*n):(g=g+6*this._pieChartClientValues[o].Category.length+h+2*n,p=p+6*this._pieChartClientValues[o].Category.length+h+2*n);a+="</g>";for(var d=0,f=0,V=0,y=0,S=0,m=0,I=0,x=0,v=e,P=i-t,T=e,M=i-t,o=0;o<this._pieChartClientValues.length;o++)f+=Math.abs(parseFloat(this._pieChartClientValues[o].Data));var H=this.isSingleValueEqualsTotal(f);if(H)var W=this.getStrokeColor(f),D=this.getColor(f);this._parentDiv.innerHTML=a,this.drawSegments(this,0,d,f,t,V,y,S,e,m,i,I,T,M,v,P,x,H,D,W)},drawSegments:function(t,e,i,a,r,h,s,n,l,o,C,u,_,p,c,g,d,f,V,y){var S=Math.abs(parseFloat(t._pieChartClientValues[e].Data));i+=S,h=i/a*360,s=h*(Math.PI/180),n=(i-S/2)/a*360,n*=Math.PI/180,o=parseFloat(Math.sin(s)*r),u=parseFloat(Math.cos(s)*r),_=parseFloat((f?0:Math.sin(n))*(r+10)),p=parseFloat((f?-1:Math.cos(n))*(r+10)),_=l+_>l?l+_:l+_-t._pieChartClientValues[e].Data.toString().length*this.charLength,p=C+-1*p<C?C+-1*p:C+-1*p+10,d=S>a/2?1:0,t._parentDiv.innerHTML=t._parentDiv.innerHTML.replace("</svg>","")+(f?String.format('<g><circle cx="{0}" cy="{1}" r="{2}" stroke="{3}" fill="{4}" />',l,C,r,y,V):String.format('<g><path id="Segment{8}" d="M{0} {1} A {2} {2} 0 {3},1 {4} {5} L {6} {7} z" style="stroke:{10};fill:{9};"></path>',c,g,r,d,l+o,C+-1*u,l,C,e+1,t._pieChartClientValues[e].PieChartValueColor,t._pieChartClientValues[e].PieChartValueStrokeColor))+(t._pieChartClientValues[e].Data||f?String.format('<text fill="#000000" style="font: 11px Arial,Helvetica,sans-serif" fill-opacity="1" y="{1}" x="{0}">{2}</text></g>',_,p,f?a:t._pieChartClientValues[e].Data):"")+"</svg>",f||(c=l+o,g=C+-1*u,e++,e<t._pieChartClientValues.length&&setTimeout(function(){t.drawSegments(t,e,f?0:i,a,r,h,s,n,l,o,C,u,_,p,c,g,d,f,V,y)},0==t._pieChartClientValues[e].Data?0:400))},isSingleValueEqualsTotal:function(t){for(var e=0;e<this._pieChartClientValues.length;e++)if(this._pieChartClientValues[e].Data==t)return!0;return!1},getStrokeColor:function(t){for(var e=0;e<this._pieChartClientValues.length;e++)if(this._pieChartClientValues[e].Data==t)return this._pieChartClientValues[e].PieChartValueStrokeColor},getColor:function(t){for(var e=0;e<this._pieChartClientValues.length;e++)if(this._pieChartClientValues[e].Data==t)return this._pieChartClientValues[e].PieChartValueColor},get_chartWidth:function(){return this._chartWidth},set_chartWidth:function(t){this._chartWidth=t},get_chartHeight:function(){return this._chartHeight},set_chartHeight:function(t){this._chartHeight=t},get_chartTitle:function(){return this._chartTitle},set_chartTitle:function(t){this._chartTitle=t},get_pieChartClientValues:function(){return this._pieChartClientValues},set_pieChartClientValues:function(t){this._pieChartClientValues=t},get_PieChartClientValues:function(){return Sys.Extended.Deprecated("get_PieChartClientValues()","get_pieChartClientValues()"),this.get_pieChartClientValues()},set_PieChartClientValues:function(t){Sys.Extended.Deprecated("set_PieChartClientValues(value)","set_pieChartClientValues(value)"),this.set_pieChartClientValues(t)},get_theme:function(){return this._theme},set_theme:function(t){this._theme=t},get_chartTitleColor:function(){return this._chartTitleColor},set_chartTitleColor:function(t){this._chartTitleColor=t}},Sys.Extended.UI.PieChart.registerClass("Sys.Extended.UI.PieChart",Sys.Extended.UI.ControlBase);