root/as3/ChartData/samples/SQLCharts.as

リビジョン 267, 8.5 kB (コミッタ: daoki2, コミット時期: 4 年 前)

First Release

  • svn:executable 属性の設定値: *
Line 
1 import flash.events.*;
2 import flash.filesystem.*;
3 import mx.events.*;
4 import flash.data.SQLConnection;
5 import mx.collections.ArrayCollection;
6 import org.libspark.utils.SqlUtil;
7 import org.libspark.snippets.controls.SQLDataGrid;
8 import org.libspark.snippets.controls.ChartData.FusionCharts.SingleChartData;
9
10 private var connection:SQLConnection = null;
11 private var htmlFile:File = null;
12 private var dataFile:File = null;
13 private var dgSQLResult:SQLDataGrid = new SQLDataGrid();
14
15 private var chartType:String = "Column2D";
16
17 private function onSQLChange(event:KeyboardEvent):void {
18     if (event.keyCode == Keyboard.ENTER) {
19         executeSQL(tSQL.text);
20     }
21 }
22
23 private function executeSQL(sql:String): void {
24     trace("executeSQL", sql);
25     dgSQLResult.executeQuery(sql);
26     if (dgSQLResult.dataProvider != null)
27         updateChart();
28 }
29
30 private function updateChart():void {
31     trace("updateChart");
32     var chartData:SingleChartData = new SingleChartData();
33     chartData.graphAttribute.decimalPrecision = "0";
34     chartData.graphAttribute.formatNumberScale = "0";
35     for each (var val:* in dgSQLResult.dataProvider)
36         chartData.addSetElement(val);
37     chartData.createHtmlFile(htmlFile, chartType, 600, 350, dataFile.nativePath);
38     chartData.createDataFile(dataFile);
39     html.location = "file:///" + htmlFile.nativePath;
40 }
41
42 /*
43  * Initialize application
44  */
45 private var prefFile:String = "preference.xml";
46 private var prefList:ArrayCollection = new ArrayCollection();
47
48 private function init():void {
49     dgSQLResult.x = 10; dgSQLResult.y = 406; dgSQLResult.width = 620; dgSQLResult.height = 164;
50     addChild(dgSQLResult);
51     htmlFile = File.applicationStorageDirectory.resolvePath("tempChart.html");
52     dataFile = File.applicationStorageDirectory.resolvePath("tempData.xml");
53     tSQL.addEventListener(KeyboardEvent.KEY_UP, onSQLChange);
54     createMenus();
55 }
56
57 /*
58  * Create application menus
59  */
60 private var rootMenu:NativeMenu = null;
61 private var adminMenu:NativeMenuItem = null;
62 private var openDatabaseMenuItem:NativeMenuItem = null;
63 private var closeDatabaseMenuItem:NativeMenuItem = null;
64 private var chartMenu:NativeMenuItem = null;
65 private var column2dMenuItem:NativeMenuItem = null;
66 private var column3dMenuItem:NativeMenuItem = null;
67 private var pie2dMenuItem:NativeMenuItem = null;
68 private var pie3dMenuItem:NativeMenuItem = null;
69 private var line2dMenuItem:NativeMenuItem = null;
70 private var bar2dMenuItem:NativeMenuItem = null;
71 private var area2dMenuItem:NativeMenuItem = null;
72 private var doughnut2dMenuItem:NativeMenuItem = null;
73 private function createMenus():void {
74       if (NativeApplication.supportsMenu) {
75           rootMenu = NativeApplication.nativeApplication.menu;
76       } else if (NativeWindow.supportsMenu) {
77           rootMenu = new NativeMenu();
78           stage.nativeWindow.menu = rootMenu;
79       }
80       if (rootMenu != null) {
81           adminMenu = new NativeMenuItem("Admin");
82           var adminSubMenu:NativeMenu = new NativeMenu();
83           openDatabaseMenuItem = new NativeMenuItem("Open Database");
84           openDatabaseMenuItem.addEventListener(Event.SELECT, OpenDatabase);
85           adminSubMenu.addItem(openDatabaseMenuItem);
86           closeDatabaseMenuItem = new NativeMenuItem("Close Database");
87           closeDatabaseMenuItem.enabled = false;
88           closeDatabaseMenuItem.addEventListener(Event.SELECT, CloseDatabase);
89           adminSubMenu.addItem(closeDatabaseMenuItem);
90           adminMenu.submenu = adminSubMenu;
91           rootMenu.addItem(adminMenu);
92          
93           chartMenu = new NativeMenuItem("Charts");
94           var chartSubMenu:NativeMenu = new NativeMenu();
95           column2dMenuItem = new NativeMenuItem("Column2D");
96           column2dMenuItem.addEventListener(Event.SELECT, Column2D);
97           column2dMenuItem.checked = true;
98           chartSubMenu.addItem(column2dMenuItem);
99           column3dMenuItem = new NativeMenuItem("Column3D");
100           column3dMenuItem.addEventListener(Event.SELECT, Column3D);
101           chartSubMenu.addItem(column3dMenuItem);
102           pie2dMenuItem = new NativeMenuItem("Pie2D");
103           pie2dMenuItem.addEventListener(Event.SELECT, Pie2D);
104           chartSubMenu.addItem(pie2dMenuItem);
105           pie3dMenuItem = new NativeMenuItem("Pie3D");
106           pie3dMenuItem.addEventListener(Event.SELECT, Pie3D);
107           chartSubMenu.addItem(pie3dMenuItem);
108           line2dMenuItem = new NativeMenuItem("Line2D");
109           line2dMenuItem.addEventListener(Event.SELECT, Line2D);
110           chartSubMenu.addItem(line2dMenuItem);
111           bar2dMenuItem = new NativeMenuItem("Bar2D");
112           bar2dMenuItem.addEventListener(Event.SELECT, Bar2D);
113           chartSubMenu.addItem(bar2dMenuItem);
114           area2dMenuItem = new NativeMenuItem("Area2D");
115           area2dMenuItem.addEventListener(Event.SELECT, Area2D);
116           chartSubMenu.addItem(area2dMenuItem);
117           doughnut2dMenuItem = new NativeMenuItem("Doughnut2D");
118           doughnut2dMenuItem.addEventListener(Event.SELECT, Doughnut2D);
119           chartSubMenu.addItem(doughnut2dMenuItem);
120           chartMenu.submenu = chartSubMenu;
121           rootMenu.addItem(chartMenu);
122      } else {
123           trace("rootMenu is null");
124      }
125 }
126
127 /*
128  * Menu Event Handlers
129  */
130 private function OpenDatabase(event:Event):void {
131     var file:File = new File();
132     var filter:FileFilter = new FileFilter("DB File", "*.db");
133     file.browseForOpen("Open Database file (*.db)", [filter]);
134     file.addEventListener(Event.SELECT, dbFileSelected);
135 }
136
137 private function dbFileSelected(event:Event):void {
138     title = "SQLite & Charts - " + event.target.nativePath;
139     connectionOpen(File(event.target), SQLMode.READ);
140 }
141
142 private function connectionOpen(file:File, mode:String):void {
143     if (connection != null) {
144         if (connection.connected) {
145             try {
146                 connection.close();
147             } catch (error:Error) {
148                 trace("Failed:", error.message);
149             }
150         }
151     }
152
153     connection = new SQLConnection();
154     try {
155         connection.open(file, mode);
156         dgSQLResult.sqlConnection = connection;
157         openDatabaseMenuItem.enabled = false;
158         closeDatabaseMenuItem.enabled = true;
159     } catch (error:Error) {
160         trace("Failed:", error.message);
161     }
162 }
163
164 private function CloseDatabase(event:Event):void {
165     connectionClose();
166     openDatabaseMenuItem.enabled = true;
167     closeDatabaseMenuItem.enabled = false;
168     callLater(updateTitle);
169 }
170
171 private function connectionClose():void {
172     if (connection != null)
173         if(connection.connected)
174             connection.close();
175 }
176
177 private function updateTitle():void {
178     title = "SQLite & Charts";
179 }
180
181 private function clearCheck():void {
182     column2dMenuItem.checked = false;
183     column3dMenuItem.checked = false;
184     pie2dMenuItem.checked = false;
185     pie3dMenuItem.checked = false;
186     line2dMenuItem.checked = false;
187     bar2dMenuItem.checked = false;
188     area2dMenuItem.checked = false;
189     doughnut2dMenuItem.checked = false;
190 }
191
192 private function Column2D(event:Event):void {
193     trace("Column2D");
194     clearCheck();
195     column2dMenuItem.checked = true;
196     chartType = "Column2D";
197     if (dgSQLResult.dataProvider != null)
198         updateChart();
199 }
200
201 private function Column3D(event:Event):void {
202     trace("Column3D");
203     clearCheck();
204     column3dMenuItem.checked = true;
205     chartType = "Column3D";
206     if (dgSQLResult.dataProvider != null)
207         updateChart();
208 }
209
210 private function Pie2D(event:Event):void {
211     trace("Pie2D");
212     clearCheck();
213     pie2dMenuItem.checked = true;
214     chartType = "Pie2D";
215     if (dgSQLResult.dataProvider != null)
216         updateChart();
217 }
218
219 private function Pie3D(event:Event):void {
220     trace("Pie3D");
221     clearCheck();
222     pie3dMenuItem.checked = true;
223     chartType = "Pie3D";
224     if (dgSQLResult.dataProvider != null)
225         updateChart();
226 }
227
228 private function Line2D(event:Event):void {
229     trace("Line2D");
230     clearCheck();
231     line2dMenuItem.checked = true;
232     chartType = "Line";
233     if (dgSQLResult.dataProvider != null)
234         updateChart();
235 }
236
237 private function Bar2D(event:Event):void {
238     trace("Bar2D");
239     clearCheck();
240     bar2dMenuItem.checked = true;
241     chartType = "Bar2D";
242     if (dgSQLResult.dataProvider != null)
243         updateChart();
244 }
245
246 private function Area2D(event:Event):void {
247     trace("Area2D");
248     clearCheck();
249     area2dMenuItem.checked = true;
250     chartType = "Area2D";
251     if (dgSQLResult.dataProvider != null)
252         updateChart();
253 }
254
255 private function Doughnut2D(event:Event):void {
256     trace("Doughnut2D");
257     clearCheck();
258     doughnut2dMenuItem.checked = true;
259     chartType = "Doughnut2D";
260     if (dgSQLResult.dataProvider != null)
261         updateChart();
262 }
Note: リポジトリブラウザについてのヘルプは TracBrowser を参照してください。