SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

japan.internet.com翻訳記事

Google Visualization APIを使ってWebアプリケーションにグラフィカルデータを表示する

Google Visualization APIの基本事項から高度な内容まで

イベント処理

 ビジュアライゼーションは、Webページの他の部分と情報を交換できなければなりません。こうした機能は、共通のデータに基づく複数のビジュアライゼーションを同じWebページ上で用いるようなダッシュボードを作成する場合に特に重要です。各ビジュアライゼーションは、Webページ上のどこか別の場所、あるいは他のビジュアライゼーションで起こった変化に反応する必要があるからです。

 こうしたケースに対応するため、Google Visualization APIにはイベントの起動と応答に関する関数が用意されています。ビジュアライゼーションは、google.visualization.events.trigger()関数を使ってイベントを発生させることができます。この関数は次の3つのパラメータを取ります。

  • イベントのソース(通常はビジュアライゼーション自身)
  • イベントの名前を表す文字列
  • イベントの詳細情報を表すオブジェクト(キーと値のペアで表現)

 ビジュアライゼーションの利用者は、google.visualization.events.addListener()関数を使ってイベントを監視できます。この関数も次の3つのパラメータを取ります。

  • 監視の対象となるビジュアライゼーション
  • 関心のあるイベントの名前
  • イベントを処理するコールバック関数(イベントの詳細情報はパラメータとしてこの関数に渡される)

selectイベント

 特殊なケースとしてselectイベントがあります。ビジュアライゼーションは、このイベントを使って、基になるDataTableの特定の要素がユーザーによって選択されたことを他のビジュアライゼーションに通知し、その選択操作に対して反応するように指示します。selectイベントを処理するビジュアライゼーションでは、次のことを行う必要があります。

  • DataTableの特定のセル、行、列に対応するアイテムがユーザーによって選択された際の(select名を持ち、詳細情報を持たない)イベントの起動。
  • 選択されているアイテムの配列を返すgetSelection()メソッドの公開。選択されたアイテムは、データ内の選択対象セルを参照するrowまたはcolumnプロパティ(あるいはその両方)を持つオブジェクトでなければなりません。行全体または列全体が選択された場合、rowプロパティやcolumnプロパティはnullのままで構いません。
  • 当該ビジュアライゼーションの外側で発生した選択に反応する場合はsetSelection()メソッドの公開。このメソッドはオブジェクトのリストを受け取り、その形式はgetSelection()が返すものと同じです。

 リスト5は、先ほどのツリーマップビジュアライゼーションを拡張して、selectイベントを発生させるようにしたものです。

リスト5 ツリーマップビジュアライゼーションでのselectイベントの処理
ns.TreeMap = function(container) {
  this.container = container;
  this.selectedRow = null;
};

ns.TreeMap.prototype.getSelection = function() {
  return [{row: this.selectedRow}];
}

ns.TreeMap.prototype.draw = function(data, options) {
  // ... omissis ...

  // js-treemap fires onBoxClick whenever a user clicks on
  // particular node in the treemap.
  // The handler identifies the corresponding row in the
  // DataTable and fires a select event.
  map.onBoxClick = function() {
    var name = map.getSelected().node.name;
    for (var i=0; i < data.getNumberOfRows(); i++) {
      if (data.getValue(i, 0) == name) {
        self.selectedRow = i;
        google.visualization.events.trigger(self, 'select', {});
        break;
      }
    }
  };
};

 また、次のコードをサンプルWebページに追加することで、ツリーマップと組織図を連動させることができます。

google.visualization.events.addListener(
  treemap, 'select', function() {
    orgchart.setSelection(treemap.getSelection());
});

 これにより、ツリーマップのノードをクリックすると、組織図の該当するエントリが強調表示されるようになります。

次のページ
外部ソースからのデータ読み込み

この記事は参考になりましたか?

japan.internet.com翻訳記事連載記事一覧

もっと読む

この記事の著者

japan.internet.com(ジャパンインターネットコム)

japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.comEarthWeb.com からの最新記事を日本語に翻訳して掲載するとともに、日本独自のネットビジネス関連記事やレポートを配信。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

Riccardo Govoni(Riccardo Govoni)

2003年からJ2EE開発者としてイタリアの金融サービス会社に勤務。ソフトウェアアーキテクトとして従来の銀行システムのWebフロントエンドの設計に従事。物理学修士。SCJP(Sun Certified Java Programmer)資格を持つ。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/3660 2009/03/26 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー