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 29/08/2011, 14h40   #1
Invité de passage
 
Homme
Inscription : août 2011
Messages : 4
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : août 2011
Messages : 4
Points : 0
Points : 0
Par défaut [birt 3.7] probleme chart

Bonjour,

Voila le contexte, suite a une migration birt 2.3 a 3.7, j'ai un probleme au niveau de l'affichage des graphiques, c'est a dire que les graphiques s'affiche bien en export mais pas en swt qui lui n'affiche que le squelette des graphes sans les données.

voila mon code :
Code :
1
2
3
4
5
6
 
ExtendedItemDesign eid = (ExtendedItemDesign) image.getGenerateBy();
            ExtendedItemHandle eih = (ExtendedItemHandle) eid.getHandle();
 
 Chart chart = (Chart) eih.getReportItem().getProperty(
                    "chart.instance");
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
 
 public ChartViewerSWT(final Chart chart, final Composite parent,
            final int style)
    {
        super( parent, style );
      try
        {
            idr = ChartEngine.instance(  ).getRenderer( "dv.SWT" );
        }
        catch ( ChartException pex )
        {
            LOGGER.debug("Error in ChartViewerSWT {}", pex);
        }
 
        //chart.createSampleRuntimeSeries();
 
        cm = chart;
          LOGGER.debug("end");
    }
 
    /**
     * The SWT paint callback
     */
    public void paintControl(final PaintEvent pe)
    {
        Rectangle d = this.getClientArea( );
        if ( bFirstPaint )
        {
            imgChart = new Image( this.getDisplay( ), d );
            gcImage = new GC( imgChart );
            idr.setProperty( IDeviceRenderer.GRAPHICS_CONTEXT, gcImage );
 
            bo = BoundsImpl.create( 0, 0, d.width, d.height );
            LOGGER.debug("d.width={}", d.width);
            LOGGER.debug("d.height={}", d.height);
            bo.scale( 72d / idr.getDisplayServer( ).getDpiResolution( ) );
        }
 
        Generator gr = Generator.instance();
        try
        {
            gcs = gr.build( idr.getDisplayServer( ), cm, bo, null, null, null );
            gr.render( idr, gcs );
            GC gc = pe.gc;
            gc.drawImage( imgChart, d.x, d.y );
            LOGGER.debug("d.x={}", d.x);
            LOGGER.debug("d.y={}", d.y);
        }
        catch (ChartException ce)
        {
            LOGGER.error(ce.getLocalizedMessage());
        }
        bFirstPaint = false;
    }
J'ai bien mon dataset rempli avec les données. Mais je ne vois pas pourquoi en swt il ne les affiches pas.

précision : C'est un application RCP.

Quelqu'un aurait-il une idée ?
Merci.
MFr3d est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/08/2011, 14h51   #2
BiM
Modératrice
 
Avatar de BiM
 
Femme
Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
Inscription : janvier 2005
Messages : 7 299
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 26
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

Informations forums :
Inscription : janvier 2005
Messages : 7 299
Points : 8 650
Points : 8 650
Bonjour,

Tu n'as aucune erreur ?
__________________
__~{@ BiM - Modératrice "Business Intelligence" @}~
Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
___________.~{@ Lapine crétine @}~
BiM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/08/2011, 14h54   #3
Invité de passage
 
Homme
Inscription : août 2011
Messages : 4
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : août 2011
Messages : 4
Points : 0
Points : 0
salut,

non je n'ai aucune erreur dans la console.
MFr3d est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/08/2011, 15h14   #4
Invité de passage
 
Homme
Inscription : août 2011
Messages : 4
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : août 2011
Messages : 4
Points : 0
Points : 0
Information de plus si sa peut vous aidez a voir qu'est ce qui ne va pas en décommentant la ligne.

Code :
1
2
 
chart.createSampleRuntimeSeries();
le graphe s'affiche bien ( mais évidement pas avec les données du dataset ).
MFr3d est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/08/2011, 15h31   #5
BiM
Modératrice
 
Avatar de BiM
 
Femme
Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
Inscription : janvier 2005
Messages : 7 299
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 26
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

Informations forums :
Inscription : janvier 2005
Messages : 7 299
Points : 8 650
Points : 8 650
Sachant que tu catches tes erreurs et tu les mets dans un logger, elles n'apparaissent pas forcément en console, elles peuvent apparaître dans un fichier par exemple (tout dépend comment tu as configuré ton logger).

D'autre part, tu donnes ton code de façon incomplète.

Tu nous montres un bout de code dont on ne sait pas d'où il sort et l'appel à ta classe de génération que tu es externe à BIRT donc on ne va pas deviner le code qu'il y a dedans avec notre boule de cristal, et c'est finalement ça qui nous intéresse...
__________________
__~{@ BiM - Modératrice "Business Intelligence" @}~
Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
___________.~{@ Lapine crétine @}~
BiM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/08/2011, 17h10   #6
Invité de passage
 
Homme
Inscription : août 2011
Messages : 4
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : août 2011
Messages : 4
Points : 0
Points : 0
le logger est configuré pour tout afficher dans la console, il n'y a donc pas d'exception pour nous.

Au niveau du code, je fais essayer d'être plus clair :
alors voilà j'ai un emitter SWT (héritant de org.eclipse.birt.report.engine.emitter.ContentEmitterAdapter).

Lorsqu'il y a une image je passe dans la fonction ci dessous où je récupère le chart afin de le transformer pour être visible dans un composite SWT sous forme d'image de la manière suivante.
Code :
1
2
3
4
5
6
 
//ici c'est dans l'emitter 
 ExtendedItemDesign eid = (ExtendedItemDesign) image.getGenerateBy();
            ExtendedItemHandle eih = (ExtendedItemHandle) eid.getHandle();
            Chart chart = (Chart) eih.getReportItem().getProperty(
                    "chart.instance");
Ensuite le chart est passé à la méthode suivante pour être traduit en SWT

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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
 
 
//le chart est envoyer à cette fonction qui le "traduit" en composite SWT
public ChartViewerSWT(final Chart chart, final Composite parent,
            final int style)
    {
        super( parent, style );
      try
        {
                idr = ChartEngine.instance(  ).getRenderer( "dv.SWT" );            
        }
        catch ( ChartException pex )
        {
            LOGGER.debug("Error in ChartViewerSWT {}", pex);
        }
 
 
        cm = chart;
        LOGGER.debug("end");
    }
 
    /**
     * The SWT paint callback
     */
    public void paintControl(final PaintEvent pe)
    {
        Rectangle d = this.getClientArea( );
        if ( bFirstPaint )
        {
            imgChart = new Image( this.getDisplay( ), d );
            gcImage = new GC( imgChart );
            idr.setProperty( IDeviceRenderer.GRAPHICS_CONTEXT, gcImage );
 
            bo = BoundsImpl.create( 0, 0, d.width, d.height );
            LOGGER.debug("d.width={}", d.width);
            LOGGER.debug("d.height={}", d.height);
            bo.scale( 72d / idr.getDisplayServer( ).getDpiResolution( ) );
        }
 
 
        Generator gr = Generator.instance();
        try
        {
                   gcs = gr.build( idr.getDisplayServer( ), cm, bo, null, null, null );
            gr.render( idr, gcs );
            GC gc = pe.gc;
            gc.drawImage( imgChart, d.x, d.y );
            LOGGER.debug("d.x={}", d.x);
            LOGGER.debug("d.y={}", d.y);
        }
        catch (ChartException ce)
        {
            LOGGER.error(ce.getLocalizedMessage());
        }
        bFirstPaint = false;
    }
Je ne suis pas l'auteur de ce code, il a été récupéré sur le net et ne posait aucun problème avec BIRT 2.3.2.

Or cela ne fonctionne plus en 3.7.
Nous avons étudié les examples fournit dans BIrt 3.7, notamment
org.eclipse.birt.chart.examples.api.viewer.SwtLiveChartViewer

Lorsque nous utilisons le chart créé par la méthode createLiveChart() nous avons aucun problème au niveau du display.

j'espère m'avoir fait compris.
je ne vois pas quels autres bouts de code vous serez utiles.
MFr3d 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 14h42.


 
 
 
 
Partenaires

Hébergement Web