bonjour,
je dois développer un barchart en flex/as3 dont les données proviennent d'un fichier xml résultat d'une sérialisation d'une hashmap java.
Ni connaissant rien en flex j'ai naviguer à droite à gauche pour trouver des sources, tutoriaux, ...
j'ai réussi à créer mon barchart, il prend bien les données (en abscisse on a le bon ordre de valeurs et les titres de la légendes sont les bons) mais il n'affiche pas les bar en elles même. J'ai beau chercher, essayer diverses choses, je ne comprends pas pourquoi ; ça doit être tout con pourtant.
Mon code :
mon fichier XML
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88 <?xml version="1.0"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="initApp();" viewSourceURL="srcview/index.html"> <mx:Script><![CDATA[ import mx.charts.series.BarSeries; import mx.charts.DateTimeAxis; import mx.charts.series.LineSeries; import mx.charts.CategoryAxis; import mx.charts.Legend; import mx.charts.series.ColumnSeries; import mx.collections.ArrayCollection; private function initApp():void { var chargementXML:URLLoader = new URLLoader(); var fichier:URLRequest = new URLRequest("d:/test.xml");// le fichier xml //évênement qui défini quand le chargement du fichier xml est terminé chargementXML.addEventListener( Event.COMPLETE, chargementComplet ); chargementXML.load( fichier ); //quand le fichier xml est chargé function chargementComplet(pEvt:Event):void { var adresses:XML = new XML( pEvt.target.data ); //création de l'objet XML var noeuds:XMLList = adresses.elements(); var mesures:Array = new Array(); //tableau contenant tous les titres des mesures var index:int = 0; //on parcourt une premiere fois le XML pour récupérer les titres des mesures for each(var nodeTitreMesures:XML in noeuds..object) { if( nodeTitreMesures.parent().string == "Programme Source") { for each(var mesure:XML in nodeTitreMesures..string) { mesures[index]=mesure; index++; } } } var serieCollection:Array = new Array(); //tableau contenant les données pour le barchart //on parcourt une deuxieme fois le XML pour créer le tableau des données for each(var nodeTitre:XML in noeuds..object) { if( nodeTitre.parent().string != "Programme Source") { var indexValeur:int =0; var data:ArrayCollection = new ArrayCollection(); for each(var valeur:XML in nodeTitre..string) { var content:Object; //Object de type {Measure: "type de mesure", Measurement: valeur(int)} content = {Measure: mesures[indexValeur] ,Measurement: valeur}; data.addItem(content); indexValeur++; } //on créé la série var localSeries:BarSeries = new BarSeries(); localSeries.dataProvider = data; localSeries.xField = "Measurement"; localSeries.yField = "Measure"; localSeries.displayName = nodeTitre.parent().string; //on ajoute la série dans la table des données. serieCollection.push(localSeries); } } myChart.showDataTips = true; myChart.dataProvider = serieCollection; var vAxis:CategoryAxis = new CategoryAxis(); vAxis.dataProvider = serieCollection; vAxis.categoryField = "Measure" ; myChart.verticalAxis = vAxis; myChart.series = serieCollection; } } ]]></mx:Script> <mx:Panel title="Line Chart avec nombre de Series variable"> <mx:BarChart id="myChart" showDataTips="true"/> <mx:Legend dataProvider="{myChart}"/> </mx:Panel> </mx:Application>
merci d'avance.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 <?xml version="1.0" encoding="UTF-8"?> <java version="1.6.0_13" class="java.beans.XMLDecoder"> <object class="java.util.HashMap"> <void method="put"> <string>Programme Source</string> <object class="java.util.ArrayList"> <void method="add"> <string>Complexité des structures</string> </void> <void method="add"> <string>Complexité des variables</string> </void> </object> </void> <void method="put"> <string>HOB126C1</string> <object class="java.util.ArrayList"> <void method="add"> <string>1.504</string> </void> <void method="add"> <string>131</string> </void> </object> </void> <void method="put"> <string>CDGET</string> <object class="java.util.ArrayList"> <void method="add"> <string>4.0</string> </void> <void method="add"> <string>6</string> </void> </object> </void> </object> </java>
Partager