⟵ сюдатуда ⟶
  • Установка
  • Ubuntu 18
  • Обновления
  • Бэкапы
  • Multi/no-multi
  • Консольная утилита bin/totum
  • Основы для пользователей
  • Интерфейс и компоновка
  • Таблицы и их параметры
  • Префильтр
  • Поля и их параметры
  • Синтаксис
  • Код, действия, форматирование
  • Реляционные взаимосвязи
  • Порядок расчета и единицы пересчета
  • Сравнения
  • Функции
  • Отладка
  • Автозаполнение расчетных и временных
  • Дублирование строк и циклов
  • Деревья
  • Печать и CSV
  • API
  • Роли и пользователи
  • Нотификации
  • Действия по расписанию
  • Анонимные таблицы
  • Внешние формы
  • Экспорт и импорт таблиц
  • Системные таблицы
  • Подключение функций
  • Подключение дополнительного интерфейса
  • Дополнительные интерфейсы
  • Структура файлов
  • Структура базы
  • Подключение функций

    Для подключения дополнительной функции ее нужно создать файл CalculateExtensions.php, который находится в корне разворачиваемого ТОТУМ (в папке с Conf.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("Текст ошибки");
    

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

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

    Сложный вариант: Если текущий вариант подключения ext* функций вам не удобен - вы можете переопределить в классе Conf.php функции родительского ConfParent.php, отвечающие за работу подключаемых функций: ConfParent::getCalculateExtensionFunction, ConfParent::getExtFunctionsTemplates

    Подключение дополнительного интерфейса

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

    Если подключить js и css файлы ТОТУМа, то можно пользоваться встроенными интерфейсными возможностями вызова таблиц. Исходники фронтенда выкладываются в dev ветку репозитария https://github.com/totumonline/totum-front. Изменения происходят часто.