wicketstuff-googlechartsを試してみる


後輩にwicketstuff-googlechartsの使い方を教えた時のサンプルコードがもったいないのであげておく。

pom.xmlにdependencyを追加

pom.xml
  <dependency>
    <groupId>org.wicketstuff</groupId>
    <artifactId>wicketstuff-googlecharts</artifactId>
    <version>6.12.0</version>
  </dependency>

HomePage.html

HomePage.html
  <img wicket:id="chart"></img>
  <button type="button" wicket:id="refresh">更新</button>

HomePage.java

HomePage.java
public class HomePage extends WebPage {

  public HomePage() {
    IChartData data = new AbstractChartData() {

      @Override
      public double[][] getData() {
        Random r = new Random();
        int n = r.nextInt(10);
        return new double[][] { { n, 10 - n } };
      }
    };

    ChartProvider provider = 
      new ChartProvider(new Dimension(250, 100), ChartType.PIE, data);
    provider.setPieLabels(new String[] { "a", "b" });

    final Chart chart = new Chart("chart", provider) {

      @Override
      protected void onInitialize() {
        super.onInitialize();
        setOutputMarkupId(true);
      }
    };
    add(chart);

    add(new AjaxLink<Void>("refresh") {

      @Override
      public void onClick(AjaxRequestTarget target) {
        chart.invalidate();
        target.add(chart);
      }
    });

  }
}

注)serialVersionUIDは省略している。

AbstractChartDataのオブジェクトでグラフに表示するデータを、ChartProviderのオブジェクトでグラフの設定(サイズや形式、ラベルなど)が設定される。

Chart#invalicate()メソッドは、Ajaxでの更新時にグラフの設定やデータを再読み込み(Google ChartsへのURLの再生成)をするために実行している。

実行結果

更新ボタン押すと、グラフが更新される。