DataTable Control: Showing, Hiding, and Reordering Columns(その1)

このExampleは、いくつかの要素が絡み合っている。
YUIのExampleは、大きく

  • 列をDrag and Dropで移動する。
  • ダイアログボックスを表示して、列の表示・非表示を選択する。

の2つの技術要素でできあがっている。

このうちの前者が簡単に実装できるのに対して、後者はいささか煩雑である。
このサンプリングでは、前者のみを抽出する。
初期画面は以下。

以下は、Drag and Dropで1列目と2列目を並べ替えた画面である。

面白いように動かせる。

先に述べたように、このようなテーブルを作成することは非常に簡単である。
DataTableのコンフィグ属性(draggableColumns)にtrueを設定するだけでよい。

以下にHTMLの全文を示す。
たったそれだけで、このようなテーブルの作成が可能であることがわかる。
YUIのExampleでは、YUIのLoaderが利用されているが、以下のサンプルでは、コンフィギュレータ(下図)を使って、組み入れるCSSとjsファイルを調べてみた。

コンフィギュレータは、使いたいモジュールのボタンを押して、「Loading Scripts and CSS Directly」のタブ内を(view plainで表示させ)copy and pasteすればよい。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 
<html> 
<head> 
    <meta http-equiv="content-type" content="text/html; charset=utf-8"> 
<title>Ajax Sample</title> 
 
<style type="text/css"> 
body {
	margin:0;
	padding:0;
}
</style> 

<!-- Individual YUI CSS files -->
<link rel="stylesheet" type="text/css" href="scripts/yui/fonts/fonts-min.css">
<link rel="stylesheet" type="text/css" href="scripts/yui/assets/skins/sam/skin.css">
<!-- Individual YUI JS files -->
<script type="text/javascript" src="scripts/yui/yahoo-dom-event/yahoo-dom-event.js"></script>
<script type="text/javascript" src="scripts/yui/element/element-beta-min.js"></script>
<script type="text/javascript" src="scripts/yui/button/button-min.js"></script>
<script type="text/javascript" src="scripts/yui/dragdrop/dragdrop-min.js"></script>
<script type="text/javascript" src="scripts/yui/container/container-min.js"></script>
<script type="text/javascript" src="scripts/yui/datasource/datasource-min.js"></script>
<script type="text/javascript" src="scripts/yui/datatable/datatable-min.js"></script>

<style type="text/css" id="defaultstyle">
#main {
	margin: 2px;
	padding: 3px;
}
/* custom styles for this example */
#dt-example {
	width:45em;
/*	margin:0 auto;*/
}

.yui-dt-liner {white-space:nowrap;}

</style>

<script type="text/javascript" src="scripts/yui/datatable/assets/js/data.js"></script> 
<script type="text/javascript"> 
YAHOO.util.Event.addListener(window, "load", function() {
	
	YAHOO.example.ColumnShowHide = function() {
		// 列定義
        var myColumnDefs = [
                {key:"address"},
                {key:"city"},
                {key:"state"},
                {key:"amount"},
                {key:"active"},
                {key:"colors"},
                {key:"last_login", formatter:YAHOO.widget.DataTable.formatDate}
        ];

        // データソースの作成
        var myDataSource = new YAHOO.util.DataSource(YAHOO.example.Data.addresses);
        myDataSource.responseType = YAHOO.util.DataSource.TYPE_JSARRAY;
        myDataSource.responseSchema = {
            fields: ["address","city","state","amount","active","colors",{key:"last_login",parser:"date"}]
        };
 
        // Create DataTable
        var myDataTable = 
            new YAHOO.widget.DataTable("columnshowhide", 
                    myColumnDefs, 
                    myDataSource, 
                    // カラムのDrag and Dropを可能にする。
                    {draggableColumns:true});
        
        return {
            oDS: myDataSource,
            oDT: myDataTable
       };
    }();
});
</script>
</head> 
 
<body class=" yui-skin-sam">
<div id="main">
<p>Drag and Dropで列を並べ替えることができます。</p>
<div id="dt-example">
	<!-- テーブルの表示エリア -->
    <div id="columnshowhide"></div>
</div>

</div>
</body> 
</html>