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 的处理时间:/还有其他方法吗?

看这里的答案:

我能够解决数以千计的 statuses。