外部HTMLファイル内のテーブルデータをJSONデータに変換してAngularJSで取り込み、Googleチャートでグラフを作成する方法です。
1)外部HTMLファイル内のテーブルデータの仕様
下記のテーブルデータを基にグラフ化します。
(外部HTMLファイルのテーブルデータ sample-table.html)
<table id=”sample1″ border=1>
<caption>サンプルテーブル</caption>
<tr><th>サイズ</th><th>商品A</th><th>商品B</th></tr>
<tr><td>~15</td><td>4512</td><td>4428</td></tr>
<tr><td>~20</td><td>3994</td><td>3803</td></tr>
<tr><td>~25</td><td>3616</td><td>3414</td></tr>
<tr><td>~30</td><td>3228</td><td>3021</td></tr>
<tr><td>~35</td><td>3909</td><td>4445</td></tr>
</table>
2)外部HTMLファイル内のテーブルデータをJSONに変換
下記記事参照
PHPでHTMLテーブルをJSONに変換
上記記事のツールを使って下記PHPスクリプトを作成します。
(table.php)
<?php
include_once ‘src/HTMLTable2JSON.php’;
$helper = new HTMLTable2JSON();
echo $helper->tableToJSON(‘http://www.example.com/wp/wp-content/uploads/table/sample-table.html’,FALSE,”,NULL,NULL,FALSE,FALSE,TRUE,FALSE,FALSE,NULL)
;
?>
3)AngularJSスクリプト作成
ここでは、WordPressのサイト全体でAngularJSが使用できる状態になっていると仮定しています。
AngularJSをヘッダーでインクルードして利用できるようにする手順は下記参照。
ブートストラップ3を使って作成したナビゲーションメニューをAngularJSを使う形に変更する方法
(gglchrt0827.js)
google.load('visualization', '1', { packages: ['corechart'] }); google.setOnLoadCallback(function() { angular.bootstrap(document.body, ['googleMapApp']); }); var mymodule = angular.module('googleMapApp', []); mymodule.controller('MyCtrl0827', ['$scope', '$http', function($scope, $http) { $http({ method: 'get', url: 'http://www.example.com/wp/wp-content/themes/ang/tbl-json/table.php' }).success(function(data) { var options = { title: 'Company Performance' }; var data1 = new google.visualization.DataTable(); data1.addColumn('string', 'サイズ'); data1.addColumn('number', '商品A'); data1.addColumn('number', '商品B'); for(i = 0 ; i < data.length;i++) { data1.addRow([ data[i]["サイズ"], parseInt(data[i]["商品A"]),parseInt( data[i]["商品B"]) ]); } var chart = new google.visualization.LineChart(document.getElementById('chart_div0827')); chart.draw(data1, options); }); } ]);
4)WordPress投稿本文
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type='text/javascript' src='http://www.example.com/wp/wp-content/themes/ang/js/gglchrt0827.js'></script>
<div ng-controller="MyCtrl0827">
<div id="chart_div0827"></div>
</div>
実際にWordPress上に作成したデモはこちら。
関連記事の目次