Перейти к содержанию

Шаблонизатор Jinja

Шаблонизатор Jinja является довольно распространённым способом генерации статических HTML страниц, например с его помощью работает Django.

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

В приложении шаблонизатор используется, к примеру в блоке "HTML-шаблон", а так же для формирования динамических заголовков визуализаторов.

Особенности работы шаблонизатора

  • Шаблонизатор всегда работает с "чистыми" (не измененными) данными, которые пришли на вход блока.
  • Для блоков с единичным входом (к примеру Блок "HTML-шаблон") идентификатор корневого элемента называется input.
  • Для блоков с динамическими входами (к примеру Блок "Панель OLAP") идентификатор корневого элемента называется так же, как и идентификатор входа, из которого необходимо получить данные.
  • Для блоков, у которых есть и статические и динамические входы (Блок "Визуализатор JavaScript") идентификаторами являются как и input (для корневого элемента), так и идентификаторы добавленных входов.

Входы, которые могут перезаписывать настройки блока (к примеру вход "Привязки" блока "Таблица") недоступны для работы с шаблонизатором.

Дополнительные функции

Кроме стандартных функций шаблонизатора, в приложение добавлены некоторые дополнительные функции: - match(<pattern>, <string>) - возвращает первое совпадение шаблона в строке. Аналог re.match из Python; - search(<pattern>, <string>) - возвращает совпадение шаблона в любом месте строки. Аналог re.search из Python; - fullmatch(<pattern>, <string>) - возвращает объект, если строка полностью совпадает с шаблоном. Аналог re.fullmatch из Python; - pretty(<row>) - преобразует строку в json c форматированием и отступами; - linearize(<row>) - преобразует строку в json (без форматирования); - to_list(<context>) - преобразует данные в массив элементов, если это возможно. В противном случае - выдаст ошибку; - to_dict(<context>) - преобразует данные в словарь, если это возможно. В противном случае - выдаст ошибку; - to_options(<row>, <to_string>) - приводит ряд с данными к формату данных, использующихся в визуализаторах (таблицах и диаграммах); - to_string - флаг форматирования данных в строковый тип; - now(<mask>) - получение текущего времени сервера; - mask - маска даты для отображения. Не обязательное. Подробнее см. документация по формированию маски даты (английский язык); - utcnow(<mask>) - получение текущего времени сервера в формате UTC; - mask - маска даты для отображения. Аналогично now(); - timezone() - получение часового пояса. Отображение приходит в виде строки формата (+/-)HHMM, к примеру +0500 (часовой пояс Екатеринбурга);

Полезные ссылки

Примеры

Примеры отображения времени

Постановки

  • VISMIND-8859 Унификация jinja-шаблонов в заголовках визуализаторов
  • VISMIND-11024 Возможность получить текущее время в шаблонизаторе Jinja

Дополнительно

При работе с данными из других блоков необходимо знать внутреннюю структуру приходящих на вход данных для корректного отображения с использованием шаблона.