SQLの窓

2013年11月22日


jQuery で Google Visualization DataTable Class をプラグイン化

ここまですれば、わりと誰でも扱えるかと思います。ただ順序が決まっていて、draw は最後でなくては動作しません。

できるだけ簡単にする為に、行を追加した場合内部にカレント行を保存しています。その為、汎用的な gvt_setRowCell メソッドを追加実装しています。

まだ、Google ドキュメントや、グラフの実装もあるので、このプラグイン方法がいいかはまだ解りませんが、一覧形式で取り出せるオブジェクトをテーブル化するのは簡単にできるようになるはずです。
<style>
#table_area .google-visualization-table-table {
	border-collapse: collapse;
}
.myHeader {
	color:#FFFFFF;
	background: #000000;
	padding: 7px;
	border: solid #303030 1px;
}
.myCell {
	padding: 7px;
	border: solid #303030 1px;
}
</style>

<script>
if ( window[window.location.hostname+'.loadjQuery'] !== true ) {
	window[window.location.hostname+'.loadjQuery'] = true;
	if ( !window.jQuery ) {
		document.write("<"+"script src=\"//ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js\"></"+"script>");
	}
	document.write("<"+"script src=\"http://www.google.com/jsapi\"></"+"script>");
}
</script>
<script>
google.load('visualization', '1', { packages: ['table'] });

$.fn.extend({
	gvt: function() {
		$(this).data("DataTable", new google.visualization.DataTable());
		return this;
	},
	gvt_addColumn: function(title){
		$(this).data("DataTable").addColumn('string', title);
		return this;
	},
	gvt_addRow: function(){
		$(this).data("CurRow", $(this).data("DataTable").addRow() );
		return this;
	},
	gvt_setCell: function(col, data){
		$(this).data("DataTable").setCell($(this).data("CurRow"), col, data+"" );
		return this;
	},
	gvt_setRowCell: function(row, col, data){
		$(this).data("DataTable").setCell(row, col, data+"" );
		return this;
	},
	gvt_draw: function(width){
		var visualization = new google.visualization.Table($(this)[0]);
		visualization.draw($(this).data("DataTable"), {
			cssClassNames: {
				tableCell: 'myCell',
				headerCell: 'myHeader'
			},
			width: width+"px"
		});
		return this;
	}
});

$(function(){

	$("#table_area")
	.gvt()
	.gvt_addColumn('プロパティ')
	.gvt_addColumn('内容');

	var row;
	for (var key in window.navigator) {
		$("#table_area")
		.gvt_addRow()
		.gvt_setCell(0,key)
		.gvt_setCell(1,window.navigator[key]);
	}

	$("#table_area").gvt_draw(600);

});

</script>
<div id="table_area"></div>
関連する記事

jQuery でとりあえず実装する Google Visualization DataTable Class ( 後でプラグイン化予定 )



posted by at 00:20 | jQuery | このブログの読者になる | 更新情報をチェックする