IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Flex Discussion :

probleme de création d'une BarChart


Sujet :

Flex

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 55
    Par défaut probleme de création d'une BarChart
    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 :
    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>
    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
     
    <?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>
    merci d'avance.

  2. #2
    Membre Expert
    Avatar de Jim_Nastiq
    Homme Profil pro
    Architecte, Expert Flex
    Inscrit en
    Avril 2006
    Messages
    2 335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte, Expert Flex
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 335
    Par défaut
    sors ton handler chargementComplet de ta méthode initApp:

    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>

    Pensez vraiment à effectuer une recherche avant de poster, ici et sur un moteur de recherche! c'est la moindre des choses
    Pensez au tag

    Mon Blog sur la techno Flex
    Ma page sur Developpez.com

    Jim_Nastiq

  3. #3
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 55
    Par défaut
    ça ne change rien :s

  4. #4
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 55
    Par défaut
    ça me donne ça


  5. #5
    Membre Expert
    Avatar de Jim_Nastiq
    Homme Profil pro
    Architecte, Expert Flex
    Inscrit en
    Avril 2006
    Messages
    2 335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte, Expert Flex
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 335
    Par défaut
    écoute les events d'erreur de l'urlRequest pour vérifier que déjà tu as aucune erreur.

    Essayez de tracer le chemin réellement effectué dans ton code.


    et relis ton code, car j'ai déjà remarqué que ton instance de vAxis par exemple n'existe que dans ton handler, tu la déclare et l'instancie dans chargementComplet mais en dehors de cette méthode elle n'existe pas

    Pensez vraiment à effectuer une recherche avant de poster, ici et sur un moteur de recherche! c'est la moindre des choses
    Pensez au tag

    Mon Blog sur la techno Flex
    Ma page sur Developpez.com

    Jim_Nastiq

  6. #6
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 55
    Par défaut
    je suis pas sur de bien avoir tout compris (complètement noob en Flex et as dsl :s) mais voici ce que j'ai fait :
    - j'ai mis mon bloc de chargement du fichier xml dans un try...catch -> pas d'erreur
    - j'ai rajouté un listener pour voir les erreurs de chargements -> rien du tout
    - j'ai mis la déclaration de vAxis a l'exterieur du handler

    tout ça n'a rien changé, j'ai toujours le même résultat

Discussions similaires

  1. Réponses: 6
    Dernier message: 17/09/2009, 16h13
  2. Probleme de création d'une table avec les variant
    Par sebyo dans le forum Débuter
    Réponses: 2
    Dernier message: 28/04/2009, 22h01
  3. Probleme de Création d'une taglib
    Par aymenroma dans le forum JSF
    Réponses: 8
    Dernier message: 20/05/2008, 10h42
  4. SVP Probleme dans la création d'une table
    Par sephirothmana dans le forum Langage SQL
    Réponses: 2
    Dernier message: 29/11/2006, 17h12
  5. [VB.NET] Probleme de création d'une picturebox dans le code
    Par stringman62 dans le forum Windows Forms
    Réponses: 5
    Dernier message: 07/02/2006, 16h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo