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> |
Partager