Tabulator tips

第20回 Calc の計算結果を列幅自動調整する

2020.04.08

今回は bottomCalc,topCalc の計算結果を列幅自動調整により、すべて表示する設定について記述します。

bottomCalc, topCalc プロパティを "sum" にすると 表示幅が足りなくなり、計算結果がすべて表示されないことがあります。

tabulator は列のレイアウトの一貫性を保つために最初のデータの読み込み時に 列幅が設定されるとその後、データが変更されても列幅を変更しないので その影響と思われます。


Tabulatorドキュメント「Update Column Widths On New Data」より抜粋

列のレイアウトの一貫性を保つために、最初のデータの読み込み時に(コンストラクタのsetプロパティまたはsetData関数から)列の幅が設定されると、新しいデータが読み込まれても列の幅は変更されません。 テーブルに読み込むたびに列幅をデータに合わせたい場合は、layoutColumnsOnNewDataプロパティをtrueに設定します。

var table = new Tabulator("#example-table", {
    layoutColumnsOnNewData:true,
});

layoutColumnsOnNewDataプロパティをtrueに設定し、table.setData() で データを再ロードすると列幅が再調整されてbottomCalc,topCalc の結果がすべて表示されるようになります。

カラム定義

{
    title:"num",
    field:"num",
    align:"right",
    formatter: "money",
    formatterParams:{precision:0}, 
    bottomCalc: "sum",
    bottomCalcFormatter: "money",
    bottomCalcFormatterParams:{precision:0}, 
},

データ定義

{ num: 900000 },
{ num: 900000 },
{ num: 900000 },
{ num: 900000 },

サンプルコード

<!doctype html>
<html lang="ja">
<head>
<meta charset="utf-8">
<link href="https://unpkg.com/tabulator-tables@4.4.3/dist/css/tabulator.min.css" rel="stylesheet">
<script type="text/javascript" src="https://unpkg.com/tabulator-tables@4.4.3/dist/js/tabulator.min.js"></script>
</head>
<body onload=show_table()>
<h1 id=title> Calc の計算結果を列幅自動調整する </h1>

<p><div id="table0"></div></p>
<p><div id="table"></div></p>

<script type="text/javascript">
var show_table=function(){
    var tdata = [
        { num: 900000 },
        { num: 900000 },
        { num: 900000 },
        { num: 900000 },
    ];
    var columns = [
            {
                title:"num",
                field:"num",
                align:"right",
                formatter: "money",
                formatterParams:{precision:0}, 
                bottomCalc: "sum",
                bottomCalcFormatter: "money",
                bottomCalcFormatterParams:{precision:0}, 
            },
    ];
    // 1番目のテーブルのbottomCalc の結果は一部隠れる。
    new Tabulator("#table0", {
        data:tdata,
        columns: columns,
    });

    var table = new Tabulator("#table", {
        data:tdata,
        columns: columns,
        layoutColumnsOnNewData:true
    });
    // データは table.getData()で取得できる。
    let data = table.getData(); 
    // データ再ロードでbottomCalc の結果は全て表示される。
    table.setData(data);
}
</script>

著者プロフィール

naka

すきなコマンドは awk と bc です。なにかを計算する時、awk か bc を使います。

記事一覧Index