1

这段代码(如下)可以毫无意外地在屏幕上显示 1..n LineCharts。我想知道它的效率如何。我VisualizationsUtils.loadVisualizationApi(onLoadCallback, LineChart.PACKAGE)每次都在打电话。必须以这种方式完成吗?

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);
                    }
                });
    }
}
4

2 回答 2

2

通过加载LineChart.PACKAGE,您只能使用一种类型的图表 ( LineChart)。由于您一次只能加载一个“包”,因此您会坚持这个决定。尝试这个:

VisualizationUtils.loadVisualizationApi(onLoadCallback, CoreChart.PACKAGE);

使用该CoreChart包,您可以加载任何属于CoreChart(Line、Bar、Pie、Area、Column 和 Scatter)的子项。您还可以加载任何数量/组合的图表。此外,您不需要loadVisualizationApi(...)每次都调用该方法,而只需在您第一次创建图表时调用。此后的每个人都将使用该库。

于 2011-11-18T01:42:07.853 回答
1

我认为加载 LineChart 包一次就足够了。您是否尝试在回调中运行循环?

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);
}
于 2011-11-18T09:42:56.680 回答