2011-11-17 5 views
1

이 코드 비트 (아래)는 아무런 문제없이 화면에 1..n LineCharts를 표시합니다. 내가 궁금해하는 점은 얼마나 효율적인지 궁금 하네. 매번 VisualizationsUtils.loadVisualizationApi(onLoadCallback, LineChart.PACKAGE)으로 전화를 걸고 있습니다. 이런 식으로해야합니까?여러 그래프 표시 (GWT 시각화)

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

답변

2

LineChart.PACKAGE를로드하여, 당신은 단지 차트 (LineChart)의 하나의 유형을 허용하고 있습니다. 한 번에 하나의 "패키지"만로드 할 수 있으므로 이러한 결정에 매달릴 것입니다. 이 시도 :

VisualizationUtils.loadVisualizationApi(onLoadCallback, CoreChart.PACKAGE); 

, 당신은 CoreChart (선, 막대, 파이, 지역, 열 및 분산)의 자식 아무것도로드 할 수 CoreChart 패키지를 사용. 차트의 숫자/조합을로드 할 수도 있습니다. 또한 매번 loadVisualizationApi(...) 메소드를 호출 할 필요는 없지만 처음으로 차트를 만들 때만 호출됩니다. 그 이후에 모두 그 라이브러리를 사용할 것입니다.

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); 
} 
+0

+1 어떻게 대답을 구현할 수 있는지에 대한 코드 예제. –