2011-11-17 2 views
1

Ce bit de code (ci-dessous) permet d'afficher 1..n LineCharts sur l'écran sans incident. Ce que je me demande, c'est à quel point c'est efficace. J'appelle le VisualizationsUtils.loadVisualizationApi(onLoadCallback, LineChart.PACKAGE) à chaque fois. Faut-il le faire de cette façon?Affichage de plusieurs graphiques avec des visualisations GWT

public void getData(List<GraphWrapper> graphWrapperList) { 
    for (GraphWrapper graphWrapper : graphWrapperList) { 
     populateResources.populateResourcesService(graphWrapper.getSeriesWrapperList(), 
       new AsyncCallback<GraphWrapper>() { 
        public void onFailure(Throwable caught) { 
         displayDialogBox("*** An Error Occurred ***", caught.toString()); 
        } 

        public void onSuccess(final GraphWrapper response) { 
         Runnable onLoadCallback = new Runnable() { 
          private Widget chart; 

          public void run() { 
           this.chart = new LineChart(createTable(response), createOptions(response)); 
           graphPanel.add(this.chart); 
          } 
         }; 
         VisualizationUtils.loadVisualizationApi(onLoadCallback, LineChart.PACKAGE); 
        } 
       }); 
    } 
} 

Répondre

2

En chargeant le LineChart.PACKAGE, vous êtes seulement autorisé un seul type de graphique (LineChart). Puisque vous ne pouvez charger qu'un seul "paquet" à la fois, vous êtes bloqué avec cette décision. Essayez ceci:

VisualizationUtils.loadVisualizationApi(onLoadCallback, CoreChart.PACKAGE); 

Utilisation du package CoreChart, vous pouvez charger tout ce qui est un enfant de CoreChart (ligne, Bar, Pie, région, Colonne et Scatter). Vous pouvez également charger n'importe quel nombre/combinaison de graphiques. De plus, vous n'avez pas besoin d'appeler la méthode loadVisualizationApi(...) à chaque fois, mais seulement la toute première fois que vous souhaitez créer un graphique. Chacun utilisera ensuite cette bibliothèque.

1

Je pense que charger le paquet LineChart une fois devrait suffire. Avez-vous essayé d'exécuter la boucle dans le rappel?

public void getData(List<GraphWrapper> graphWrapperList) { 
Runnable onLoadCallback = new Runnable() { 
    public void run() { 
      for (GraphWrapper graphWrapper : graphWrapperList) { 
       populateResources.populateResourcesService(graphWrapper.getSeriesWrapperList(), 
       new AsyncCallback<GraphWrapper>() { 
         public void onFailure(Throwable caught) { 
          displayDialogBox("*** An Error Occurred ***", caught.toString()); 
         } 
         public void onSuccess(final GraphWrapper response) { 
          private Widget chart; 
          this.chart = new LineChart(createTable(response), createOptions(response)); 
          graphPanel.add(this.chart);     
         } 
       }); 
      } 
     } 
    }; 
VisualizationUtils.loadVisualizationApi(onLoadCallback, LineChart.PACKAGE); 
} 
+0

+1 pour l'exemple de code de la façon dont la réponse pourrait être implémentée. –

Questions connexes