Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > BIRT
BIRT Forum d'entraide sur BIRT (Business Intelligence and Reporting Tools). Avant de poster --> FAQ BIRT,Tutoriels BIRT
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 08/04/2008, 10h51   #1
Nouveau Membre du Club
 
Inscription : mars 2006
Messages : 143
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 143
Points : 35
Points : 35
Par défaut [2.3] Colorer 1 ligne sur 2 Crosstab

Bonjour,

Comment peut-on colorer une ligne sur deux dans une crosstab.

(Je sais colorer une ligne sur deux dans une table).

Merci.
sterix92 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2008, 17h48   #2
Membre actif
 
Avatar de helpmemorvan
 
Consultant en Business Intelligence
Inscription : juin 2007
Messages : 207
Détails du profil
Informations personnelles :
Âge : 27

Informations professionnelles :
Activité : Consultant en Business Intelligence

Informations forums :
Inscription : juin 2007
Messages : 207
Points : 165
Points : 165
Citation:
Envoyé par sterix92 Voir le message
Bonjour,

Comment peut-on colorer une ligne sur deux dans une crosstab.
j'imagine que comme pour le tableau tu as essayé d'insérer un superbe Highlight avec un fonction "row[0] % 2"equal to 0 et que la tu as eu un superbe message d'erreur (enjoy java powa). C'est normal il n'y a pas de Row dans le code Xml pour un cross table ce qui est évidemment ennuyeux pour faire marché un Highlight par row il faut donc faire marché le Highligh par cellule oui mais voila...

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<styles>
        <style name="crosstab-cell" id="4">
            <property name="backgroundColor">#FF0000</property>
            <property name="borderBottomColor">#CCCCCC</property>
            <property name="borderBottomStyle">solid</property>
            <property name="borderBottomWidth">1pt</property>
            <property name="borderLeftColor">#CCCCCC</property>
            <property name="borderLeftStyle">solid</property>
            <property name="borderLeftWidth">1pt</property>
            <property name="borderRightColor">#CCCCCC</property>
            <property name="borderRightStyle">solid</property>
            <property name="borderRightWidth">1pt</property>
            <property name="borderTopColor">#CCCCCC</property>
            <property name="borderTopStyle">solid</property>
            <property name="borderTopWidth">1pt</property>
        </style>
les cellules ont un style bien particulier qui leurs imposent entre guillemet des fonctions globales et non ligne à ligne comme on pouvait le faire dans une table.

quand l'on rajoute un high light sur une cellule on rajoute ce bout de code dans le code XML:
Code :
1
2
3
4
5
6
7
8
9
10
11
<data name="Data Set3::COMPTEVENTE" id="116">
                                    <list-property name="highlightRules">
                                        <structure>
                                            <property name="operator">eq</property>
                                            <property name="backgroundColor">#FF0000</property>
                                            <expression name="testExpr">fonction a trouvé</expression>
                                            <expression name="value1">comparé a une valeur en général 0</expression>
                                        </structure>
                                    </list-property>
                                    <property name="resultSetColumn">Data Set3::COMPTEVENTE</property>
</data>
il faut donc trouver une fonction qui nous retournerai le "rang" de la cellule
on pourrait ensuite la comparé et donc appliqué notre % 2 qui va bien.

je sais que je ne répond pas à la question mais si sa peu faire avancer quelqu'un pour trouvé une solution

Morvan.

Edit&Maj: j'ajouterai que highlight permet par un biais détourné de coloré une ligne sur 2 dans un table mais néanmoins meme si BIRT propose cette solution je la trouve plus proche de la bidouille que d'autre chose normalement cette fonction est censé mettre en évidence des informations et non aidé a la mise en forme je pense donc et sans doute a juste titre que coloré une ligne sur deux dans un cross table via l'utilisation de highlight relève de la science-fiction mais bon si un génie me prouve le contraire en créant la foncton miracle je suis près a repasser dans le domaine de la réalité
helpmemorvan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/05/2008, 14h35   #3
Invité régulier
 
Inscription : mai 2008
Messages : 19
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 19
Points : 6
Points : 6
Par défaut Highlight 1 ligne sur 2

J'ai trouver un exemple de CrossTab avec un highlight sur une ligne sur deux dans le rapport suivant :

http://wiki.eclipse.org/index.php/Cr...uct_%28BIRT%29

Après avoir pas mal chercher dans le code XML du rapport j'ai réussis à répliquer le code et franchement ce n'est pas de la tarte ... :

1 - Dans les script du rapport sur la callback beforeFactory il faut ajouter le code suivant :

Code :
1
2
3
importPackage( Packages.java.lang );
rwc1 = new Integer(1);
reportContext.setPersistentGlobalVariable("rwc", rwc1);
2 - Dans le binding du Crosstab il faut ajouter un data binding ayant l'expression suivante :

Code :
1
2
3
4
5
6
importPackage( Packages.java.lang );
rwctmp = reportContext.getPersistentGlobalVariable("rwc").intValue();
rwctmp = rwctmp + 1;
rwci = new Integer( rwctmp );
reportContext.setPersistentGlobalVariable("rwc", rwci);
rwctmp
appelez le dummy.

3 - Il faut ensuite ajouter un élément data invisible lié à dummy sur les lignes du crosstab, ainsi le compteur "rwc" sera incrémenté.

4 - Enfin ... Dans l'outline sélectionnez l'élément qui ce trouve dans :
Cross Tab -> Detail Area -> Detail -> Cell
Ajouter dans le highlights de Cell le test suivant :

Code :
1
2
rwch = reportContext.getPersistentGlobalVariable("rwc");
rwch%2;
Equals 0

Et choisissez le background que vous désirez.

Voilà ... dans le genre feature cachée à la noix ... ça sent le
ThierryLefort est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2008, 16h33   #4
Membre Expert
 
Inscription : avril 2008
Messages : 1 053
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 1 053
Points : 1 156
Points : 1 156
Par défaut Un peu d'amélioration

La nouvelle version de BIRT 2.3 ( M6 - RC0 ) Apporte un peu de bonus sur ce point.

Vérifier le script exemple proposé à cette adresse.

http://www.eclipse.org/birt/phoenix/...table2.3M6.php
Stefan C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/02/2009, 18h09   #5
Membre régulier
 
Inscription : novembre 2006
Messages : 226
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 226
Points : 94
Points : 94
Bonsoir,

Je resors un vieux post pour ceux qui seraient intéréssés.
Je viens d'être confrontés à ce problème et par hasard (et surtout grace a un ancien message de lazarel je crois) j'ai trouvé une solution beaucoup plus simple utilisant la bonne vieille méthode du compteur incrémental

Dans le initialize placer
Sur l'élément voulu du crosstab (detail, group...) placer ceci sur le OnCreate
Reste ensuite à utiliser la bonne vieille méthode des highlights
si i%2 equal to 0 alors bleu
si i%2 not equal to 0 alors blanc (facultatif si le fond de mon crostabb est deja blanc)

Bon maintenant compte tenu du nombre de crosstab deja en place, il me reste un peu de boulot pour les mettre a jour.

J'espère que cela pourra aider un peu.
scariou29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h53.


 
 
 
 
Partenaires

Hébergement Web