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 Actualité déjà publiée
 
Outils de la discussion
Publicité
'
Vieux 25/02/2011, 16h01   #21
Membre Expert
 
Avatar de lazarel
 
Homme
Consultant informatique
Inscription : mai 2007
Messages : 893
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 30
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Consultant informatique
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : mai 2007
Messages : 893
Points : 1 360
Points : 1 360
Comment éditer le label des abscisses/ordonnées d'un graphique ?

Mode dynamique

Dans le rptdesign au niveau du script du graphique dans la méthode beforeGeneration.
Code java :
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
 
importPackage( Packages.org.eclipse.birt.chart.model.attribute.impl );
importPackage( Packages.org.eclipse.birt.chart.model.data.impl );
/**
 * Called before generation of chart model to GeneratedChartState.
 * 
 * @param chart
 *            Chart
 * @param icsc
 *            IChartScriptContext
 */
 
function beforeGeneration( chart, icsc )
{
	//xAxis
	xAxis = chart.getBaseAxes()[0];
	//edit xLabel
	var xLabel = "xLabel";
	xAxis.getTitle().getCaption().setValue(xLabel);
 
	//yAxis
	yAxis = chart.getOrthogonalAxes( xAxis, true)[0];
	//edit yLabel
	var yLabel = "yLabel";
	yAxis.getTitle().getCaption().setValue(yLabel);
}
lazarel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2011, 16h01   #22
Membre Expert
 
Avatar de lazarel
 
Homme
Consultant informatique
Inscription : mai 2007
Messages : 893
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 30
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Consultant informatique
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : mai 2007
Messages : 893
Points : 1 360
Points : 1 360
Comment cacher/montrer la légende d'un graphique ?

Mode dynamique

Dans le rptdesign au niveau du script du graphique dans la méthode beforeGeneration.
Code java :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
importPackage( Packages.org.eclipse.birt.chart.model.attribute.impl );
importPackage( Packages.org.eclipse.birt.chart.model.data.impl );
/**
 * Called before generation of chart model to GeneratedChartState.
 * 
 * @param chart
 *            Chart
 * @param icsc
 *            IChartScriptContext
 */
 
function beforeGeneration( chart, icsc )
{
	var showLegend = true;
 
	if (showLegend!=null && showLegend==true){
		//show
		chart.getLegend().setVisible(true);
	}else{
		//hide
		chart.getLegend().setVisible(false);
	}
}
lazarel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2011, 16h01   #23
Membre Expert
 
Avatar de lazarel
 
Homme
Consultant informatique
Inscription : mai 2007
Messages : 893
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 30
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Consultant informatique
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : mai 2007
Messages : 893
Points : 1 360
Points : 1 360
Comment appliquer un pattern sur les abscisses de type Date dans un graphique ?

Mode dynamique

Dans le rptdesign au niveau du script du graphique dans la méthode beforeGeneration.
Code java :
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
 
importPackage( Packages.org.eclipse.birt.chart.model.attribute.impl );
importPackage( Packages.org.eclipse.birt.chart.model.data.impl );
/**
 * Called before generation of chart model to GeneratedChartState.
 * 
 * @param chart
 *            Chart
 * @param icsc
 *            IChartScriptContext
 */
 
function beforeGeneration( chart, icsc )
{
	//xAxis
	xAxis = chart.getBaseAxes()[0];
 
	var myPattern = "";
 
	//months
	myPattern = "MM/yyyy";
	//quarters
	myPattern = "Q/yyyy";
	//years
	myPattern = "yyyy";
 
	xAxis.setFormatSpecifier(JavaDateFormatSpecifierImpl.create(myPattern));
}
lazarel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2011, 16h01   #24
Membre Expert
 
Avatar de lazarel
 
Homme
Consultant informatique
Inscription : mai 2007
Messages : 893
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 30
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Consultant informatique
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : mai 2007
Messages : 893
Points : 1 360
Points : 1 360
Comment définir l'unité de regroupement sur les abscisses de type Date dans un graphique ?

Mode dynamique

Dans le rptdesign à la racine au niveau du script beforeFactory.
Code java :
1
2
3
4
5
6
7
8
9
10
11
 
var myChart = this.getReportElement("myChart");
 
//months
myChart.getCategory().getGrouping().setGroupUnit("Months");
//quarters
myChart.getCategory().getGrouping().setGroupUnit("Quarters");
//years
myChart.getCategory().getGrouping().setGroupUnit("Years");
//days
myChart.getCategory().getGrouping().setGroupUnit("Days");
Attention le graphique doit avoir comme nom myChart au niveau des propriétés générales.
lazarel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2011, 16h29   #25
Membre Expert
 
Avatar de lazarel
 
Homme
Consultant informatique
Inscription : mai 2007
Messages : 893
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 30
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Consultant informatique
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : mai 2007
Messages : 893
Points : 1 360
Points : 1 360
Comment définir une palette de couleur dynamique dans un graphique?

Objectif: Appliquer un code couleur sous forme d'Hexa à une label dans un graphique.

Je dispose d'un DataSet qui me renvoie deux colonnes avec le code couleur et le label associé. Dans mon graphique je souhaite appliquer une couleur en fonction de mon abscisse par exemple.

Etape n°1: Extraire cette donnée dans une variable persistante afin que celle soit accessible depuis mon graphique.

Pour cela au niveau de mon Dataset:

beforeOpen
Code Java :
mCode = new java.util.HashMap();

onFetch
Code Java :
1
2
3
var label = row.colorlabel;
var code = row.colorcode;
mCode.put(label.toLowerCase(),code);

afterClose
Code Java :
reportContext.setPersistentGlobalVariable("mCode", mCode);

Attention, si le DataSet n'est pas utilisé dans le rapport il ne sera pas joué et donc la Map sera vide, ne oubliez pas

Etape n°2: Appliquer le code couleur à une barre d'un graphique.

Pour le nuage de point.
Code Java :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
/**
 * Called before drawing each datapoint graphical representation or marker.
 * 
 * @param dph
 *            DataPointHints
 * @param fill
 *            Fill
 * @param icsc
 *            IChartScriptContext
 */
 
function beforeDrawDataPoint( dph, fill, icsc )
{
	Hex2RGB = icsc.getExternalContext().getScriptable().getPersistentGlobalVariable("Hex2RGB");
	mColor =  icsc.getExternalContext().getScriptable().getPersistentGlobalVariable("mCode");
	value = dph.getBaseDisplayValue().toLowerCase();
	if (mColor!=null && mColor.containsKey(value)){
		rgb = Hex2RGB((String)(mColor.get(value)));
		fill.set(rgb[0],rgb[1],rgb[2]);
	}else{
		fill.set(170,170,170);
	}
}

Pour la légende
Code Java :
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
 
/**
 * Called before drawing the legend item.
 * 
 * @param lerh
 * 			  LegendEntryRenderingHints
 * @param bounds
 * 			  Bounds
 * @param icsc
 * 			  IChartScriptContext
 * @since Version 2.2.0
 */
 
function beforeDrawLegendItem( lerh, bounds, icsc )
{
	Hex2RGB = icsc.getExternalContext().getScriptable().getPersistentGlobalVariable("Hex2RGB");
	mColor = icsc.getExternalContext().getScriptable().getPersistentGlobalVariable("mCode");
 
	value = lerh.getLabel().getCaption().getValue().toLowerCase();
	if (mColor!=null && mColor.containsKey(value)){
		rgb = Hex2RGB((String)(mColor.get(value)));
		lerh.getFill().set(rgb[0],rgb[1],rgb[2]);
	}
	else{
		lerh.getFill().set(170,170,170);
	}
}

Hex2RGB est fonction javascript définit dans la méthode beforeFactory.
Code Java :
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
function Hex2RGB(val){
 
	var tab = new Array();
	val = val.toUpperCase();
 
	for (k=1;k<7;k++) {
		temp = val.charAt(k);
		if ( temp == 'A' )  {
			tab[k-1] = 10;
		}else if ( temp == 'B' )  {
			tab[k-1] = 11;
		}else if ( temp == 'C' )  {
			tab[k-1] = 12;
		}else if ( temp == 'D' )  {
			tab[k-1] = 13;
		}else if ( temp == 'E' )  {
			tab[k-1] = 14;
		}else if ( temp == 'F' )  {
			tab[k-1] = 15;
		}else{
			tab[k-1] = parseInt(temp);
		}
	}
 
	var r = ((tab[0]* 16) + tab[1]);
	var g = ((tab[2]* 16) + tab[3]);
	var b = ((tab[4]* 16) + tab[5]);
 
	var rgb = [r,g,b];
 
	return rgb;
}
reportContext.setPersistentGlobalVariable("Hex2RGB", Hex2RGB);
lazarel est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Actualité déjà publiée
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h32.


 
 
 
 
Partenaires

Hébergement Web