IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

BIRT Discussion :

[birt 3.7] probleme chart


Sujet :

BIRT

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Août 2011
    Messages : 4
    Points : 1
    Points
    1
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  2. #2
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    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 796
    Points : 10 765
    Points
    10 765
    Par défaut
    Bonjour,

    Tu n'as aucune erreur ?

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Août 2011
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    salut,

    non je n'ai aucune erreur dans la console.

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme

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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    chart.createSampleRuntimeSeries();
    le graphe s'affiche bien ( mais évidement pas avec les données du dataset ).

  5. #5
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    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 796
    Points : 10 765
    Points
    10 765
    Par défaut
    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...

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Août 2011
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

Discussions similaires

  1. [JfreeChart]Probleme chart ne s'affiche pas
    Par luffy2mars dans le forum 2D
    Réponses: 1
    Dernier message: 15/07/2009, 11h21
  2. Birt chart script JavaScript interactivité
    Par medbass dans le forum BIRT
    Réponses: 6
    Dernier message: 26/07/2006, 12h32
  3. Birt Tomcat Viewer Charts
    Par medbass dans le forum BIRT
    Réponses: 1
    Dernier message: 19/07/2006, 13h33
  4. Birt Charts : Pie Chart , Interactivité
    Par medbass dans le forum BIRT
    Réponses: 2
    Dernier message: 13/07/2006, 13h51
  5. Réponses: 1
    Dernier message: 31/03/2006, 08h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo