⟵ сюдатуда ⟶
Модификация кода

Подключение функций

Для подключения дополнительной функции ее нужно добавить в файл CalculateExtentions.php, который находится в корне разворачиваемого ТОТУМ.

Например, подключаем функцию extHello:

use totum\common\errorException;
$CalculateExtentions = new \stdClass();
$CalculateExtentions->jsTemplates = '[{"name":"extHello","t":"(name: \"\")","d":false,"p":["name"],"m":[],"n":["name"]}]';
$CalculateExtentions->extHello=function ($params){
    $params=$this->getParamsArray($params);
    return 'Привет, '.$params['name'];
};

В параметре jsTemplates должно содержаться в формате json описание функции.

Где:

  • name — название функции;

  • t — шаблон для автоподстановки;

  • d — является ли функция устаревшей;

  • p - список допустимых параметров;

  • m — список множественных параметров (может присутствовать при вызове несколько раз);

  • n — список необходимых параметров.

При вызове функция запускается из объекта Calculate, CalculateAction, CalculateFormat или CalculateSelect* — и может пользоваться всеми их функциями. Например, getParamsArray.

При вызове функция получает переменную $params, содержащую строку! с параметрами внутри скобок после имени функции. Чтобы получить параметры, рассчитанные по логике ТОТУМ, необходимо вызвать функцию $this->getParamsArray($params). Эта функция имеет также параметры, заполненные по-умолчанию, которые можно задать как вам требуется:

function getParamsArray($paramsString, $arrayParams = [], $notExecParams = [], $threePartParams = ['where', 'filter', 'key'])

Где:

  • $paramsString — строка с параметрами, полученная функцией;

  • $arrayParams — параметры, которые могут встречаться несколько раз (множественные параметры из шаблона) - они будут возвращены в виде массива независимо от того, встретился он один или несколько раз;

  • $notExecParams — параметры, которые будут возвращены в виде неразобранной строки (полезно, когда код выполняется по условиям);

  • $threePartParams — параметры, состоящие из трех частей 'field' = "value" — возвращается в виде ассоциированного массива/списка ассоциированных массивов {"field" :"field", "operator":"=", "value": $value}.

Если функция должна вернуть ошибку выбрасывается исключение:

throw new errorException("Текст ошибки");

Ошибка выброшенная в коде действия прерывает цепочку пересчетов и изменения не сохраняются.

Ошибка, выброшенная при расчете значения поля, установит расчетное (и итоговое, если поле не зафиксировано) значение поля в ОШБК!

Для добавления дополнительного интерфейса нужно добавить папку в каталог totum/moduls — можно скопировать имеющийся интерфейс анонимных таблиц (An) или интерфейс Table. Этот модуль станет доступен в ТОТУМ по пути /названиевашейпапки/

Если подключить js и css файлы ТОТУМа, то можно пользоваться встроенными интерфейсными возможностями вызова таблиц. Когда выложим исходники веб-интерфейса это будет иметь смысл. В минифицированном виде и без описания в нем черт ному сломит.

⟵ сюда туда ⟶