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 16/01/2012, 11h55   #1
Membre confirmé
 
Inscription : mars 2007
Messages : 257
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 257
Points : 272
Points : 272
Par défaut Formattage conditionnel de valeur ?

Salut, j'ai un soucis de débutant : j'aimerai formatter une valeur de manière conditionnelle (pas le style mais la valeur).
Exemple j'ai des valeurs en octets.
Si c'est inférieur à 1000, je veux ma valeur du genre

560 o
Si c'est supérieur à 1000 et inférieur à 1 million
123.2 ko
et ainsi de suite (par exemple si j'ai des Go je vais juste afficher 2 chiffres après la virgule.
Alors mon problème c'est que j'ai bien vu les highlights, je peux changer les couleurs, mais pas la valeur.
J'ai vu les mapping, j'ai cru que ça m'aiderai mais il semble qu'on ne peut mettre qu'une valeur figée.
Et j'ai du mal à voir comment avec les formatters je peux faire un truc conditionnel.
Quelle est la bonne méthode ?
kpouer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2012, 16h15   #2
Membre confirmé
 
Homme
Consultant en Business Intelligence
Inscription : mai 2009
Messages : 186
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Consultant en Business Intelligence

Informations forums :
Inscription : mai 2009
Messages : 186
Points : 289
Points : 289
Salut,

Ton idée de passer par les highlights est bonne, on peut presque aller au bout en utilisant 'Apply style' et en créant 4 styles avec des formats numbers différents mais ça coince avec les divisions par 1024. Je ne pense pas qu'on puisse faire ça avec des CSS, mais si quelqun a la solution ce serait effectivement la meilleure option.

Donc je ne sais pas quelle est la meilleure méthode mais perso je le ferais au niveau du dataset, en créant un champs calculé de type String avec une expression effectuant le mapping.
On peut aussi faire ce mapping directement dans les cellules du rapport en utilisant les évènements. A titre d'exemple voici un script qui convertit dans une cellule "Dynamic text" la taille d'un fichier, à copier dans l'évènement "onRender" de la cellule du texte dynamique.

Code :
1
2
3
4
5
6
7
8
var nbOctets= this.text; //récupère la taille en octets
if (nbOctets<1024){
  this.text=nbOctets+"o";
}else if (nbOctets>=1024 && nbOctets<1048576 ){
   this.text=(nbOctets/1024).toFixed(1)+"Ko";
}else{
   this.text=(nbOctets/1048576).toFixed(2)+"Mo";
}
Pour être clean il faut l'externaliser dans une fonction javascript si il est utilisé à plusieurs endroits.
donino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2012, 18h19   #3
Membre confirmé
 
Inscription : mars 2007
Messages : 257
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 257
Points : 272
Points : 272
Merci je suis passé par une computed column du dataset, ça marche.
Je débute en birt, c'est pas simple au début.
Pour externaliser une fonction javascript je suis obligé de faire un fichier js séparé ? C'est pas possible d'avoir une zone globale ou je pourrai mettre mes fonctions embarquées dans mon rapport ?
kpouer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2012, 19h53   #4
Membre confirmé
 
Homme
Consultant en Business Intelligence
Inscription : mai 2009
Messages : 186
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Consultant en Business Intelligence

Informations forums :
Inscription : mai 2009
Messages : 186
Points : 289
Points : 289
On peut éventuellement définir des fonctions globales dans l'évènement "Initialize" du rapport, mais c'est pas top. Par exemple en définissant:

Code :
1
2
myScript1 = new Function("x", "y", "return (x + y)/2");
myScript2 = new Function("x", "y", "return (x * y)");
myScript1 et myScript2 peuvent maintenant être appelés depuis n'importe quel endroit du rapport, sauf depuis les dataset servant à remplir des listes de choix de paramètre.
donino 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 16h10.


 
 
 
 
Partenaires

Hébergement Web