はじめに
これは、Jspreadsheet Advent Calendar 2024の19日目の記事となります。
「Handsontable 使い方メモ2(グリッドのオプション)」と比較しながら書いていきます。
※全てのオプションは網羅していません。
全てのオプションを確認したい場合は、 公式ドキュメント を参照
オプションの記事は長かったため、分割することにしました。
オプション
新しい行を追加するときの定義を指定する
HandsontableのdataSchema
の機能に近いものはcolumns
にあたる。
columns
を指定した場合
let grid = document.getElementById('grid');
let data = [];
let table = new jspreadsheet(grid, {
data: data,
columns: [
{ name: 'name' },
{ name: 'age' }
]
});
data.push(
{ name: 'foo', age: 25 }
);
table.setData(data);
// 再描画
// table.updateTable();
-
columns
は、データが全く無い状態から新規にレコードを追加したときなどに必要になる - setData(data) で行が追加された状態になる
- Handsontableの
dataSchema
の違い、再描画では追加したデータが表示されない
1行目にデータが設定されている場合
let grid = document.getElementById('grid');
let data = [{ name: 'foo', age: 17 }];
let table = new jspreadsheet(grid, {
data: data
});
data.push(
{ name: 'boo', age: 15 }
);
table.setData(data);
// 再描画
// table.updateTable();
- 1行目にすでにデータが設定されている場合は、そのデータの構造が
columns
として利用される - setData(data) で行が追加された状態になる
- Handsontableの
dataSchema
の違い、再描画では追加したデータが表示されない
セルの選択可否を設定する
Handsontableにはあるが、JspreadsheetにはdisableVisualSelection
の有効/無効を制御する機能は提供されていません。
Enter で次の行に移動する
Enter
を入力すると次の行に移動します。
Handsontableにはあるが、JspreadsheetにはenterBeginsEditing
の有効/無効を制御する機能は提供されていません。
Handsontableとの違い
Handsontableでは、デフォルトでEnter
を入力するとセルの編集が始まる
Enter でセルを抜けたときの移動先を指定する
Handsontableにはあるが、JspreadsheetにはenterMoves
のような機能は提供されていません。
-
Enter
でセルを抜ける時、デフォルトだと下のセルに移動する-
Shift + Enter
で上(逆)に移動する
-
フィルハンドル
選択したセルの右下にカーソルをドラッグすることで、セルの内容を上下 or 左右にコピーできる。これを フィルハンドル と呼ぶ。
HandsontableのfillHandle
の機能に近いものはselectionCopy
にあたる。
列・行を固定する
Handsontableにはあるが、JspreadsheetにはfixedColumnsLeft
, fixedRowsTop
のような機能は提供されていません。
行・列をドラック&ドロップで移動できるようにする
HandsontableのmanualColumnMove
の機能に近いものはcolumnDrag
にあたる。デフォルトはfalse
となっている。
HandsontableのmanualRowMove
の機能に近いものはrowDrag
にあたる。デフォルトはtrue
となっている。
let grid = document.getElementById('grid');
let table = new jspreadsheet(grid, {
data: [
[1, 2, 3],
[1, 2, 3],
[1, 2, 3]
],
columnDrag: true,
rowDrag: true
});
- 列ヘッダーを表示させた状態で
columnDrag
をtrue
にすると、ドラッグ&ドロップで列を移動させられるようになる -
rowDrag
を使えば、行の移動もできるようになる
行・列の幅をドラッグで変更できるようにする
HandsontableのmanualColumnResize
の機能に近いものはcolumnResize
にあたる。デフォルトはtrue
となっている。
HandsontableのmanualRowResize
の機能に近いものはrowResize
にあたる。デフォルトはtrue
となっている。
- 列ヘッダーを表示させた状態で
columnResize
をtrue
にすると、ドラッグで列の幅を変更できるようになる -
rowResize
を使えば行のサイズ変更もできるようになる
Handsontableとの違い
ダブルクリックしても、セルの内容に合わせて幅を最小サイズにできない。
行・列の最大数を設定する
Handsontableにはあるが、JspreadsheetにはmaxCols
のような機能は提供されていません。
Handsontableにはあるが、JspreadsheetにはmaxRows
のような機能は提供されていません。
余白となる行・列の最小値を設定する
余白となる列'minSpareCols'を設定する。
余白となる行'minSpareRows'を設定する。
let grid = document.getElementById('grid');
let table = new jspreadsheet(grid, {
data: [
[1, 2, 3],
[1, 2, 3],
[1, 2, 3]
],
minSpareCols: 2,
minSpareRows: 3
});
- 指定した数だけの空の行・列が余白として常に表示されるようになる
複数セル選択の可否
Handsontableにはあるが、JspreadsheetにはmultiSelect
の有効/無効を制御する機能は提供されていません。
表外をクリックしても選択状態を解除させない
Handsontableにはあるが、JspreadsheetにはoutsideClickDeselects
の有効/無効を制御する機能は提供されていません。
- 表外をクリックすると選択状態が解除される
最後に
Handsontableより機能が足りないが、その機能が必要となるかですね。