| Annexes / Application Web : une couverture fonctionnelle sans limite ! | |
Ce document s'adresse aux développeurs de fonctionnalités comportant des objets graphiques en mode web. Une connaissance de la syntaxe XML est nécessaire. L'édition des fichiers de configuration des graphiques doit obligatoirement être réalisée avec un éditeur XML (exemple : XMLSPY dont il existe une version gratuite : Altova XMLSPY Home Edition) ou un éditeur de texte. (exemples : PsPad freewhare editor ou UltraEdit.).
Ce document présente la génération de graphiques dans le mode web, tout d'abord de façon simple, avec une configuration minimaliste, puis de façon plus complexe, en introduisant des possibilités de paramétrage supplémentaire.
Ce document vous permet d’aborder les principes des possibilités offertes. Une autre documentation détaille de façon systématique les attributs disponibles : voir fichier de configuration graphique.
Le résultat d'une requête est affichable sous deux formats :
Le traitement effectué par le socle pour générer un graphique ou une page HTML est similaire :
1. Dans le cas de l'affichage standard, le socle génère une page HTML à partir du flux et de la feuille de style (XSL),
2. Dans le cas d'un graphique, le socle génère un format SVG à partir du flux et de la configuration du graphique (XML).
Le paramétrage du graphique, écrit en XML, se base sur un schéma au format XSD : « egxChartConfiguration.xsd ».
Une documentation exhaustive de ce schéma de configuration des graphes est disponible dans le Fichier de configuration graphique.
Comme pour les feuilles xsl, à un graphique correspond un fichier de paramétrage.
Le lien entre la requête demandée et la génération d'un graphique est défini dans la configuration de la businessview.
L’attribut defaultRenderType est obligatoire sur businessview_def. Il est par contre optionnel (mais prioritaire) sur businessview.
Exemple de configuration :
<businessview_def executeQuery= "optimize" defaultRenderType= "xsl" >
<businessview executeQuery= "optimize" name= "Clients" target= "SACT" viewstruct= "VSClients" defaultRenderType= "chart" />
<businessview executeQuery= "optimize" name= "R_EMP" target= "RMCR" viewstruct= "REC_EMP" />
<businessview executeQuery= "optimize" name= "R_EVE" target= "RMCR" viewstruct= "REC_EVE" />
<businessview executeQuery= "optimize" name= "R_TBL" target= "RMCR" viewstruct= "TBL_D" />
</businessview_def>
<presentation rootPath= "" >
<xsl fileRef= "fra/nav/clients.xsl" lang= "FRA" businessview= "Clients" support= "NAV/MIC" />
<xsl fileRef= "eng/nav/clients.xsl" lang= "ENG" businessview= "Clients" support= "NAV/MIC" />
<chart fileRef= "simplePie2.xml" lang= "FRA" businessview= "Clients" support= "NAV/MIC" />
</presentation>
Le nœud xsl_param est renommé en presentation.
Sous presentation, deux nœuds possibles : xsl et chart.
En plus du paramétrage par défaut précisé dans la configuration, il est possible de fixer le rendu par la requête via le paramètre render_type. Le type de rendu fixé par la requête est prioritaire sur celui de la configuration.
Valeurs possibles :
| Valeurs | Signification |
| xsl |
Génération du résultat sous forme html via le parsing d'une feuille xsl. |
| Chart | Génération du résultat sous forme SVG via la génération d'un graphique basé sur la configuration. |
Exemple de requête contenant le paramètre render_type:
http://localhost:8888/egx/btoe/ServletControl?sourceview=I_ACH_L&cinematic=forward(0,ACH)&entity=1&render_type=chart&frame=liste&chp:Codpev=I_ACH_F&chp:Typtie=FOU&chp:Achvte=A&chp:Sigtie=300001
Le nœud racine est le nœud config.
Il contient des informations propres au xml, principalement le chemin vers le schéma des graphiques, nommé egxChartConfiguration.xsd.
Nota : ce nœud ne sera pas repris dans les exemples suivants.
<config xmlns= "http://www.ACE.fr/technicalframework/chart" xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http:/ /www.ACE.fr/technicalframework/chart
D:\developpements\eclipseWorkspace\workspace\SocleCourant\doc\config\egxChartConfiguration.xsd" >
</config>
Le nœud chart est obligatoire. Deux attributs sont indispensables, il s'agit des dimensions du graphique.
| ATTRIBUT | TYPE | OPT/OBLIG | SIGNIFICATION |
| height | xs:positiveInteger | required | Hauteur de l'image du graphique en pixels. |
| width | xs:positiveInteger | required | Largeur de l'image du graphique en pixels. |
Exemple de configuration:
<chart height= "500" width= "700" >
</chart>
Avant de renseigner l'apparence d'un graphique, il est primordial d'en déterminer le type. Pour cela, il faut faire la distinction entre le rendu visuel attendu (affichage de ligne, de trait, de zone...) et la représentation des données.
Dans cette version, il existe deux types de graphiques :
| Type de graphique | Description |
| PIE | Graphique de type camembert avec uniquement une seule série de valeurs. |
| CATEGORY | Graphique en barre ou en ligne avec des points discontinus sur l'axe secondaire. La plupart du temps, les séries sont composées de données de type différents (comparatif du chiffre d’affaires par famille de produits par exemple). |
Exemple obtenu en utilisant le moteur graphique JfreeChart.
Vue graphique partielle du schéma concernant le graphique pie :
pie
Sont associés à ce nœud les attributs définissant les caractéristiques générales d'un graphique de type camembert.
sectionDefault
Ce nœud définit les caractéristiques des différentes portions du camembert.
sectionDetail
Surcharge sectionDefault section par section.
Seuls les nœuds pie et sectionDefaut sont obligatoires.
Il n'y a pas d'attribut obligatoire sur pie.
sectionDefaut doit indiquer au minimum les valeurs à afficher, cela grâce à une requête xPath.
| ATTRIBUT | TYPE | OPT/OBLIG | SIGNIFICATION |
| valueXpath | chart:XPath | required | Requête XPath dans le flux de présentation pour déterminer la valeur de chaque section du camembert. |
Remarque importante :
La requête xPath associé à l'attribut valueXpath doit sélectionner des nœuds de type <business_data>.
La requête doit avoir le format suivant :
//chemin_dans_le_flux_de_presentation/business_data
Exemple de requête
//VueUtilisateurCourantSociete/JUt_UtiView/JUt_UtiViewRow/VueTbl/DTbl/DTblRow[1]/VueEvenement/JEveView[1]/JEveViewRow[1]/Datmod/business_data
|
<chart height= "500" width= "700" > <pie> <sectionDefault valueXpa th="//VueUtilisateurCourantSociete/JUt_UtiView/JUt_UtiViewRow/VueTbl/DTbl /DTblRow[1]/VueEvenement/JEveView[1]/JEveViewRow[1]/Datmod/business_data" > </sectionDefault> </pie> </chart> |
Ce fichier minimaliste est suffisant pour obtenir le résultat suivant :
L'attribut paintList du nœud pie est une liste de couleurs dans laquelle on puisera pour afficher les différentes sections. Si elle contient moins d'éléments que le nombre de sections, on rebouclera sur la première valeur.
Ex : Couleurs d'un camembert divisé en 5 sections avec une liste contenant 3 couleurs (red, blue, green)
| Section | Couleur |
| 1 | red |
| 2 | Blue |
| 3 | Green |
| 4 | Red |
| 5 | blue |
Exemple obtenu en utilisant le moteur graphique JfreeChart.
Vue graphique partielle représentant le schéma de configuration concernant le graphique category :
category
Sont associés à ce nœud les attributs définissant les caractéristiques générales d'un graphique représentant l'évolution de séries de type catégorie.
dataset
Nœud représentant la feuille de valeurs.
categorySet et categoryNamed
Nœuds décrivant les catégories
serie
Nœud décrivant les séries de valeurs
categoryAxis et valueAxis
Permet de modifier l'apparence des axes.
Un graphique de type category est nativement plus complexe qu'un graphique pie car il représente plus de données. Des "series" de données sont regroupées en "catégories".
Les nœuds category et dataset sont obligatoires.
Il n'y a pas d'attribut obligatoire sur aucun des nœuds.
Exemple de configuration:
|
<chart height= "250" width= "300" > <category> <dataset> </dataset> </category> </chart> |
Ensuite viennent les nœuds qui alimentent les category et les serie.
Il y a un choix à faire en fonction de la méthode d'alimentation des données.
Le nœud categorySet contient un attribut obligatoire :
| categorySet |
Définition des catégories par une requête xPath.
|
Le nœud categoryNamed contient un attribut obligatoire :
|
categoryNamed |
Définition d'une catégorie.
|
Le fonctionnement est similaire à celui des category.
Un nœud serie est obligatoire. Il contient des attributs communs optionnels aux nœuds fils.
Le nœud serieSet contient deux attributs obligatoires :
| serieSet
|
Définition des séries par une requête xPath pour les
valeurs et une requête xPath pour les noms.
|
Le nœud serieNamed contient deux attributs obligatoires :
| serieNamed
|
Définition d'une série.
|
Remarque importante :
Tout comme pour le graphique pie, les requêtes xPath associées aux attributs valueXpath et nameXpath doivent sélectionner des nœuds de type <business_data>.
La requête doit avoir le format suivant :
//chemin_dans_le_flux_de_presentation/business_data
Exemple de requête
//VueUtilisateurCourantSociete/JUt_UtiView/JUt_UtiViewRow/VueTbl/DTbl/DTblRow[1]/VueEvenement/JEveView[1]/JEveViewRow[1]/Datmod/business_data
|
<chart height= "250" width= "300" > <category> <dataset> <categorySet nameXpath=" une_requete/business_data" > </categorySet> <serie> <serieSet nameXpath= "une_autre_requete/business_data" valueXpath= "encore_une_requete/business_data" > </serieSet> < /serie> </dataset> </category> </chart> |
Ce fichier minimaliste est suffisant pour obtenir le résultat suivant :
Les exemples ci dessus montre un résultat brut. L'outil génère les graphiques avec des valeurs par défaut pour les couleurs, les polices, les libellés, etc.…
Le fichier de configuration permet de modifier dans une large part ces valeurs par défaut.
La modification de ces valeurs commence par la définition d'éléments de bases représentant une couleur, une police, etc.…
Ces éléments sont sous le nœud config et utilisés par les graphiques via un nom.
Ce paragraphe donne la liste des éléments de bases disponibles dans la version 500ES2. C'est une liste assez fastidieuse mais ces éléments sont indispensables pour pourvoir paramétrer l'apparence des graphiques. En effets, les graphiques font référence à ces éléments de base. Ils ne peuvent pas être définis directement dans le graphique.
Définition d'une police de caractères.
| ATTRIBUT | TYPE | OPT/OBLIG | SIGNIFICATION |
| name | chart:StringValueNotEmpty | required | Libellé identifiant une police de caractère et son style dans les éléments du graphique. |
| Font | chart:StringValueNotEmpty | required | Référence à un élément "font".Nom de la police de caractères. |
| Style | chart:FontStyle | required | Style appliqué sur la police (italique, gras…). |
| size | xs:positiveInteger | required | Taille souhaitée de la police. |
<font_def>
<font_type name= "maFonteTitre" font= "Helvetica" style= "BOLD" size= "18" />
<font_type name= "maFonte" font= "Verdana" style= "PLAIN" size= "12" />
</font_def>
Une couleur peut être définie de trois façons distinctes :
Le nœud paint_def est composé d'autant de paint_type qu'il y a de couleurs à définir.
Le nœud paint_type est de type Paint.
Le nœud Paint contient soit un nœud Color, soit un nœud gradientPaint.
| Paint |
|
Le nœud Color contient soit une couleur de base, soit la définition RGB de la couleur. Si les deux sont renseignés, la couleur de base est prioritaire.
|
Color |
|
Couleurs de base.
| ENUMERATION |
| WHITE |
| LIGHT_GRAY |
| GRAY |
| DARK_GRAY |
| BLACK |
| RED |
| PINK |
| ORANGE |
| YELLOW |
| GREEN |
| MAGENTA |
| CYAN |
| BLUE |
Le nœud GradientPaint définie un dégradé entre deux couleurs. Les deux couleurs définissent les points de départ et d'arrivée du dégradé.
| GradientPaint |
|
Un "point" est défini par des coordonnées et une couleur. Un élément peut utiliser un autre élément. Les gradientPaintPoint en sont une illustration. Ils utilisent un pointeur vers un élément paint.
| GradientPaintPoint |
Element de définition d'un dégradé de couleur. Définition
d'un point (départ ou arrivée)
|
|
<paint_def> <paint_type name= "Jaune" > <color basic= "YELLOW" /> </paint_type> <paint_type name= "maCouleur" > <color> <RGB r= "152" g= "168" b= "174" /> </color> </paint_type> <paint_type name= "monDegrade" > <gradientPaint cyclic= "true" > <beginPoint paint= "RED" x= "0" y= "0" /> <endPoint x= "50" y= "100" paint= "Vert" /> </gradientPaint> </paint_type> </paint_def> |
Ce critère définit une liste de couleurs.
Il est utilisé pour définir les couleurs à utiliser pour les zones représentant les valeurs.
| PaintList |
|
<paint_list_def>
<paint_list_type name= "maListeCouleur" >
<paintRef> YELLOW </paintRef>
<paintRef> maCouleur </paintRef>
<paintRef> monDegrade </paintRef>
</paint_list_type>
</paint_list_def>
Ce critère définit les caractéristiques d'un fond.
Caractéristiques d'un fond.
| ATTRIBUT | TYPE | OPT/OBLIG | SIGNIFICATION |
| name | chart:StringValueNotEmpty | required | Libellé identifiant les caractéristiques du fond d'un élément. |
| backPaint | chart:StringValueNotEmpty | optional | Pointeur sur un element paint ou couleur de base. Couleur de remplissage de la zone. Valeur par défaut : Blanc. |
| borderPaint | chart:StringValueNotEmpty | optional | Pointeur sur un element paint ou couleur de base. Couleur de remplissage du bord de la zone. |
<background_def>
<background_type name= "monFond" backPaint= "monDegrade" />
<background_type name= "monFond2" backPaint= "maCouleur" />
</background_def>
Ce critère définit les caractéristiques d'affichage d'un libellé ou d'un titre. Depuis l’édition spécial 5.0-00 ES2, ces deux types d'éléments de base possèdent les mêmes caractéristiques.
Caractéristique d'affichage d'un libellé ou d'un titre.
| ATTRIBUT | TYPE | OPT/OBLIG | SIGNIFICATION |
| name | chart:StringValueNotEmpty | required | Libellé identifiant un label du graphique et son apparence. |
| Font | chart:StringValueNotEmpty | optional | Référence à un élément "font" définissant la police d'affichage. |
| Paint | chart:StringValueNotEmpty | optional | Référence à un élement "paint" ou à une couleur de base. Couleur du texte affiché. |
<item_label_def>
<item_label_type name= "monItemLabel" font= "maFonte" paint= "Noir" />
</item_label_def>
<title_appearance_def>
<title_appearance_type name= "Design titre" font= "maFonteTitre" paint= "Jaune" />
</title_appearance_def>
Ce critère permet de définir l'apparence de la légende du graphique.
L'élément légende utilise plusieurs pointeurs vers d'autres éléments de base comme un background, une fonte, etc.
Caractéristiques d'une légende.
| ATTRIBUT | TYPE | OPT/OBLIG | SIGNIFICATION |
| name | chart:StringValueNotEmpty | required | Identifiant de la légende. |
| Background | chart:StringValueNotEmpty | optional | Référence à un élément "background" définissant le fond de la légende. Valeur par défaut : zone blanche encadrée de noir. |
| itemFont | chart:StringValueNotEmpty | optional | Référence à un élément "font" indiquant la police utilisée pour afficher le nom des séries. Valeur par défaut : Sans Serif / Noir. |
| itemPaint | chart:StringValueNotEmpty | optional | Référence à un élement "paint" ou à une couleur de base. Couleur utilisée pour afficher le nom des séries. |
| titleValue | xs:string | optional | Libellé du titre de la légende (valeur "en dur"). |
| titleAppearance | chart:StringValueNotEmpty | optional | Référence à un objet "titleAppearance" définissant le style à appliquer au titre de la légende. |
<legend_def>
<legend_type name= "maLegend" background= "monFond" />
</legend_def>
Cet élément de base ne concerne que les graphiques de type PIE. Il permet de définir l'apparence du libellé des portions du graphique PIE. En plus des traditionnelles polices et couleurs, il permet surtout de définir le type de contenu du libellé. Ce type est à choisir parmi une liste prédéfinie.
Définition de l'apparence des libellés des sections du graphique pie.
| ATTRIBUT | TYPE | OPT/OBLIG | SIGNIFICATION |
| name | chart:StringValueNotEmpty | required | Libellé identifiant le formatage d'un label d'une section d'un graphique de type camembert. |
| type | chart:PieLabelType | optional | Type de formatage du libellé : affichage ou non du label d'une section, de sa valeur, du pourcentage qu'elle représente... |
| font | chart:StringValueNotEmpty | optional | Référence à un élément "font". Police utilisée pour afficher le label. Valeur par défaut : Sans Serif |
| paint | chart:StringValueNotEmpty | optional | Référence à un élement "paint" ou à une couleur de base. Couleur utilisée pour afficher le texte. Valeur par défaut : Noir. |
Liste des types disponibles pour l'apparence du libellé des sections du graphique pie.
Liste de valeurs. Formats possibles des labels du graphique pie.
| ENUMERATION |
| NO_LABELS |
| NAME_LABELS |
| VALUE_LABELS |
| PERCENT_LABELS |
| NAME_AND_VALUE_LABELS |
| NAME_AND_PERCENT_LABELS |
| VALUE_AND_PERCENT_LABELS |
<pie_section_label_def>
<pie_section_label_type name= "apparencelabel" font= "maFonte" type= "VALUE_AND_PERCENT_LABELS" />
</pie_section_label_def>
Comment améliorer la présentation et utiliser ces éléments de base dans un graphique de type PIE ?
Reprenons la configuration de base de notre camembert. Pour ne pas surcharger l'écriture, les requêtes xPath sont écrites sous la forme "ma_requete" :
<chart height= "500" width= "700" >
<pie>
<sectionDefault valueXpa th="ma_requete/business_data" >
</sectionDefault>
</pie>
</chart>
<chart height= "500" width= "700" legendVisible= "true" legend= "maLegend" background= "monFond2">
<pie>
<sectionDefault valueXpath ="ma_requete/business_data" >
</sectionDefault>
</pie>
</chart>
Cette configuration utilise les éléments de base maLegend et monFond2 vues dans les exemples précédents.
Les libellés des sections ne sont pas parlants. Une requête xPath permet de les définir à partir du flux de présentation :
<chart height= "500" width= "700" legendVisible= "true" legend= "maLegend" background= "monFond2" >
<pie>
<sectionDefault valueXpath ="ma_requete/business_data" nameXpath= "mon_autre_requete/business_data">
</sectionDefault>
</pie>
</chart>
Les libellés sont nettement plus parlants, mais il y a un souci au niveau de leur positionnement autour du camembert. Deux solutions vous sont offertes :
Pour modifier les offsets, il faut renseigner le nœud sectionDetail.
Un nœud pie/sectionDetail/label/offset est disponible.
La branche sectionDetail est compatible avec la branche sectionDefault. Elle vient la surcharger. Autrement dit, elle est prioritaire.
Les paramètres obligatoires de ces nœuds :
| sectionDetail |
Caractéristiques d'une section précise. Supplantent celles du "sectionDefault".
|
La section d'indice 1 est celle qui commence à 12H, donc la section rouge sur notre exemple. Les libellés 2, 3 et 4 sont à déplacer.
|
<chart height= "500" width= "700" legendVisible= "true" legend= "maLegend" background= "monFond2" > <pie> <sectionDefault valueXpath ="ma_requete/business_data" nameXpath= "mon_autre_requete/business_data" > </sectionDefault> <sectionDetail indice= "2" > <label> <offset x= "-10" y= "0" /> </label> </sectionDetail> <sectionDetail indice= "3" > <label> <offset x= "-30" y= "0" /> </label> </sectionDetail> <sectionDetail indice= "4" > <label> <offset x= "40" y= "0" /> </label> </sectionDetail> </pie> </chart> |
Le libellé de la section 1 nommé Proposition cdes multi-fourn n'est pas en phase avec les autres. Renommons le en Proposition commandes multi-fournisseur. Le noeud sectionDetail/label le permet. En plus de modifier le libellé, il faut aussi jouer sur l'offset afin qu'il soit visible.
En même temps, ne faisons pas apparaître le libellé de la section 2. L'attribut visible du nœud label le permet. Dans ce cas, le nœud offset n'est pas pris en compte.
Le nœud label est fils du nœud sectionDetail
| label |
Définition du libellé de la section d'indice "indice".
Prioritaire au libellé défini par la nameXPath du
sectionDefault.
|
|
<sectionDetail indice= "1" > <label nameValue= "Proposition commandes multi-fournisseurs"> <offset x= "-63" y= "-3" /> </label> </sectionDetail> <sectionDetail indice= "2" > <label visible= "false"> <offset x= "-10" y= "0" /> </label> </sectionDetail> |
Ces exemples ne montrent pas l'ensemble des attributs mais permettent d'avoir une idée du paramétrage disponible.
Nous verrons plus loin les fonctions plus avancées que sont les url et les javascript. Mais avant cela, découvrons de nouveaux attributs sur le graphique category.
Comment améliorer la présentation et utiliser les éléments de base dans un graphique de type category ?
Reprenons la configuration de base de notre graphique. Pour ne pas surcharger l'écriture, les requêtes xPath sont écrites sous la forme "ma_requete" :
|
<chart height= "500" width= "700" > <category> <dataset> <categorySet nameXpath=" une_requete/business_data" > </categorySet> <serie> <serieSet nameXpath= "une_autre_requete/business_data" valueXpath= "encore_une_requete/business_data" > </serieSet> </serie> </dataset> </category> </chart> |
Le principe est commun au graphique pie car cette configuration se trouve sur le nœud chart.
|
<chart height= "500" width= "700" legendVisible= "true" legend= "maLegend" background= "monFond2"> <category> <dataset> <categorySet nameXpath=" une_requete/business_data" > </categorySet> <serie> <serieSet nameXpath= "une_autre_requete/business_data" valueXpath= "encore_une_requete/business_data" > </serieSet> </serie> </dataset> </category> </chart> |
Cette configuration utilise les éléments de base maLegend et monFond2 vues dans les exemples précédents.
Nous obtenons le graphique :
L'alimentation se fait via des requêtes xPath présentes dans les nœuds categorySet et serieSet. Obtenir toutes les données avec une seule requête xPath n'est pas des plus facile. Générons le même graphique en utilisant une requête par category. Le même principe peut être appliqué pour les serie.
|
<chart height= "500" width= "700" legendVisible= "true" legend= "maLegend" background= "monFond2" > <category> <dataset> <categoryNamed nameValue= "cat. 1"/ > <categoryNamed nameValue= "cat. 3" /> <categoryNamed nameValue= "cat. 2"/ > <categoryNamed nameValue= "cat. 4" /> <categoryNamed nameValue= "cat. 5" /> <serie> <serieSet nameXpath= "une_autre_requete/business_data" valueXpath= "encore_une_requete/business_data" > </serieSet> </serie> </dataset> </category> </chart> |
Le nœud annotation permet d'ajouter un texte associé à une category
La configuration se trouve dans le paragraphe suivant
Le nœud appearance permet de modifier l'apparence d'une serie.
| Appearance |
Définition de l'apparence d'un element graphique.
|
|
<chart height= "500" width= "700" legendVisible= "true" legend= "maLegend" background= "monFond2" > <category> <dataset> <categoryNamed nameValue= "cat. 1"/ > <categoryNamed nameValue= "cat. 3" > <annotation text= "annotation sur category d'indice 3" /> </categoryNamed> <categoryNamed nameValue= "cat. 2"/ > <categoryNamed nameValue= "cat. 4" /> <categoryNamed nameValue= "cat. 5" /> <serie> <serieSet nameXpath= "une_autre_requete/business_data" valueXpath= "encore_une_requete/business_data" > <appearance indice= "3" itemLabelVisible= "true" itemLabelFont= "maFonteTitre" itemLabelPaint= "maCouleur"/ > </serieSet> </serie> </dataset> </category> </chart> |
Il est possible de modifier l'apparence des axes. Quelques possibilités :
L'échelle des valeurs : fixons le maximum à 10000 au lieu de 7000.
Ajoutons des lignes horizontales de couleur noire pour mieux appréhender les valeurs des barres.
Ajoutons un titre
Il existe d'autres attributs permettant de modifier l'apparence des axes.
|
<chart height= "500" width= "700" legendVisible= "true" legend= "maLegend" background= "monFond2" > <category> <dataset> <categoryNamed nameValue= "cat. 1"/ > <categoryNamed nameValue= "cat. 3" > <annotation text= "annotation sur category d'indice 3" /> </categoryNamed> <categoryNamed nameValue= "cat. 2"/ > <categoryNamed nameValue= "cat. 4" /> <categoryNamed nameValue= "cat. 5" /> <serie> <serieSet nameXpath= "une_autre_requete/business_data" valueXpath= "encore_une_requete/business_data" > <appearance indice= "3" itemLabelVisible= "true" itemLabelFont= "maFonteTitre" itemLabelPaint= "maCouleur"/ > </serieSet> </serie> <categoryAxis labelValue= "libellé sur categoryAxis" /> <valueAxis valueType= "NUMBER" gridlineVisible= "true" gridlinePaint= "Noir" maximum= "10000" /> </dataset> </category> </chart> |
Une dernière modification. L'apparence des valeurs peut se faire sous forme de barres ou sous forme de lignes. La forme barre est l'apparence par défaut.
Cette apparence est pilotée par l'attribut rendererType du nœud dataset :
| dataset
|
Le dataset représente la zone contenant le graphique, avec
les données , les axes, etc. Un graphique contenant plusieurs
dataset pourra être envisagé dans l'avenir.
|
Configuration du nœud dataset
| <dataset rendererType= "LINE_AND_SHAPE" > |
Jusqu'à maintenant nous avons vu comment modifier l'apparence "statique" du graphique. Il est également possible de configurer :
Des éléments "dynamiques" : des url pour exécuter des cinématiques de navigation et des javascript.
Des zones de textes indépendantes du graphique, avec éventuellement une url associée.
Les possibilités de cinématique des graphiques sont sensiblement les mêmes que celles obtenues via les feuilles XSL.
Dans cette version, on peut intégrer des liens URLs complètement dynamiques au niveau :
On peut y faire figurer des paramètres dont les valeurs sont issues du graphique ou du flux de présentation ayant servi à le générer.
Avant d'intégrer une url dans le paramétrage du graphique, il faut créer un élément de base url_type
| Url |
|
Définition du type url_type :
Au type Url s'ajoute les attributs propres à la cible de 'url : target, show et actuate. Ces deux derniers sont des attributs de la norme xLink.
Remarque technique : Le format graphique SVG annonce supporter nativement XLINK dans la définition des URLs. Cela reste cependant un principe : la norme SVG 1.0 définie par le W3C sur laquelle s'appuie les graphiques d’ACE ne supporte pas l'ensemble des attributs du XLINK.
De toute façon, les navigateurs actuels (en particulier IE 6.0) ne supporte non plus l'ensemble des attributs du XLINK.
| url_def |
|
Une url est composée d'une partie fixe définissant les grandes lignes de la requête :
Exemple de configuration :
|
<url_type name= "monUrl" prefix= "http://fx-fcarton/egx/ServletControl? sourceview=maView&cinematic=forward(0)&frame=maFrame > </url_type> |
Il est possible de compléter l'url par des paramètres de type chp: Ces paramètres ont un type qui détermine leur alimentation.
Les types de paramètres disponibles :
| ENUMERATION | Signification |
| SECTION_NAME | Nom de la section (pie uniquement) |
| SECTION_VALUE | Valeur de la section (pie uniquement) |
| SECTION_INDICE | Indice de la section (pie uniquement) |
| CATEGORY_NAME | Nom de la catégorie (category uniquement) |
| CATEGORY_INDICE | Indice de la catégorie (category uniquement) |
| SERIE_NAME | Nom de la série (category uniquement) |
| SERIE_VALUE | Valeur de la série (category uniquement) |
| SERIE_INDICE | Indice de la série (category uniquement) |
| XMLPRES_VALUE | Valeur provenant du flux de présentation. |
| FIXED_VALUE | Valeur fixée. |
l'url précédente avec des chp pour un graphique de type pie.
|
<url_type name= "monUrl" prefix= "http://fx-fcarton/egx/ServletControl? sourceview=maView&cinematic=forward(0)&frame=maFrame" target= "bas" > <chp name= "entrepot" type= "SECTION_NAME" /> <chp name= "qte" type= "SECTION_VALUE" /> <chp name= "typtie" type= "XMLPRES_VALUE" value= "//VueUtilisateurCourantSociete/JUt_UtiView/JUt_UtiViewRow/Nom/business_data" /> </url_type> |
La même url avec des chp pour un graphique de type category :
<url_type name= "categoryUrl" prefix= "http://fx-fcarton/egx/ServletControl?sourceview=maView&cinematic=forward(0)&frame=maFrame" target= "toto" >
<chp name= "category" type= "CATEGORY_NAME" />
<chp name= "serie" type= "SERIE_NAME" />
<chp name= "qte" type= "SERIE_VALUE" />
</url_type>
Une url par défaut se positionne sur le nœud sectionDefault, attribut url
Une url par section, prioritaire sur l'url du noeud sectionDefault, se positionne sur le nœud sectionDetail, attribut url.
Exemple de configuration :
On se base sur la configuration du pie construite précédemment :
<chart height= "500" width= "700" legendVisible= "true" legend= "maLegend" background= "monFond2" >
<pie>
<sectionDefault valueXpath ="ma_requete/business_data" nameXpath= "mon_autre_requete/business_data" url= "monUrlDeBase">
</sectionDefault>
<sectionDetail indice= "2" url= "monUrlSection2">
<label>
<offset x= "-10" y= "0" />
</label>
</sectionDetail>
<sectionDetail indice= "3" >
<label>
<offset x= "-30" y= "0" />
</label>
</sectionDetail>
<sectionDetail indice= "4" url= "monUrlSection4"/>
</pie>
</chart>
Le noeud category/dataset/url permet de définir l'url de base qui sera disponible sur chacune des serie.
Selon le type d'alimentation des séries, les nœuds serie/serieSet/url ou serie/serieNamed/url permettent de définir une url par série. Cette url est prioritaire sur l'url définie sur le nœud dataset/url
Représentation graphique des nœuds url pour le graphique category.
Le comportement des urls dépend de la valeur de l'attribut "target" :
® frame existante : affiche dans la frame indiquée (même si elle se trouve dans une autre fenêtre).
® frame inexistante : ouvre un nouveau navigateur.
® Pas de valeur spécifiée : affiche dans la frame courante
Dans cette version, les URLs ne se déclenchent que via un clic souris de l'utilisateur. Néanmoins, comme pour les feuilles XSL, il est possible de provoquer l'activation d'autres frames au chargement d'une page via la programmation d'un javascript (cf. partie suivante).
Par contre, dans des cas précis, il arrive que le bouton "Page précédente" de la barre de navigation de l'explorateur ne produise pas le résultat escompté. Par exemple, quand on affiche dans la même frame un graphique puis une page texte relié par une URL, le clic sur "Page précédente" se contente de reblanchir la frame sans réafficher le graphique.
La configuration permet de définir des annotations libres, indépendantes du graphique. Le nœud chart/freeAnnotation permet cela.
Représentation graphique du nœud freeAnnotation
| FreeAnnotation |
|
Le texte d'une freeAnnotation est alimenté soit par une requête xPath dans la configuration, soit par un texte en dur. L'attribut url fait référence à un url_type.
Le nœud position détermine la position du texte dans le graphique. Les coordonnés (0,0) correspondent au coin haut gauche du graphique.
|
<chart height= "500" width= "700" legendVisible= "true" legend= "maLegend" background= "monFond2" > <category> <dataset> <categoryNamed nameValue= "cat. 1"/ > <categoryNamed nameValue= "cat. 3" > <annotation text= "annotation sur category d'indice 3" /> </categoryNamed> <categoryNamed nameValue= "cat. 2"/ > <categoryNamed nameValue= "cat. 4" /> <categoryNamed nameValue= "cat. 5" /> <serie> <serieSet nameXpath= "une_autre_requete/business_data" valueXpath= "encore_une_requete/business_data" > <appearance indice= "3" itemLabelVisible= "true" itemLabelFont= "maFonteTitre" itemLabelPaint= "maCouleur"/ > </serieSet> </serie> </dataset> </category> <freeAnnotation xPath ="/ma_requete_pour_freeAnnotation" font= "maFonte" paint= "RED" url= "monUrlFreeAnnotation" > <position x= "100" y= "50" /> </freeAnnotation> </chart> |
Il est possible d'inclure dans le graphique des fonctions javascript et de les appeler en fonctions d'événements prédéfinis.
Un des avantages du format graphique choisi (Scalable Vector Graphic) est d'autoriser l'intégration assez simple de javascript. Ils sont utiles pour modifier dynamiquement l'apparence des graphiques (barre changeant de couleur, apparition de zone ombrée...) suivant les évènements souris engendrés par l'utilisateur. Ils apportent une touche indéniable de confort visuel au résultat affiché.
Les scripts sont définies dans le paramétrage du graphique, dans l'unique nœud javascript_def. Qui est vu comme un gros bloc de données.
Pour éviter d'encombrer le paramétrage avec des lignes de scripts, il est possible de déporter les scripts dans un fichier externe.
Exemple de configuration intégrant les scripts :
|
<?xml version="1.0" encoding="iso-8859-15"?> <config … " > <javascript_def> var rectElement,textElement,textNode,fontSize,currentScale,currentTranslate; var svgDocument; function update() { var SVGRoot=svgDocument.getDocumentElement(); currentScale=SVGRoot.currentScale; currentTranslate=SVGRoot.currentTranslate; ... </javascript_def> |
Exemple de configuration avec le code javascript externalisée dans un fichier nommé script.js dans le même répertoire que la configuration du graphique.
|
<?xml version="1.0" encoding="iso-8859-15"?> <!DOCTYPE config [ <!ENTITY javascript SYSTEM "script.js"> ]> <config …> <javascript_def> &javascript; </javascript_def> |
Dans cette version, il n'est possible de déclencher des fonctions javascript que sur les portions graphiques (barres, point ou section) via le noeud javascript. En théorie, cela est possible sur tous les éléments composant l'image (titre, légende...). La version 500ES2 n'implémente pas ces possibilités.
Un appel de fonction se décompose en trois parties :
| Javascript |
Définition d'un appel de fonction javascript.
|
Les événements disponibles sont :
Liste des énévements svg pris en compte par le graphique. Lié au javascript.
| ENUMERATION |
| onAbort |
| onActivate |
| onBegin |
| onClick |
| onEnd |
| onError |
| onFocusIn |
| onFocusOut |
| onLoad |
| onMouseDown |
| onMouseUp |
| onMouseMove |
| onMouseOver |
| onMouseOut |
| onRepeat |
| onResize |
| onScroll |
| onUnload |
| onZoom |
Les types de paramètres qui peuvent être passé à la fonction sont les mêmes que pour les url.
| ENUMERATION |
| SECTION_NAME |
| SECTION_VALUE |
| SECTION_INDICE |
| CATEGORY_NAME |
| CATEGORY_INDICE |
| SERIE_NAME |
| SERIE_VALUE |
| SERIE_INDICE |
| XMLPRES_VALUE |
| FIXED_VALUE |
Exemple de paramétrage d'un appel de fonction javascript.
La fonction se nomme maFonctionJavascript et prend deux paramètres, un en dur qui contient "evt" et un qui contient la valeur de la série courante.
|
<javascript event= "onMouseOver" function= "maFonctionJavascript" > <param type= "FIXED_VALUE" value= "evt" /> <param type= "SERIE_VALUE" /> </javascript> |
Le résultat donne un appel du type :
maFonctionJavascript(evt, 2000)
Il est possible de paramétrer plusieurs appels par point d'entrée, pour un même événement ou pour plusieurs événements.
Un nœud javascript est disponible sous le noeud chart.
Ce point d'entrée permet d'appeler des scripts à l'ensemble du graphique, indépendamment des sections graphiques. Par exemple lors du chargement du graphique, en associant l'appel à l'événement onLoad.
Les appels déclarés sur le nœud sectionDefaut sont associés à l'ensemble des sections.
Les appels déclarés sur le nœud sectionDetail sont associés à la section concernée. Ces appels s'ajoutent aux appels déjà déclarés sur le nœud sectionDefaut.
Selon le type d'alimentation des séries, les appels sont à positionner sous le nœud serieSet ou serieNamed.
1) Récupération d'un noeud SVG
On utilise soit la fonction "getTarget" (récupération de l'objet courant), soit la fonction "getItemById" (récupération d'un noeud identifié). Pour simplifier cette étape, chaque composant graphique a été automatiquement nommé à sa génération en respectant la règle suivante :
| Type de graphique | Nom | Signification |
| PIE | area_x avec x l'indice de la section | Zone graphique définissant une section. |
| PIE | outline_x avec x l'indice de la section | Bord de la zone graphique d'une section. |
| CATEGORY (barre ou ligne) | area_x_y avec x l'indice de la catégorie et y l'indice de la série | Zone graphique (barre ou point) définissant une valeur d'une série. |
| CATEGORY (barre ou ligne) | outline_x_y avec x l'indice de la catégorie et y l'indice de la série | Bord de la zone graphique définissant une valeur d'une série. |
2) modification des attributs ou propriétés de cet objet
Une fois l'objet SVG sélectionné, il est possible d'en modifier toutes les caractéristiques d'apparence via les deux méthodes "setAttribute" et "setProperty".
Exemple obtenu en utilisant le moteur graphique JfreeChart.
Le graphique XY n'est pas disponible dans la version 5.0-00 ES2.
Ce paragraphe contient tout un paragraphe sur la construction des requêtes « xPath » et sur les possibilités du javascript.
Une fois un premier rendu obtenu, il est souvent nécessaire de procéder à quelques ajustements visuels, particulièrement lorsque les valeurs représentées vont varier dans le temps. Les quelques règles et astuces suivantes permettent de conserver une lisibilité correcte du graphique.
Cela en réalisant la feuille de style permettant d'afficher les données sous forme de tableau.
Cette étape permet :
® Créer ou dupliquer les éléments de base en leur donnant les caractéristiques de la charte graphique du site (fond, couleur, police...).
® Utiliser les attributs "Visible" du fichier de paramétrage.
Par exemple : il est préférable de spécifier systématiquement un noeud LEGEND_DEF et de mettre l'attribut "legendVisible" du noeud CHART à false. Cela permet de changer ultérieurement très facilement les caractéristiques du graphique. Cela ne consomme pas plus de ressources ou de temps d'exécution puisque le noeud n'est interprété que s'il est utilisé.
® Pour écrire les requêtes XPath sélectionnant les données dans le flux de présentation, il est conseillé d'utiliser les possibilités des éditeurs de texte comme XMLSpy, Cooktop ou xPathExplorer. Ils permettent ainsi de copier une requête depuis une position dans le flux XML ou d'en évaluer facilement le résultat.
Il est alors préférable d'utiliser un affichage horizontal du graphique (noeud CATEGORY, attribut "orientation") plutôt que de réduire la taille de la police au maximum. C'est en effet dans cette configuration que la place réservée aux libellés est la plus importante. A noter que cette dernière n'est pas paramétrable dans cette version.
Ce paramétrage est obtenu en mettant à true la valeur de l'attribut "ItemLabelVisible" du noeud APPEARANCE. La valeur de la barre la plus importante peut ne pas être lisible.
Deux solutions :
Cela peut se produire lorsque la zone du graphique est assez limitée et que les noms des sections sont longs. La solution consiste à utiliser les différents types d'affichage des sections en les combinant à l'utilisation d'une légende.
Par exemple :
Même si la frame a été configurée pour afficher des barres de scroll, ces dernières disparaîtront systématiquement à l'affichage du graphique SVG. Si on réaffiche dans la même une représentation HTML, elles réapparaîtront.
A savoir : Il est possible d'afficher un graphique avec des dimensions supérieures (attributs "height" et "width" du noeud CHART) à la place disponible dans la frame. Il sera simplement tronqué.
S'il n'est pas possible de scroller dans un graphique, on peut par contre le zoomer en utilisant le menu contextuel offert par le viewer pugglé dans le navigateur (à priori celui d'Adobe).
Les portions graphiques sont remplies par défaut avec une liste non paramétrable de couleur de base : rouge, vert, bleu, jaune... Si elle ne convient pas (déphasage avec la charte graphique du site par exemple), il est possible de modifier la couleur de chacune des portions.
Graphique category : Utiliser l'attribut "paint" du noeud APPEARANCE des noeuds SERIESET ou SERIENAMED pour fixer la couleur d'une des séries.
Graphique pie : Soit utiliser l'attribut "paint" du noeud SECTIONDETAIL pour fixer la couleur d'une section. Soit utiliser l'attribut "paintlist" du noeud SECTIONDEFAULT pour spécifier une liste de couleurs elle même décrite dans le noeud PAINT_LIST_TYPE.
Dans tous les cas, il faut savoir que les couleurs spécifiées ne remplacent pas la couleur de base de la liste par défaut.
Exemple :
Un camembert à 4 sections : rouge, vert, bleu, jaune.
Si on fixe une nouvelle couleur (coul1) pour la première section, l'affichage devient : coul1, rouge, vert, bleu et non pas coul1, vert, bleu, jaune.
|
<?xml version="1.0" encoding="iso-8859-15"?> <!DOCTYPE config [ <!ENTITY javascript SYSTEM "script.js"> ]> < config xmlns =" http://www.ACE.fr/technicalframework/chart " xmlns:xsi =" http://www.w3.org/2001/XMLSchema-instance " xsi:schemaLocation =" http://www.ACE.fr/technicalframework/chart file:///D:\developpements\workspace\SocleCourant\doc\config/egxChartConfiguration.xsd "> < javascript_def > &javascript; </ javascript_def > < font_def > < font_type name =" maFonteTitre " font =" Helvetica " style =" BOLD " size =" 18 "/> < font_type name =" maFonte " font =" Verdana " style =" PLAIN " size =" 12 "/> </ font_def > < paint_def > < paint_type name =" Jaune "> < color basic =" YELLOW "/> </ paint_type > < paint_type name =" Rouge "> < color basic =" RED "/> </ paint_type > < paint_type name =" Vert "> < color basic =" GREEN "/> </ paint_type > < paint_type name =" Noir "> < color basic =" BLACK "/> </ paint_type > < paint_type name =" monDegrade "> < gradientPaint cyclic =" true "> < beginPoint paint =" RED " x =" 0 " y =" 0 "/> < endPoint x =" 50 " y =" 100 " paint =" Vert "/> </ gradientPaint > </ paint_type > < paint_type name =" monDegrade2 "> < gradientPaint cyclic =" true "> < beginPoint paint =" Jaune " x =" 0 " y =" 0 "/> < endPoint x =" 50 " y =" 100 " paint =" Vert "/> </ gradientPaint > </ paint_type > < paint_type name =" maCouleur "> < color > < RGB r =" 152 " g =" 168 " b =" 174 "/> </ color > </ paint_type > </ paint_def > < paint_list_def > < paint_list_type name =" maListeCouleur "> < paintRef > YELLOW </ paintRef > < paintRef > maCouleur </ paintRef > < paintRef > monDegrade </ paintRef > </ paint_list_type > </ paint_list_def > < background_def > < background_type name =" monFond " backPaint =" monDegrade "/> < background_type name =" monFond2 " backPaint =" monDegrade2 "/> </ background_def > < title_appearance_def > < title_appearance_type name =" Design titre " font =" maFonteTitre " paint =" Jaune "/> </ title_appearance_def > < legend_def > < legend_type name =" maLegend " background =" monFond "/> </ legend_def > < url_def > < url_type name =" monUrl " prefix =" http://fx-fcarton/egx/ServletControl?sourceview=maView&cinematic= forward(0)&frame=maFrame " target =" maCible "> < chp name =" entrepot " type =" SECTION_NAME "/> < chp name =" qte " type =" SECTION_VALUE "/> < chp name =" typtie " type =" XMLPRES_VALUE " value =" //temporaire/param[@name='chp:Typtie']/@value' "/> </ url_type > </ url_def > < pie_section_label_def > < pie_section_label_type name =" apparencelabel " font =" maFonte " type =" VALUE_LABELS "/> </ pie_section_label_def > < chart height =" 500 " width =" 700 " legendVisible =" true " tooltipsVisible =" true " legend =" maLegend " background =" monFond2 " paint =" maCouleur " titleValue =" TITRE DU GRAPHIQUE " titleAppearance =" Design titre "> < pie paintList =" maListeCouleur " sectionLabel =" apparencelabel "> < sectionDefault valueXpath =" //VueUtilisateurCourantSociete/JUt_UtiView/JUt_UtiViewRow/VueTbl/DTbl/DTblRow[1] /VueEvenement/JEveView[1]/JEveViewRow[1]/Datmod/business_data " url =" monUrl "> </ sectionDefault > < sectionDetail indice =" 1 " paint =" Jaune "> < label visible =" true " nameValue =" Label 1 "> < offset x =" 30 " y =" 0 "/> </ label > < javascript event =" onMouseOver " function =" activateToolTipConfig "> < param type =" FIXED_VALUE " value =" evt "/> < param type =" SECTION_VALUE "/> </ javascript > < javascript event =" onMouseOut " function =" deactivateToolTipConfig "> < param type =" FIXED_VALUE " value =" evt "/> < param type =" SECTION_INDICE "/> < param type =" XMLPRES_VALUE " value =" count(//VueUtilisateurCourantSociete/JUt_UtiView/JUt_UtiViewRow/VueTbl/DTbl/DTblRow[1]/VueEvenement/JEveView[1] /JEveViewRow[1]/Datmod/business_data) "/> </ javascript > < javascript event =" onMouseOver " function =" set_opacity "> < param type =" FIXED_VALUE " value =" evt "/> < param type =" FIXED_VALUE " value =" 0.5 "/> </ javascript > < javascript event =" onMouseOut " function =" set_opacity "> < param type =" FIXED_VALUE " value =" evt "/> < param type =" FIXED_VALUE " value =" 1 "/> </ javascript > </ sectionDetail > < sectionDetail indice =" 2 " paint =" Noir "> < label nameValue =" Label 2 " visible =" true "> < offset x =" 100 " y =" 0 "/> </ label > </ sectionDetail > < sectionDetail indice =" 10 " paint =" Noir "> < label visible =" false " nameValue =" Label 10 "/> </ sectionDetail > </ pie > < javascript event =" onLoad " function =" createToolTipConfig "> < param type =" FIXED_VALUE " value =" evt "/> < param type =" FIXED_VALUE " value =" '#000000' "/> < param type =" FIXED_VALUE " value =" '#99ffcc' "/> < param type =" FIXED_VALUE " value =" 'Verdana' "/> < param type =" FIXED_VALUE " value =" 10 "/> < param type =" FIXED_VALUE " value =" 'normal' "/> < param type =" FIXED_VALUE " value =" 'normal' "/> < param type =" FIXED_VALUE " value =" true "/> </ javascript > </ chart > </ config > |
|
<?xml version="1.0" encoding="iso-8859-15"?> <!DOCTYPE config [ <!ENTITY javascript SYSTEM "script.js"> ]> < config xmlns =" http://www.ACE.fr/technicalframework/chart " xmlns:xsi =" http://www.w3.org/2001/XMLSchema-instance " xsi:schemaLocation =" http://www.ACE.fr/technicalframework/chart file:///D:\developpements\workspace\SocleCourant\doc\config/egxChartConfiguration.xsd "> < javascript_def > &javascript; </ javascript_def > < font_def > < font_type name =" maFonteTitre " font =" Helvetica " style =" BOLD " size =" 18 "/> < font_type name =" maFonte " font =" Verdana " style =" PLAIN " size =" 12 "/> </ font_def > < paint_def > < paint_type name =" Jaune "> < color basic =" YELLOW "/> </ paint_type > < paint_type name =" Rouge "> < color basic =" RED "/> </ paint_type > < paint_type name =" Vert "> < color basic =" GREEN "/> </ paint_type > < paint_type name =" Noir "> < color basic =" BLACK "/> </ paint_type > < paint_type name =" monDegrade "> < gradientPaint cyclic =" true "> < beginPoint paint =" RED " x =" 0 " y =" 0 "/> < endPoint x =" 50 " y =" 100 " paint =" Vert "/> </ gradientPaint > </ paint_type > < paint_type name =" monDegrade2 "> < gradientPaint cyclic =" true "> < beginPoint paint =" Jaune " x =" 0 " y =" 0 "/> < endPoint x =" 50 " y =" 100 " paint =" Vert "/> </ gradientPaint > </ paint_type > < paint_type name =" maCouleur "> < color > < RGB r =" 152 " g =" 168 " b =" 174 "/> </ color > </ paint_type > < paint_type name =" lightsalmon "> < color > < RGB r =" 255 " g =" 160 " b =" 122 "/> </ color > </ paint_type > </ paint_def > < paint_list_def > < paint_list_type name =" maListeCouleur "> < paintRef > YELLOW </ paintRef > < paintRef > maCouleur </ paintRef > < paintRef > monDegrade </ paintRef > </ paint_list_type > </ paint_list_def > < background_def > < background_type name =" monFond " backPaint =" monDegrade "/> < background_type name =" monFond2 " backPaint =" monDegrade2 "/> </ background_def > < item_label_def > < item_label_type name =" monItemLabel " font =" maFonte " paint =" Noir "/> </ item_label_def > < title_appearance_def > < title_appearance_type name =" Design titre " font =" maFonteTitre " paint =" Jaune "/> </ title_appearance_def > < legend_def > < legend_type name =" maLegend " background =" monFond "/> </ legend_def > < url_def > < url_type name =" monUrl " prefix =" http://fx-fcarton/egx/ServletControl?sourceview=maView&cinematic= forward(0)&frame=maFrame " target =" bas "> < chp name =" entrepot " type =" SECTION_NAME "/> < chp name =" qte " type =" SECTION_VALUE "/> < chp name =" typtie " type =" XMLPRES_VALUE " value =" //VueUtilisateurCourantSociete/JUt_UtiView/JUt_UtiViewRow /Nom/business_data "/> </ url_type > < url_type name =" categoryUrl " prefix =" http://fx-fcarton/egx/ServletControl?sourceview=maView&cinematic=forward(0) &frame=maFrame " target =" toto "> < chp name =" category " type =" CATEGORY_NAME "/> < chp name =" serie " type =" SERIE_NAME "/> < chp name =" qte " type =" SERIE_VALUE "/> </ url_type > < url_type name =" baseCategoryUrl " prefix =" http://www.caf.fr "> < chp name =" serie " type =" SERIE_NAME "/> < chp name =" qte " type =" SERIE_VALUE "/> </ url_type > </ url_def > < pie_section_label_def > < pie_section_label_type name =" apparencelabel " font =" maFonte " type =" NAME_AND_PERCENT_LABELS "/> </ pie_section_label_def > < chart height =" 500 " width =" 700 " legendVisible =" true " legend =" maLegend " tooltipsVisible =" true " background =" monFond2 " titleValue =" TITRE DU GRAPHIQUE " titleAppearance =" Design titre "> < category orientation =" VERTICAL "> < dataset rendererType =" BAR "> < categorySet nameXpath =" /layout_data/VueUtilisateurCourantSociete/JUt_UtiView/JUt_UtiViewRow/VueTbl/DTbl /DTblRow/TYPEVE/business_data "> < annotation text =" annotation sur la category 1 " indice =" 1 "/> < annotation text =" annotation sur la category 5 " indice =" 5 "/> < annotation text =" annotation sur la category 5 " indice =" 10 "/> </ categorySet > < serie itemLabelVisible =" true " itemLabel =" monItemLabel "> < serieNamed nameValue =" serie 1 " valueXpath =" //VueUtilisateurCourantSociete/JUt_UtiView/JUt_UtiViewRow/VueTbl/DTbl/DTblRow/VueEvenement/JEveView /JEveViewRow[1]/Datmod/business_data "> < url > categoryUrl </ url > < appearance itemLabelVisible =" true " itemLabelFont =" maFonteTitre " itemLabelPaint =" maCouleur "/> < javascript event =" onMouseOver " function =" activateToolTipConfig "> < param type =" FIXED_VALUE " value =" evt "/> < param type =" SERIE_VALUE "/> </ javascript > < javascript event =" onMouseOut " function =" deactivateToolTipConfig "> < param type =" FIXED_VALUE " value =" evt "/> < param type =" CATEGORY_INDICE "/> < param type =" SERIE_INDICE "/> </ javascript > </ serieNamed > < serieNamed nameValue =" serie 2 " valueXpath =" //VueUtilisateurCourantSociete/JUt_UtiView/JUt_UtiViewRow/VueTbl/DTbl/DTblRow/VueEvenement/JEveView /JEveViewRow[2]/Datmod/business_data "/> < serieNamed nameValue =" serie 3 " valueXpath =" //VueUtilisateurCourantSociete/JUt_UtiView/JUt_UtiViewRow/VueTbl/DTbl/DTblRow/VueEvenement/JEveView /JEveViewRow[3]/Datmod/business_data "/> </ serie > < categoryAxis gridlineVisible =" false " gridlinePaint =" Noir " labelValue =" label sur categoryAxis "/> < valueAxis valueType =" NUMBER " gridlineVisible =" false " gridlinePaint =" Noir " labelValue =" label sur ValueAxis. " visible =" true " maximum =" 30000 "/> < url > baseCategoryUrl </ url > </ dataset > </ category > < javascript event =" onLoad " function =" createToolTipConfig "> < param type =" FIXED_VALUE " value =" evt "/> < param type =" FIXED_VALUE " value =" '#000000' "/> < param type =" FIXED_VALUE " value =" '#99ffcc' "/> < param type =" FIXED_VALUE " value =" 'Verdana' "/> < param type =" FIXED_VALUE " value =" 10 "/> < param type =" FIXED_VALUE " value =" 'normal' "/> < param type =" FIXED_VALUE " value =" 'normal' "/> < param type =" FIXED_VALUE " value =" true "/> </ javascript > < freeAnnotation xPath =" /layout_data/VueUtilisateurCourantSociete/JUt_UtiView/JUt_UtiViewRow/VueTbl/DTbl/DTblRow[1]/LIB1/business_data " font =" maFonte " paint =" RED " url =" monUrl "> < position x =" 300 " y =" 100 "/> </ freeAnnotation > </ chart > </ config > |