registerMathMethod

добавление новой формулы

void registerMathMethod(string name,function handler,string category,boolean generateHTML);
namestringназвание формулы (буквами в верхнем регистре)
handlerfunctionобработчик, который определяет логику работы формулы
categorystringнеобязательный, название пользовательской категории для новой формулы
generateHTMLbooleanнеобязательный, позволяет пользовательскому методу генерировать HTML при включённом свойстве xssSafe

Example

$$("ss1").registerMathMethod("NEW", function(value){
    // ваш обработчик
});

Related samples

Details

Функция-обработчик может получать параметры, например значение одной ячейки, значения из диапазона ячеек (значения будут передаваться по ссылкам, например H3 или H3:H5) или произвольные параметры (например, число знаков после запятой, до которого нужно округлить число).

Новую формулу можно использовать как обычную встроенную функцию: =NEW(H3:H5);.

Вы можете добавить подсказки для параметров новой формулы, обновив локаль webix.i18n.spreadsheet.liveEditor["functions-syntax"].

Например:

const ssheet = webix.ui({
  view: "spreadsheet",
  toolbar: "full"
});
 
ssheet.registerMathMethod("RANDOM", function(value){   value = value || 100;    return Math.round(Math.random()*value); });   
webix.i18n.spreadsheet.liveEditor["functions-syntax"].RANDOM = [      ["Digit", "Optional. The number digit."]  ];   
ssheet.setCellValue(1,1,"=RANDOM(100)")

Также можно указать пользовательскую категорию при добавлении новой формулы:

webix.ui({
  view:"spreadsheet",
  id: "sheets",
  methods:"all",
  toolbar:"full",
}); 
 
webix.i18n.spreadsheet.liveEditor.custom = "Custom";
$$("sheets").registerMathMethod("returnone", () => 1, "custom");
$$("sheets").setCellValue(1, 1, "=RETURNONE()")

Чтобы разрешить пользовательскому методу генерировать HTML при включённом свойстве xssSafe, передайте параметру generateHTML метода registerMathMethod() значение true:

const spreadsheet = webix.ui({
    view: "spreadsheet",
    xssSafe: true
});
 
spreadsheet.registerMathMethod("bold", v => `<b>${v}</b>`, null, true);
spreadsheet.setCellValue(1, 1, '=bold("text")');

При использовании метода с разрешённой генерацией HTML в математических формулах, в формуле необходимо задавать только метод. Например: =IMAGE(...) отрисует изображение, но =IMAGE(...)&"text" будет экранировано.

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

See also
Наверх
If you have not checked yet, be sure to visit site of our main product Webix ui component library and page of spreadsheet product.