【Handsontable】source 引数の定義
Handsontable(ハンズオンテーブル)でよくbeforeChangeなどイベントのパラメータにsource
があります。
source
は、何のアクション(イベント)でトリガーとなったかを判定する際に使用できます。
ただ、何が入ってくるのかいつも疑問に思います。
そこで一覧にまとめました。
文字列で判定します。
auto
Handsontableによって引き起こされたアクションとその理由はHandsontableに適用された設定と直接関係があります。例えば、minSpareRowsが0よりも大きくなるとafterCreateRowはこれで起動されます。
edit
データが変更された後(例えば、編集やsetData*メソッドの使用後)にHandsontableによってトリガーされるアクション。
loadData
loadDataまたはupdateSettings({data: myData})(dataプロパティ付き)メソッドが呼び出された後にHandsontableによってトリガーされるアクション。
populateFromArray
データの入力を要求した後にHandsontableによってトリガーされるアクション。
spliceCol
列データのスプライスが完了した後にHandsontableによってトリガーされるアクション。
spliceRow
行のデータスプライシングが完了した後にHandsontableによってトリガーされるアクション。
timeValidate
時間バリデータが呼び出された後にHandsontableによってトリガされるアクション(たとえば編集後)。
dateValidate
日付バリデータが呼び出された後にHandsontableによってトリガされるアクション(たとえば編集後)。
validateCells
検証プロセスが起動された後でHandsontableによってトリガーされるアクション。
Autofill.fill
オートフィルプラグインによってトリガーされるアクション。
ContextMenu.clearColumns
"Clear column"がクリックされた後にContextMenuプラグインによってトリガーされるアクション。
ContextMenu.columnLeft
「左の列を挿入」がクリックされた後にContextMenuプラグインによってトリガーされるアクション。
ContextMenu.columnRight
「右の列を挿入」がクリックされた後にContextMenuプラグインによってトリガーされるアクション。
ContextMenu.removeColumn
"Remove column"がクリックされた後にContextMenuプラグインによってトリガーされるアクション。
ContextMenu.removeRow
"Remove Row"がクリックされた後にContextMenuプラグインによってトリガーされるアクション。
ContextMenu.rowAbove
「Insert row above」がクリックされた後にContextMenuプラグインによってトリガーされるアクション。
ContextMenu.rowBelow
「下の行を挿入」がクリックされた後にContextMenuプラグインによってトリガーされるアクション。
CopyPaste.paste
値が貼り付けられた後にCopyPasteプラグインによってトリガーされるアクション。
ObserveChanges.change
変更が検出された後にObserveChangesプラグインによってトリガーされるアクション。
UndoRedo.redo
変更をやり直した後、UndoRedoプラグインによってトリガーされるアクション。
UndoRedo.undo
変更が取り消された後、UndoRedoプラグインによってトリガーされるアクション。
source
を使用したサンプル
$(function(){ var data = [ ["", "Ford", "Tesla", "Toyota", "Honda"], ["2017", 10, 11, 12, 13], ["2018", 20, 11, 14, 13], ["2019", 30, 15, 12, 13] ]; var container = document.getElementById('handsonTable'); var hot = new Handsontable(container, { data: data, beforeChange: function(changes, source) { if (source == 'edit' || source == 'CopyPaste.paste' || source == 'Autofill.fill') { console.log('編集'); }else { console.log('source:' + source); } } }); });