1

このコード(以下)は、1..nLineChartsを問題なく画面に表示するために機能します。私が疑問に思っているのは、それがどれほど効率的かということです。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、1つのタイプのグラフ(LineChart)のみが許可されます。一度にロードできる「パッケージ」は1つだけなので、その決定に固執します。これを試して:

VisualizationUtils.loadVisualizationApi(onLoadCallback, CoreChart.PACKAGE);

パッケージを使用すると、 (Line、Bar、Pie、Area、Column、Scatter)CoreChartの子であるものをすべてロードできます。CoreChartチャートの任意の数/組み合わせをロードすることもできます。さらに、毎回メソッドを呼び出す必要はありませんがloadVisualizationApi(...)、チャートを作成するのは初めてです。その後、全員がそのライブラリを使用します。

于 2011-11-18T01:42:07.853 に答える
1

LineChartパッケージを1回ロードするだけで十分だと思います。コールバックでループを実行してみましたか?

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 に答える