はしくれSEめも

SEに必要情報をめも程度に残していこうと思っています。

【Handsontable】source 引数の定義

handsontable

Handsontable(ハンズオンテーブル)でよくbeforeChangeなどイベントのパラメータにsourceがあります。
sourceは、何のアクション(イベント)でトリガーとなったかを判定する際に使用できます。

ただ、何が入ってくるのかいつも疑問に思います。
そこで一覧にまとめました。
文字列で判定します。

auto

Handsontableによってトリガーされたアクションとその理由は、Handsontableに適用された設定に直接関連しています。たとえば、0より大きいafterCreateRow場合にminSpareRowsは、これで解雇されます。

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);
      }
    }
  });
});

関連記事

coogi-memo.hatenablog.com

coogi-memo.hatenablog.com

coogi-memo.hatenablog.com

coogi-memo.hatenablog.com

coogi-memo.hatenablog.com

coogi-memo.hatenablog.com

coogi-memo.hatenablog.com