<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml">

	<mx:Script>
		<![CDATA[
			import mx.collections.XMLListCollection;
		
			import flash.display.Graphics;
			import mx.collections.ArrayCollection;
			import mx.controls.Alert;
			import mx.core.Application;
			import mx.core.UIComponent;
			import mx.controls.Text;           
			import cls.com.ils.biz.component.Chart;
			         
			
			//グラフのデータの最大値
			private static const DATA_MAX:Number = 100;
			
			//グラフの塗りつぶしの色
			private static const COLOR_BODY:uint = 0x0000FF;
			//private static const COLOR_BODY:uint = 0xFFFFFF;
			
			//グラフの線の色
			private static const COLOR_AXIS:uint = 0x808080;            		            
			

			//全体(枠や線）の大きさ
			private var LONG_MAX:Number;
			public function set chartSize(value:Number):void{
				LONG_MAX = value;
			}		
			 
			//中心座標のX
			private var _centerPointX:Number;
			public function set centerPointX(value:Number):void{
			    _centerPointX = value;
			}
             
         	//中心座標のY
			private var _centerPointY:Number;
			public function set centerPointY(value:Number):void{
				_centerPointY = value;
			} 
			
			//データ
			private var _dataProvider:XMLList;
			public function set dataProvider(value:XMLList):void{
				_dataProvider = value;
			}
			


			/**
			 * 初期化処理
			 */	            
			public function createChart():void{            	
                //中心点を座標で指定。layoutは、absoluteでないと、NG。
                drawGraph(_centerPointX,_centerPointY);
                drawLabel(_centerPointX,_centerPointY);
            }
            

			/**
			 * レーダーチャートを描画
			 */	  
            private function drawGraph(pointX:Number,pointY:Number):void{    
                var radarChart:Chart = new Chart(_dataProvider);
                radarChart.draw(LONG_MAX, DATA_MAX, COLOR_BODY, COLOR_AXIS);
                //数学のxy0位置（=3時の位置）で始まるので、12時の位置にするために、-90度回転。
                radarChart.rotation = -90;
                addChild(radarChart);
                radarChart.x = pointX;
                radarChart.y = pointY;
            }
            
           
            //ラベルは回転というわけにはいかないので、radian の値を、-90度 足して計算（theta に4.71足す）
            //= 3時の位置でなく、12時の位置から開始するように計算。
            private function drawLabel(centerX:Number,centerY:Number):void{
                var radian:Number = 2*Math.PI/_dataProvider.length();             
               
               	for (var i:int=0; i<_dataProvider.length(); i++){
                	var addNumberX:Number=0; 
                	var addNumberY:Number=0;             	
                    var theta:Number = i*radian;
                    var t:Text = new Text();
                    t.text = _dataProvider[i].name;         
                    
                    //座標の開始位置ぴったりだと、XYがマイナス座標時におかしいので、計算する。
                    //まず、12時の位置。
					if (i==0){
						addNumberY =  -15;
						for (var j:int=0; j<6; j++){
							var txtMemori:Text = new Text();
							txtMemori.text = (DATA_MAX - (DATA_MAX/5 * j)).toString();
							txtMemori.x = centerX + LONG_MAX * Math.cos(theta+4.71);
							txtMemori.y = centerY + LONG_MAX * Math.sin(theta+4.71) - (LONG_MAX * Math.sin(theta+4.71)/5 * j); 
							addChild(txtMemori);
						}
					}
                    else if (i > _dataProvider.length()/2){
                    	//Y座標がマイナスの場合、ラベルの開始位置を左に移動。実際は、テキストの長さ等で調整
                    	addNumberX =  -65;
                    }
                    
                    t.x = centerX + addNumberX + LONG_MAX * Math.cos(theta+4.71);
                    t.y = centerY +addNumberY + LONG_MAX * Math.sin(theta+4.71);               
                
                	addChild(t);
                } 
                                           
            }       
            


		]]>
	</mx:Script>
	
</mx:Canvas>
