2014-10-05 2 views
0

Я пытаюсь включить интерактивные диаграммы в приложение GWT с помощью Google Visualization. Я не хочу подключаться к движку Google App. Я также хотел бы использовать API-интерфейсы GWT вместо встраивания javaScript в свой код. Я пытаюсь следовать примерам SimpleViz и HelloAjaxLoader в gwt-google-apis, но диаграмма не загружается. Я добавил jQuery загрузчик и визуализаторы в мой путь к классам и наследует в gwt.xml. В следующем коде появляется предупреждение «in onModuleLoad», но не «в запуске».Как использовать диаграмму Google Визуализации с GWT и AjaxLoader

Мой код:

public class SimpleViz implements EntryPoint { 
    private VerticalPanel container; 
    private ImagePieChart chart; 

public void onModuleLoad() { 
    Window.alert("In onModuleLoad"); 
    container = new VerticalPanel(); 
    RootPanel.get().add(container);  
    container.getElement().getStyle().setPropertyPx("margin", 10); 
    container.setSpacing(10); 
    container.add(new Label("Pie Chart Example")); 

    AjaxLoader.init();  
    AjaxLoader.loadApi("visualization", "1", new Runnable() { 

     public void run() { 
      Window.alert("In run"); 
      chart=new ImagePieChart(); 
      container.add(chart); 
      draw(); 
     } 
    }, null); 

} 


private void draw() { 
    // Prepare the data 
    DataTable dataTable = DataTable.create(); 
    dataTable.addColumn(ColumnType.STRING, "Task"); 
    dataTable.addColumn(ColumnType.NUMBER, "Hours per Day"); 
    dataTable.addRows(5); 
    dataTable.setValue(0, 0, "Work"); 
    dataTable.setValue(0, 1, 11); 
    dataTable.setValue(1, 0, "Sleep"); 
    dataTable.setValue(1, 1, 7); 
    dataTable.setValue(2, 0, "Watch TV"); 
    dataTable.setValue(2, 1, 3); 
    dataTable.setValue(3, 0, "Eat"); 
    dataTable.setValue(3, 1, 2); 
    dataTable.setValue(4, 0, "Commute"); 
    dataTable.setValue(4, 1, 1); 

    // Set options 
    ImagePieChart.Options options = ImagePieChart.Options.create(); 
    options.setBackgroundColor("#f0f0f0"); 
    options.setIs3D(false); 
    options.setTitle("So, how was your day?"); 

    // Draw the chart 
    chart.draw(dataTable, options); 
    } 

} 

В последующий вопрос, являются эти библиотеки текущих и хорошо поддерживается, или я должен искать другое решение?

ответ

0

Вот как я это делаю (и это работает).

В файле gwt.xml модуля добавьте следующую строку:

<inherits name="com.google.gwt.visualization.Visualization"/> 

Эта линия наследуется gwt-visualization.jar.

Затем в коде:

Runnable onLoadCallback = new Runnable() { 
    @Override 
    public void run() { 
     draw(); 
    } 
}; 
VisualizationUtils.loadVisualizationApi(onLoadCallback, CoreChart.PACKAGE); 

Вам не нужно AjaxLoader.

+0

спасибо. Использование VisualizationUtils работает, когда я подключен к Интернету. Есть ли способ использовать визуализацию БЕЗ подключения к веб-сайту Google? – Alicia

+0

См. Https://developers.google.com/chart/interactive/faq#offline и следующий вопрос в том же списке. –

+0

Еще раз спасибо. Понял. – Alicia

Смежные вопросы