DEVELOPERS BLOGデベロッパーズブログ

  1. HOME > 
  2. 加藤 正人のデベロッパーズブログ > 
  3. Google Chart へのアクセスをヘルパーで実装してみる【その1】

加藤 正人のデベロッパーズブログ

加藤 正人

氏名
加藤 正人
役職
多分SE
血液型
秘密
出没
美味しいもののあるところ
特色
タヒチ大好き。ちょいメタボ。

加藤 正人

2014/09/16

Google Chart へのアクセスをヘルパーで実装してみる【その1】

 

先日仕事で Google Charts を利用する機会があった。

この機能を使うと、グラフやチャートを簡単に表示できとても便利だ。今後も使う機会は多そうなので、CakePHP のプラグイン化しておくと便利そうなので、作ってみた。

使う場合はコントローラで $helpers に GoogleCharts を指定しておく必要がある。

チャートを表示する際には、まず GoogleChartsHelper::chartStart() を呼び出し、チャート環境を初期化したあと各チャート機能を利用し、最後に GoogleChartsHelper::chartEnd() を呼び出すことで必要なコードを出力する。

Google Charts は表示するチャートやグラフごとにパッケージが分離されているので、表示する対象に応じたパッケージをコーディング者が明示する必要があるが、このヘルパーでは実際に描画する対象に応じて自動的に必要なパッケージを判定し事前に呼び出すようにコードを生成する

1つのページ表示に際し、chartStart() あるいは/および chartEnd() を2回以上呼び出してはならない。2回以上呼び出した場合の動作は規定されていない。

また、各チャートの呼び出しは diff チャート以外はマジックメソッド呼び出しで実装される。マジックメソッド呼び出しで与えられたメソッドが実在するかどうかは、GoogleChartHelper クラスのプライベート変数 $_chart_info に保持されている情報で判定する。この変数には、チャート名とそれが含まれる Google Chart パッケージ名、およびその JavaScript コンストラクタ名が格納されている。呼び出そうとしているメソッドがマジックメソッドとして無効な場合は、Exception クラスの例外が throw され処理は中断される。

GoogleChartsHelper::chartStart() を呼び出した後、各チャートを呼び出すと当該チャートに必要な情報 (Google Chart のパッケージ名や当該チャートのコンストラクタ名) がクラス内部の変数に蓄積され、GoogleChartsHelper::chartEnd() を呼び出した時点でそれらが必要な順序で 呼び出されるよう Script  タグを生成する。Script タグの生成には HtmlHelper::scriptBlock() を使用する。

各チャートメソッドの詳細は次回に。

関連タグ: CakePHP2  PHP5.3 

関連エントリー

CakePHP のレンダリング結果を保存したい

CakePHP 2.x の Cookie と js.cookie.js

時刻入力用 jQuery Plugin TimePicki の不具合調整

CakePHP プラグインで HTTPS 判定

作業用モデルビヘイビア

CakePHP のバリデーション時に状況に応じてバリデーションルールを変更する

CsvLoader ビヘイビアを使って CSV を一発でロードする Cake Shell

無名関数からの外部変数参照について

CakePHP の Security コンポーネント、ベーシック認証、CGI

形態素解析システム MeCab (めかぶ) を CakePHP から利用する

Google APIs Client Library を CakePHP から利用する

分数電卓を作ってみる・その2

分数電卓を作ってみる・その1

CsvLoaderBhavior - CSV データを CakePHP で扱うための一手法・その2

 CsvLoaderBhavior - CSV データを CakePHP で扱うための一手法

CakePHP でストアドファンクション

テキストフィールドを CSV として処理する CakePHP ビヘイビア・補足

テキストフィールドを CSV として処理する CakePHP ビヘイビア・その2

テキストフィールドを CSV として処理する CakePHP ビヘイビア・その1

Google Maps で郵便番号⇒住所変換・その2

Google Maps で郵便番号⇒住所変換

テキストを自動整形する簡易 CakePHP ヘルパー

Google Chart へのアクセスをヘルパーで実装してみる【その2】

Google reCAPTCHA を使いやすくする

駅データ.jp のデータを CakePHP から使う

CakePHP の小ネタ

UploadPack を Exif Orientation 対応にする

作業用テーブル処理を再利用可能なツール化してみる・その1

クリックイベントが2回実行される?!

CakePHP のフォームで required・その2

CakePHP の Paginator の sort() で昇順ソート時に NULL 値を最後にしたい

CakePHP のフォームで required

UploadPack のヘルパーメソッド名称が変わっていた

CakePHP 2.x の PaginatorHelper::sort の不思議

CakePHP で四苦八苦 - あるフィールドにだけ値が書き込まれない

UploadPack で四苦Hack その後

CakePHP の小ネタ

CakePHP v2 のエラー処理

IE10 と CKEditor

2013/03/23
IE10 と CKEditor

UploadPack で四苦Hack・その2

Paginator で見かけの URL を使用する方法

「Notes プラグインが見つかりません」

PHP 5.3 の「無名関数」

CakePHP v2 で HTTP エラー画面をカスタマイズする

UploadPack で四苦Hack

PHP 5.4 と CakePHP 2.x