1
4
5
8
9 import org.aswing. *;
10 import org.aswing.geom. *;
11 import org.aswing.utils.*;
12 import org.aswing.graphices.Graphics;
13
14 class org.aswing.JPieChart extends Component
15 {
16 private var _dataSet : Array;
17 private var _colorSet : Array;
18 private var _angles : Array;
19 private var _wedges : Array;
20 private var _legends : Array;
21 private var _legend_txt : Array;
22 private var _title : String;
23 private var _showLegend : Boolean;
24 private var MAX : Number = 0;
25
26 public function JPieChart (title : String, dataSet : Array, colorSet : Array)
27 {
28 _root.DEBUG.text += "In Constructor";
29 super ();
30 setName ("JPieChart");
31 if (title != null)
32 {
33 _title = title;
34 }
35 else
36 {
37 _title = "JPieChart";
38 }
39 if (colorSet != null)
40 {
41 _colorSet = colorSet;
42 }
43 else
44 {
45 _colorSet = new Array ();
46 if (dataSet != null)
47 {
48 for (var i : Number = 0; i < dataSet.length; i ++)
49 {
50 _colorSet.push (getRandomnColor ());
51 }
52 }
53 }
54 if (dataSet != null)
55 {
56 _dataSet = dataSet;
57 }
58 else
59 {
60 _dataSet = new Array ();
61 }
62 _angles = new Array ();
63 _wedges = new Array ();
64 _legend_txt = new Array ();
65 }
66
67
70
71 private function getRotation (val : Number) : Number
72 {
73 var rot : Number = 0;
74 for (var i : Number = 0; i <= val; i ++)
75 {
76 rot += _angles [i];
77 }
78 return rot;
79 }
80
83 private function sortAndLoadDataSet (Void) : Void
84 {
85 MAX = 0;
86 _angles = new Array ();
87 _dataSet.sort (Array.NUMERIC);
88 for (var i : Number = 0; i < _dataSet.length; i ++)
89 {
90 MAX += _dataSet [i];
91 }
92 for (var i : Number = 0; i < _dataSet.length; i ++)
93 {
94 _angles [i] = (360 * _dataSet [i]) / MAX;
95 }
96
97 }
98
99
102 private function paint (b : Rectangle) : Void
103 {
104 _root.DEBUG.text += "\nIn Paint";
105 sortAndLoadDataSet ();
106 for (var i : Number = 0; i < _wedges.length; i ++)
107 {
108 _wedges [i].removeMovieClip ();
109 _legends [i].removeMovieClip ();
110 _legend_txt [i].removeMovieClip ();
111 }
112 _wedges = new Array ();
113 var graphics : Graphics;
114 var loactionY : Number = this.getY ();
115
116 for (var i : Number = 0; i < _angles.length; i ++)
117 {
118
119 var wedge : MovieClip = ElementCreater.getInstance ().createMC (root_mc, "wedge" + i);
120 wedge.lineStyle (1, 0x000000, 50);
121 wedge.beginFill (_colorSet [i] , 100);
122 graphics = new Graphics (wedge);
123 graphics.wedge (this.getWidth () / 2, this.getWidth () / 2, this.getHeight () / 2, _angles [i] , getRotation (i - 1));
124 wedge.onPress=Delegate.create(this,__onPress,i);
125 _wedges.push (wedge);
126 }
127 }
128
129
132 private function __onPress (index:Number) : Void
133 {
134 var e:Event = createPieChartEvent(index);
135 dispatchEvent(ON_PRESS, e);
136 }
137
138
141 private function createPieChartEvent(index:Number):Event{
142 var e:Event = createEventObj();
143 e.data = _dataSet[index];
144 return e;
145 }
146
147
150 private function getRandomnColor (Void) : Number
151 {
152 var col : String = "0x";
153 for (var i : Number = 0; i < 6; i ++)
154 {
155 var digit : Number = Math.floor (Math.random () * 15);
156 if (digit == 10)
157 {
158 col += "A";
159 }
160 else if (digit == 11)
161 {
162 col += "B";
163 }
164 else if (digit == 12)
165 {
166 col += "C";
167 }
168 else if (digit == 13)
169 {
170 col += "D";
171 }
172 else if (digit == 14)
173 {
174 col += "E";
175 }
176 else if (digit == 15)
177 {
178 col += "F";
179 }
180 else
181 {
182 col += digit + "";
183 }
184 }
185 return new Number (col);
186 }
187 private function getRandomnGreyScaleColor (Void) : Number
188 {
189 var col : String = "0x";
190 var digit : Number = Math.floor (Math.random () * (9 - 3)) + 3;
191 for (var i : Number = 0; i < 6; i ++)
192 {
193 col += digit + "";
194 }
195
196 return new Number (col);
197 }
198
199 public function setDataSet(val:Array):Void{
200 _dataSet=new Array();
201 _dataSet=val;
202 paint();
203 }
204
205 public function getDataSet(Void):Array{
206 return _dataSet;
207 }
208
209 public function setColorSet(val:Array):Void{
210 _colorSet=new Array();
211 _colorSet=val;
212 paint();
213 }
214
215 public function getColorSet(Void):Array{
216 return _colorSet;
217 }
218
219 }
220