$mathTemplate

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

function $mathTemplate;
Details

Метод не предназначен для прямых вызовов.

Функция $mathTemplate принимает следующие параметры:

  • math - формула в ячейке, например =A1
  • value - результат вычислений, например 1

Если вам нужно управлять тем, что возвращает ячейка при ссылке на неё (например, чекбокс должен возвращать своё состояние, а не HTML чекбокса), вы можете настроить $mathTemplate. Например, если ячейка содержит кнопку, можно указать, что результатом математического вычисления в ней будет HTML кнопки:

const spreadsheet = webix.ui({view:"spreadsheet"});
 
spreadsheet.$$("cells").on_click["webix_button"] = function(ev, cell){
  webix.message(`Button click in cell ${spreadsheet.posToRef(cell.row, cell.column)}`);
};
 
const defaultMathTemplate = spreadsheet.$mathTemplate;
spreadsheet.$mathTemplate = function(math, value){
  let val = defaultMathTemplate.apply(this, arguments);
  if(/^=button\(/i.test(math))
    return "<input class='webix_button' type='button' value='click me!'>";
  return val;
}
 
spreadsheet.registerMathMethod("BUTTON", ()=> "My button", null, true);
// если другая ячейка ссылается на текущую, она получит "My button"
spreadsheet.setCellValue(1, 1, "=BUTTON()"); 
// возвращает текст "My button" вместо HTML кнопки
spreadsheet.setCellValue(2, 1, "=A1");

В качестве альтернативы можно задать возвращаемое ячейкой значение напрямую в registerMathMethod() (без настройки $mathTemplate):

spreadsheet.registerMathMethod(
    "BUTTON", 
    ()=> "<input class='webix_button' type='button' value='click me!'>", 
    null, 
    true
);
Наверх