afterCommentChange перехватывает в HandsOnTable - PullRequest
0 голосов
/ 02 июля 2018

На уроке HoT по хукам можно увидеть (полный!?) Список хуков в HandsOnTable. Однако ни один из них не связан с комментариями.

Я хотел бы добавить пользовательский обратный вызов после добавления, удаления или обновления комментария.

Ни afterChange, ни afterContextMenuExecute, кажется, не срабатывают после изменения комментария, и beforeRender, кажется, срабатывает слишком часто.

В идеале я хотел бы использовать определенный хук, который срабатывает только при добавлении, изменении или удалении комментария, предоставляя мне доступ к старым и новым значениям, а также к позиции ячейки.
На этом этапе я бы согласился на все, что работает. Несмотря на то, что я не нашел ничего связанного с этим, трудно поверить, что никто не нуждался в этом раньше. Как только я найду ответ, я опубликую его здесь.

Вот базовый пример HoT с включенными комментариями и конкретными действиями, добавленными в контекстное меню:

var data = function () {
  return Handsontable.helper.createSpreadsheetData(100, 10);
};

var container = document.getElementById('example');

var hot = new Handsontable(container, {
  data: data(),
  minSpareCols: 1,
  minSpareRows: 1,
  rowHeaders: true,
  colHeaders: true,
  contextMenu: ['undo','redo','commentsAddEdit','commentsRemove'],
  comments: true,
});
body {   
  margin: 2rem;
  font-size: 13px;
  font-family: 'Open Sans', Helvetica, Arial;
}

h2 {
  margin: 20px 0 0;
  font-size: 18px;
  font-weight: normal;
}
<link href="https://docs.handsontable.com/pro/1.14.3/bower_components/handsontable-pro/dist/handsontable.full.min.css" rel="stylesheet"/>
<script src="https://docs.handsontable.com/pro/1.14.3/bower_components/handsontable-pro/dist/handsontable.full.min.js"></script>


<h2>Handsontable Basic Example (100x10)</h2>

<div id="example"></div>

1 Ответ

0 голосов
/ 02 июля 2018

Очевидно, afterSetCellMeta - это то, что я искал:

let hot = new Handsontable(container, {
  // ...,
  afterSetCellMeta: (row, col, key, value) => {
    if (key === 'comment') {
      // comment for cell @ `row`,`col` was changed to `value`
    }
  }
}
...