Vaadin中基于Container构建dChart
Building dChart based on Container in Vaadin
我有一个基于 SQLContainer
构建的 table。我也想基于 SQLContainer
构建图表。使用 VaadinChart
附加组件会很容易,但我不想为此付费,我正在寻找免费的东西。所以我安装了 dChart
基于容器的小部件构建图表,如下所示:
void refreshPieDChart(Container container){
Collection<?> itemIDS= container.getItemIds();
Map<String, Integer> countMap = new HashMap<String, Integer>();
//1
for (Object itemID : itemIDS)
{
Property property= container.getContainerProperty(itemID, "status");
String status = (String)property.getValue();
if (countMap.containsKey(status)) {
countMap.put(status, countMap.get(status) + 1);
} else {
countMap.put(status, 1);
}
}
DataSeries dataSeries = new DataSeries();
if (countMap == null || countMap.size() < 1) {
dataSeries.newSeries().add("No records", 1);
}else{
for (String key : countMap.keySet()) {
String legendRow = key + "\t" + countMap.get(key).toString();
dataSeries.newSeries().add(legendRow, countMap.get(key));
}
}
chart.setDataSeries(dataSeries).show();
}
不过耗时太长,例如:先为标有//1
300 - 1400 records : 500 - 1800 ms
这意味着用户需要等待2秒直到页面被重绘...
有没有比我实施的更快的方法从 Container
构建 dChart
?或者也许已经有其他免费的图表小部件实现了这一点?
编辑:
我做了更多测试,getContainerProperty(id,prop)
的所有调用都占用了 5/6 的处理时间:/还有其他方法吗?
看这里的答案:
我能够解决数以千计的 status
es。
我有一个基于 SQLContainer
构建的 table。我也想基于 SQLContainer
构建图表。使用 VaadinChart
附加组件会很容易,但我不想为此付费,我正在寻找免费的东西。所以我安装了 dChart
基于容器的小部件构建图表,如下所示:
void refreshPieDChart(Container container){
Collection<?> itemIDS= container.getItemIds();
Map<String, Integer> countMap = new HashMap<String, Integer>();
//1
for (Object itemID : itemIDS)
{
Property property= container.getContainerProperty(itemID, "status");
String status = (String)property.getValue();
if (countMap.containsKey(status)) {
countMap.put(status, countMap.get(status) + 1);
} else {
countMap.put(status, 1);
}
}
DataSeries dataSeries = new DataSeries();
if (countMap == null || countMap.size() < 1) {
dataSeries.newSeries().add("No records", 1);
}else{
for (String key : countMap.keySet()) {
String legendRow = key + "\t" + countMap.get(key).toString();
dataSeries.newSeries().add(legendRow, countMap.get(key));
}
}
chart.setDataSeries(dataSeries).show();
}
不过耗时太长,例如:先为标有//1
300 - 1400 records : 500 - 1800 ms
这意味着用户需要等待2秒直到页面被重绘...
有没有比我实施的更快的方法从 Container
构建 dChart
?或者也许已经有其他免费的图表小部件实现了这一点?
编辑:
我做了更多测试,getContainerProperty(id,prop)
的所有调用都占用了 5/6 的处理时间:/还有其他方法吗?
看这里的答案:
我能够解决数以千计的 status
es。