/ / Render Google Chart in GWT 2.5 benutzerdefinierte Zelle (Ich habe UiRenderer verwendet) - gwt, Zelle, Google-Visualisierung, gwt-celltable

Render Google Chart in GWT 2.5 benutzerdefinierte Zelle (ich UiRenderer verwendet) - gwt, Zelle, Google-Visualisierung, gwt-celltable

Ich benutze GWT 2.5 RC1 und GAE 1.7.2. Ich habe eine benutzerdefinierte Zelle mit UiRenderer erstellt Rendern von HTML für Zellen.
Ich möchte ein Diagramm mit Google Chart Tools API für GWT rendern Erste Schritte Verwenden der Google Chart Tools mit GWT
Unten ist ein Ausschnitt der Rendermethode, die nicht funktioniert.

Weiß jemand, wie man ein Google-Diagramm in einer benutzerdefinierten Zelle rendert?

Ich würde es begrüßen, wenn er / sie mir eine Wegbeschreibung oder einen Beispielcode geben würde. Danke im Voraus.

    @Override
public void render(com.google.gwt.cell.client.Cell.Context context, Value value, final SafeHtmlBuilder sb) {
final HTMLPanel test = new HTMLPanel("");
Runnable onLoadCallback = new Runnable() {
public void run() {
//Panel panel = RootPanel.get();

// Create a pie chart visualization.
PieChart pie = new PieChart(createTable(), createOptions());

pie.addSelectHandler(GoogleCharts.createSelectHandler(pie));
test.add(pie);
}
};
// Load the visualization api, passing the onLoadCallback to be called
// when loading is done.
VisualizationUtils.loadVisualizationApi(onLoadCallback, PieChart.PACKAGE);

sb.appendHtmlConstant(test.getElement().getInnerHTML());
renderer.render(sb);
}

Antworten:

0 für die Antwort № 1

Es sieht so aus als hättest du eine Race Condition. Wenn Sie sb.appendHTMLConstant aufrufen, ist das Testelement wahrscheinlich leer, weil onLoadCallback noch nicht ausgelöst wurde. Wenn Sie die letzten beiden Zeilen an das Ende des Callbacks verschieben, wird die Race Condition entfernt.

@Override
public void render(com.google.gwt.cell.client.Cell.Context context, Value value, final SafeHtmlBuilder sb) {
final HTMLPanel test = new HTMLPanel("");

Runnable onLoadCallback = new Runnable() {
@Override
public void run() {
// Create a pie chart visualization.
PieChart pie = new PieChart(createTable(), createOptions());
pie.addSelectHandler(GoogleCharts.createSelectHandler(pie));
test.add(pie);

sb.appendHtmlConstant(test.getElement().getInnerHTML());
renderer.render(sb);
}
};

// Load the visualization api, passing the onLoadCallback to be called
// when loading is done.
VisualizationUtils.loadVisualizationApi(onLoadCallback, PieChart.PACKAGE);
}