Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Flash/Flex > Flex
Flex Forum d'entraide sur la programmation Adobe Flex : applications Internet riches (RIA)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/04/2011, 12h28   #1
Nouveau Membre du Club
 
Inscription : mai 2008
Messages : 167
Détails du profil
Informations professionnelles :
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mai 2008
Messages : 167
Points : 33
Points : 33
Envoyer un message via MSN à naou18 Envoyer un message via Skype™ à naou18
Par défaut Petit souci de Charting

Bonjour j'ai un petit souci de charting ,

J'ai ma source de donnée dans un fichier xml :

Code :
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
	<products>
				<product name="Product One">
					<sales>
						<sale year="2010" items="5050"/>
						<sale year="2011" items="6500"/>
						<sale year="2012" items="9301"/>
						<sale year="2013" items="13210"/>
						<sale year="2014" items="15000"/>
					</sales>
				</product>
				<product name="Product Two">
					<sales>
						<sale year="2010" items="15000"/>
						<sale year="2011" items="13210"/>
						<sale year="2012" items="9301"/>
						<sale year="2013" items="6500"/>
						<sale year="2014" items="5050"/>
					</sales>
				</product>
				<product name="Product Three">
					<sales>
						<sale year="2010" items="15000"/>
						<sale year="2011" items="454"/>
						<sale year="2012" items="9301"/>
						<sale year="2013" items="3211"/>
						<sale year="2014" items="5050"/>
					</sales>
				</product>
			</products>
je veux l'afficher dans une pieChart avec le code suivant :
Code :
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
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
			   xmlns:s="library://ns.adobe.com/flex/spark" 
			   xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" xmlns:products="services.products.*">
	<fx:Script>
		<![CDATA[
			import mx.controls.Alert;
			import mx.events.FlexEvent;
 
			protected function pieChart_creationCompleteHandler(event:FlexEvent):void
			{
				getDataResult.token = products.getData();
			}
 
		]]>
	</fx:Script>
	<fx:Declarations>
		<s:CallResponder id="getDataResult"/>
		<products:Products id="products" fault="Alert.show(event.fault.faultString + '\n' + event.fault.faultDetail)" showBusyCursor="true"/>
		<!-- Placer ici les éléments non visuels (services et objets de valeur, par exemple). -->
	</fx:Declarations>
	<s:layout>
		<s:HorizontalLayout/>
	</s:layout>
	<s:Panel title="Product Chart">
		<mx:PieChart x="167" y="10" id="pieChart" creationComplete="pieChart_creationCompleteHandler(event)" dataProvider="{getDataResult.lastResult}" showDataTips="true">
			<mx:series>
				<mx:PieSeries id="PieSeries" displayName="Series 1" field="name" nameField="name"/>
			</mx:series>
		</mx:PieChart>
		<mx:ControlBar>
			<mx:Legend dataProvider="{pieChart}"/>
		</mx:ControlBar>
	</s:Panel>
 
 
</s:Application>
Je ne sais pas où est l'erreur.
Pourriez-vous m'aider, s'il vous plait ?
naou18 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/04/2011, 11h09   #2
Nouveau Membre du Club
 
Inscription : mai 2008
Messages : 167
Détails du profil
Informations professionnelles :
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mai 2008
Messages : 167
Points : 33
Points : 33
Envoyer un message via MSN à naou18 Envoyer un message via Skype™ à naou18
Par défaut Résolu

Bonjour , j'ai trouvé ma solution ,

Puisque mon fichier XML à plusieurs niveaux d'enfants
je ne peux pas faire référence à la data en utilisant une notation à plat comme yField="sale" ,je dois utiliser une méthode dataFunction pour définir quel champ de ChartItem sera peuplé par le dataProvider.

Voici donc la solution pour accéder à une donnée complexe:

Code :
1
2
3
4
5
6
7
private function totalVenteDataFunction(series:Series, item:Object, fieldName:String):Object{
				var totalVente:Number = 0;				
				for each(var sale:XML in item.sales.*){
					totalVente += Number(sale.@items);
				}				
				return totalVente;				
			}
Cette fonction reçoit la balise XML product , parcourt chaque sale, calculer le total et le renvoie au PieChart .

après je spécifie a mon DataProvider la source de données comme ceci :
Code :
1
2
<mx:PieChart id="piechart1"
						dataProvider="{productsData.*}" 

et pour afficher ces données dans la série :
Code :
1
2
3
4
				<mx:series>
					<mx:PieSeries id="pieSeries"  
								  dataFunction="totalVenteDataFunction"
naou18 est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h20.


 
 
 
 
Partenaires

Hébergement Web