2016-06-19 10 views
0

Ich habe ein Vaadin Kreisdiagramm mit folgendem Code erstellt.Vaadin Charts: Kreisdiagramm wird nicht dynamisch aktualisiert

Chart chart = new Chart(ChartType.PIE); 
DataSeries dataSeries = new DataSeries("Logins"); 
chart.getConfiguration().setSeries(dataSeries); 

Ich muss mein Diagramm dynamisch aktualisieren. Ich habe versucht zu folgen (dieser Code wird ausgeführt, wenn neue Daten verfügbar sind).

Hinzufügen neuer Artikel:

dataSeries.add(new DataSeriesItem("New item", value), true, false); 

Aktualisierung bestehender Artikel:

DataSeriesItem dataSeriesItem = dataSeries.get(0); 
dataSeriesItem.setY(newValue); 
dataSeries.update(dataSeriesItem); 

Aber keiner der oben gearbeitet.

Die einzige Lösung, die ich finden konnte, ist das Löschen des Diagramms (chart.clear()), erneutes Auffüllen der Datenreihen und erneutes Zeichnen des Diagramms (chart.drawChart()).

Diese Methode ist nicht optimal, da sie das Diagramm neu zeichnet und auch die Auswahl im Diagramm verloren geht.

Unterstützt Kreisdiagramm die dynamische Aktualisierung? Kann jemand vorschlagen, das zu beheben?

Antwort

0

Versuchen Sie, chart.getConfiguration().addSeries(dataSeries) vor dem Aktualisieren von Elementen aufzurufen. Wenn das nicht funktioniert, sollten Sie Ihr Diagramm erneut zeichnen.

0

Ich hatte das gleiche Problem und reparierte es mit chart.drawChart() nach Aktualisierung der Datenreihe in Konfigurationen (chart.getConfiguration.setSeries(newSeries)). In meinem Fall (vaadin Version 7.6.3) war chart.clear() nicht erforderlich.

Es gibt andere kompliziertere Wege wie Vaadin-Push-Plugin, die ich nicht für meinen Fall notwendig fand.

0

Ich weiß, dass diese Frage alt ist, aber ich werde teilen, wie ich dieses Problem Chart Pie in DChart 1.7.0 gelöst habe.

DataSeries dataSeries = new DataSeries(); 

dataSeries.newSeries(); 
dataSeries.add("Food", 500); 
dataSeries.add("Clothes", 1000); 

chart.setDataSeries(dataSeries); 
chart.show(); //this will update the chart in the browser;