Helper
Handlebars
Використовуємо для виводу динамічних даних в шаблони.
Користуйтеся офіційною документацією: https://handlebarsjs.com/guide/
string
Для роботи з текстом
Helper | Props | Опис |
---|---|---|
concat | args (Рядки для об'єднання) | Об'єднання двох рядків |
substr | data(Строка або число яке обрізається), options: from(Число з якого обрізати строку), max(Число до якого обрізати строку) | Обрізання строки. Є можливість вказання точної кількості |
mls | data(Рядок для перекладу), options(en, ru...зазначений переклад data) | Переведення строки на мову, що обрана |
mdToHTML | options: file(Отримані дані про файл) | Перетворення з файла readme.md до формату HTML |
decodeURI | data (Строка для декодування) | Декодування компоненти URI. Використовується для виведення на сторінці пошукового запиту, який привів на дану сторінку |
string_to_array | data(Строка для форматування), options: array_n(Індекс, який дістаємо з масиву), separate(По чому розділяти строку) | Форматування з строки у масив |
str_replace | data(Рядок для форматування), args (строки для заміни), options: br (вставка тегу) | Виконання заміни частини строки на значення з останнього аргументу. |
escapeQuotes | data(Строка) | Оброблює строку для запобігання sql вразливості |
coalesce | args (Масив аргументів для фільтрування) | Повертає перший не null елемент |
encodeURI | data(Набір вхідних даних, строка) | Кодування URI компоненти. Внаслідок кодування ми отримуємо дані, спец-символи яких замінені на відповідні їм значення URI |
str_rod | data(Cтрока для перетворення) | Змінює відмінки по батькові |
translit | data(Cтрока для перетворення) | Форматування символів з кирилиці на латиницю |
// concat
{{concat '123' '456'}} //123456
// substr
{{substr '123456' max=2}} //12
{{substr 'testSTR' from=3}} // tSTR
{{{mls 'page' ua='Сторінка' en='Page'}}} // Якщо мова сторінки en - виведе Page
{{{mdToHTML file='# markdown-it rulezz!'}}} // markdown-it rulezz!
{{{decodeURI '%5C%5C123'}}} // \\123
{{string_to_array '11/22/33/44/55/66' separate='/'}} // 11,22,33,44,55,66 - масив
{{{str_replace 'Перший рядок<br>Наступний рядок' br=1}}}
// Перший рядок
// Наступний рядок
{{str_replace 'This Is Alias' ' ' '!'}} // This!Is!Alias
{{{escapeQuotes "asdqweqwe'adasdqwe"}}} // asdqweqwe''adasdqwe
{{{encodeURI '\\123'}}} // %5C%5C123
{{{str_rod 'Іванович'}}} // Івановича
{{{translit "Верифікувати"}}} // Veryfikuvaty
format
Для форматування та виводу шаблонів
Helper | Props | Опис |
---|---|---|
set | data(назва змінної), args(Масив, у якому містяться html строки), options: save(Для перевірки чи робити збереження в базі) | cтворює змінну, яка використовується у шаблоні та може бути записана в БД |
empty | просто повертає '' | Повертає пустий рядок замість змісту іншого хелпера при компіляції шаблону |
_hb | data(Зміст переданих даних), options: template(Назва шаблона для демонстрації), cache(Передати будь-який параметр для кешування шаблона), | Виводить блок встановленого типу на сторінці сайту |
_hb_sync | те саме, що і у _hb | Синхронізує шаблон згідно запиту. Є перевірка на кешування даних |
skip2 | data (рядок для форматування) | Переданий аргумент огортається в подвійні фігурні кавички. Є можливість перетворення строки у хелпер. |
skip | data (рядок для форматування) | Переданий аргумент огортається в потрійні фігурні кавички |
{{set 'is_authorized' 'true'}} {{is_authorized}} // is_authorized=true
// Створює змінну is_authorized, яка може бути викликана з будь-якої частини шаблону та встановлює значення
{{{empty _hb template="change-password-email-template"}}} // ''
{{{_hb template="header"}}}
{{{_hb_sync template=(coalesce @root._q grid.query opt.q '1=1')}}}
// Синхронізація шаблону згідно запиту зі змінної opt.query_text або grid.query (за відсутності - значення за замовчуванням 1=1)
{{{skip2 "name"}}} // {{name}}
{{{skip name}}} // {{{name}}}
format 2
Функції, які відповідають за форматування даних
Helper | Props | Опис |
---|---|---|
formatNum | data (Число для форматування), options: format Шаблон вигляду результату, lang(Мова на якій видати інформацію), currency (Валюта), round(Округлення) | Форматування з числа в строку |
formatNumber | data(Число для форматування) | Форматування до числа |
formatDate | data(дата для форматування), options: format(Формат для вигляду при поверненні), time (Для вибору чи робити формат виводу години і хвилини, чи ні), trunc (Для вибору чи онуляти рік або квартал), shift_year (Здвинути рік), shift_quarter(Здвинути квартал), shift_month(Здвинути місяць), shift_week(Здвинути тиждень), shift(Здвинути час) | Форматування дати за умовою і можливе зміщення дат і часу. Є можливість виведенння поточної дати через значення аргументу "0" |
formatDigit | data(Число для форматування), options: rank(Фіксована довжина) | Форматування чисел. Приводить до встановленої довжини шляхом доповнення |
formatAuto | data(Данні для форматування) | Для форматування автоматично отриманого значення |
num_format | data(number), options: dec(число цифр після коми для заокруглення), fixed (Фіксоване число цифер після коми) | Форматування у число. Є можливість використання разом із значком span |
formatUnit | data(Число для перетворення), options: number(Число після точки), unit(одиниці об'єму файлу: TB,GB,MB,KB,B) | Повертає розмір растру у відповідних одиницях об'єму файлу |
formatRelative | data(Дата для перетворення), options: locate(Мова якою відобразити час: en ru ua), percent(Будь-яке значення для відображення часу у відсотках) | Форматування часу скільки залишилося чи пройшло від заданого |
/*Формат для вигляду при поверненні.
Можливі значення: dd, mm, MM, month, mon, yy, YY, hh, mi, sec, mw_ua, mw_en, mw_ru, wd_ua */
// trunc - Для вибору чи онуляти рік або квартал
// shift_year, shift_quarter, shift_month, shift_week,shift - Здвинути рік/квартал/місяць/тиждень/час
// 09 - 2022 вересня
{{formatDate "2021-09-08T12:22:27.983" shift_year=1 format='mm - yy mw_ua'}}
// 01 Січень 2021 12:22:27
{{formatDate "2021-09-08T12:22:27.983" trunc='year' format='dd month yy hh:mi:sec'}}
{{{formatDigit '11' rank=4}}}
{{formatUnit '123.45678' number="2"}} // 123.46B
// dec - кількість цифр після коми
// product_price = 123,4633333
{{{num_format product_price dec="2"}}} // 123,46
{{{formatNum '56480'}}} // 56480 (п'ятдесят шість тисяч чотириста вісімдесят) грн. 0 (нуль) коп.
{{{formatNumber '56480'}}} // 56 480.00
{{{formatRelative '2020-01-04'}}} // 3 років тому
condition
Для виводу даних в залежності від виконання певних умов
Helper | Props | Опис |
---|---|---|
ifCond | args[0] - перше значення. args[1] - оператор. args[2] - друге значення. | Перевірка двох значень та виконання коду при виконанні умови, а також у всіх інших випадках. Дії: ==, !=, ===, !==, &&, <, <= , >, >=, &,!~, ~, in, not in. У наступних хелперах condition аргументи та дії такі ж самі. |
ifCondAnd | args | Створення шаблона за перевіркою виконання декількох умов. |
ifCondOr | args | Створення шаблона за перевіркою "АБО". Повинна виконатись хоча б одна умова |
ifEval | data | Функція для виконання коду у формі строки за визначеними параметрами |
{{#ifCond '1' '==' '1'}}Умова виконана{{^}}Не виконана умова{{/ifCond}} // Умова виконана
// const status = 3;
{{#ifCond 'status' 'in' '1,2,5'}}Умова виконана{{^}}Не виконана умова{{/ifCond}} // Умова не виконана
{{#ifCondAnd 1 '==' 1 2 'in' '2,3' 2 'in' '1,2' }}1{{^}}2{{/ifCondAnd}} // 1
{{#ifCondOr 1 '==' 1 2 'in' '2,3' 2 'in' '1,2' }}Хоча б одна умова виконана{{^}}Жодна умова не була виконана{{/ifCondOr}}
// Хоча б одна умова виконана
{{#ifEval '1 && true'}}1{{^}}2{{/ifEval}} // 1
{{#ifEval 'null && true'}}1{{^}}2{{/ifEval}} // 2
content
Для відображення контенту
Helper | Props | Опис |
---|---|---|
contentList | options: table (Таблиця в базі або конфіг таблиця), query (Запит до бази), limit (Кількість рядків на сторінці), tag (Для звязування фільтрів), sql (Вивід sql запиту), timing (Вивід часу виконання), disable_search (Відключити пошук), search_column (Колонки для пошуку), token (Для отриання токенів значень) | Відображення даних з таблиці або запиту до БД на сторінці. За запитом отримуємо масив json із рядків бази даних. Є можливість застосування синтаксису sql у змінній query для формування запиту до БД. |
_table | options: name (Назву шаблону таблиці в БД), template (Назва шаблона картки), fields(Поля таблиці, за замовчуванням всі, При явному вказанні можливо обрати деякі), hide(Вказати поля, які необхідно приховати) | Виведення віджету таблиці в інтерфейсі. Є можливість вказання фільтрів для даних, а також застосування додаткових можливостей, до переліку яких входять можливість редагування даних, режим картки тощо. |
productPager | options: limit (Максимальна кількість елементів),page_limit (Максимальна кількість сторінок на показ) sql(Для перевірки чи повертати sql запит),s template(Якщо вказаний шаблон) | Пагінатор. Дозволяє розбити масив даних на частини. Зазвичай використовується разом з contentList |
_pattern | options: chars (Перелік та порядок виводу колонок з БД), name (назва), _template (Допоміжний шаблон, який використовується для виводу даних) | Виведення інформації із таблиці з урахуванням переліку та послідовності колонок |
columnList | options: table(назва таблиці), template (назва шаблону) | Відображення списку колонок таблички |
_svg | options: table (Назва шаблону таблиці), fields (Перелік полів, що необхідно вивести) status (Змінна, яка відповідає за класифікацію об'єктів), query (Запит до таблиці table), style (Стилізація CSS), href (Колонка посилання) | Відображення SVG з геометрії вказаної таблиці. Таблиця має задаватись явно, а також мати Primary Key |
_input | options: name(Назва поля форми буде передаватись на сервер), data (Класифікатор для формування випадаючого списку), value(Значення поля по замовчуванню), type (Тип поля) | Створює випадаючий список у формі поля. Необхідно вказати селект або класифікатор, поле та таблицю в БД |
// table - назва таблиці в бд або повноцінний запит в дужках '()'
// limit - кількість рядків на сторінці (limit за умовчуванням = 16)
//query - умова пошуку
{{#contentList table="(SELECT * FROM data_barlessness.entrance_group where id_build = '{{id_build}}')" limit=100}}
{{#each rows}}
{{/each}}
{{/contentList}}
{{#contentList table="data_barlessness.entrance_group" query="id_build = '{{id_build}}'"}}
{{#each rows}}
{{/each}}
{{/contentList}}
{{{_table name="decision_db.decision.table" query="status=1"}}}
// Виведе таблицю decision_db.decision.table.json з записами, які мають статус '1'
{{#contentList table='crm_order.order_list' query="1=1" order="cdate desc" limit=1}}
{{#each rows}}
{{{_pattern
chars="cdate,otherColumn1,otherColumn2"
table="crm_order.order_list.table"
template="order_item.pattern.pt"
href="/order/{{order_id}}"
share=true
info="title=title"
data=this
}}}
{{/each}}
{{{productPager}}}
{{/contentList}}
{{{_svg table="(select st_makepoint(1,1) as geom, 'title' as title, obj_id as id)" query="1=1" style="stroke:##769bb8; fill:#e2ecf4;" highlight_style="fill:#ffb047;" sql=1 height="600" href="/reference/geomSvg"}}}
{{{_input type='select' data="acc_plan_status" name='checklist_ind_status' value=ind_val}}}
filter
Для фільтрації даних
Helper | Props | Опис |
---|---|---|
filterList | options: table (Назва таблиці), tag(Для фільтрів), filter (Фільтри явно json) | Фільтрація списку, query (Запит до таблиці) |
filterListVue | Так само як у filterList. Також: display (Спосіб відображення, напр. Іnline-block), customFilters (Користувацькі фільтри) | Фільтрація списку у vue |
filterSQL | options: table (Назва таблички), filter (Параметри для фільтрації), data (Параметри для фільтрації, якщо не задано filter) | Фільтрація sql |
filterID | args: ідентифікатор, params: data(Parent_key для бд) | Фільтрування по ідентифікатору |
{{{filterID gid data='gromada'}}}
{{{filterListVue table="producer_view_letter" tag="brands_aptekar" filter='[
{"name":"opd_title", "ua":"Виробник","ru":"Производитель","type":"Autocomplete"},
{"name":"opd_country","ua":"Країна","ru":"Страна"},
{"name":"details.category","ua":"Країна","ru":"Страна"}
]' sql1=1}}}
{{{filterList table="ts_approval_docs.ts_passports" tag="ts_passp_tag" template="core.filter_simple.pt" sql1=1 filter='[
{"name":"ts_type","type":"Checkbox", "data":"ts_type","ua":"Тип тимчасової споруди"},
{"name":"ts_regnum","type":"Autocomplete","ua":"Реєстраційний номер"}
]'}}}
select
Для отримання даних
Helper | Props | Опис |
---|---|---|
select | params: data (Параметр по чому вибирати дані), data (назва колонки або строка) | Співставлення даних з класифікатором або селектом в БД. Використовується у шаблонах |
badge | options: data (Назва класифікатора з color), data (назва колонки або строка) | Створення тегу span з вибраним кольором значка |
selectList | options: key (Ключ для фільтрації), value (Значення для шаблона), data (Назва класифікатора або селекта), filter (Назва фільтра), _href (Посилання). data: назва колонки | Вибирає всі значення з select |
{{{badge status data="status_classifier"}}}
{{{select '1' data="account_status"}}} // Діючий (Статус '1' містить значення 'Діючий' у класифікаторі)
{{select uid data='user_id'}}
{{#selectList page.metadata.theme data="inspire_category" }}
<a href="{{data}}" target="_blank" class="inspire__block"
style="border:1px solid {{color}}">
<span>{{name}}</span>
</a>
{{/selectList}}
form
Для вставки форм
Helper | Props | Опис |
---|---|---|
_form | options: form (Назва форми), template (Назва шаблона), api (Апі), obj (Об'єкт), action (Дія), model (Назва моделі для пошуку у бд) | Відображення html форми. Дозволяє викликати функції з БД, API, а також передавати параметри, що користувач явно не вносить. id Ідентифікатор для отримання даних з таблиці |
__form | options: id, table, api, form, modal_title (Назва модального вікна), modal (Назва для отримання шаблону модального вікна), width (Ширина вікна), reload (Перезавантаження) | Відображення форм через хелпер. Є можливість виведення форми на сторінці або її відкриття через кнопку. |
{{{_form form="softpro_support.login.form"}}}
{{{__form form='softpro_support.login.form' model='admin.users' obj='uid={{{user.uid}}}'
* modal='<a class="btn btn-default"><span class="btn-label"></span>Add user</a>'}}}
json
Для виводу даних у форматі json
Helper | Props | Опис |
---|---|---|
json | data: назва об'єкту | JSON.stringify - об'єкту. Є можливість виведення налаштувань сайту |
_keys | data: назва об'єкту | Витягування ключів з об'єкту. Є можливість повернення лише непустих ключів |
JSON | data: назва об'єкту, args[1] - Елемент для з'єднання об'єкту | Форматування об'єкта в об'єкт json або string. Є можливість виведення геометрії у форматі GeoJJON |
{{{json user}}}
{
"uid": "1", "email": "ivanov.test@gmail.com",
"enabled": true, "max_age": null, "allow_ip": null,
"sur_name": "admin", "editor_id": "1",
"user_name": "admin", "user_type": "admin"
.....
} // приклад виводу
{{{JSON geom}}} // Виведе геометрію об'єкту у форматі GeoJJON
{{_keys @root}}
/*
приклад виводу - mode,view,data[mode],data[view],url_part[],user,_uid,uid,dbname,domain,
port,__port,folder,setting,lang,_lang
*/
math
Для математичних операцій
Helper | Props | Опис |
---|---|---|
_count | data: об'єкт або масив | Довжина об'єкту або массиву. Дозволяє отримати кількість елементів |
_eval | data: Набір вхідних даних (Строка з обчисленнями) | Функція для виклику eval. Дозволяє виконувати арифметичні обчислення над змінними |
_math | options: operator (Оператор для дії з числами), arg1 (Перше число для дії),arg2 (Друге число для дії). args[0] - Перше число для дії, args[1] - Оператор для дії з числами, args[2] - Друге число для дії | Дії над числами. Дозволяє виконання простих математичних операцій arg1 Перше число для дії, arg2 Друге число для дії |
math_sum | data: масив чисел для додавання. args[0] - Перший елемент для додавання args[1] - Другий елемент для додавання. options: fixed (к-сть цифр після коми), attr (Параметр по чому додавати з об'єкта) | Отримує суму за атрибутом із масиву. Є можливість вказання точностіsa |
round | data: число. params: dec (Підрахування числа після роздільника) floor (False - округлення до низу) | Округлення числа до певної точності. Є можливість округлення до низу |
_random | data: Значення для хешування | Випадковий хеш-код. Використовується функцією формування динамічних табів в інтерфейсі |
inc | args: Масив чисел для складання | Складення двох значень з масива. Є можливість використання у якості порядокового номеру |
{{{_count user}}} // 37 (Об'єкт user містить 37 ключів зі значеннями)
{{{_eval '(12-12+2)'}}} // 2
{{_math '1' '+' '1'}} // 2
{{_math operator='-' arg1=10 arg2=5}} // 5
{{math_sum (formatDate cdate format='yy') 1}} // Додає до дати один рік
{{round 3.14159265359 dec="6"}} // 3.141593
{{{inc (coalesce @index 0)}}} // 1
{{{_random}}} // c2b027c30e (приклад отриманого хеш-коду)
util
Helper | Props | Опис |
---|---|---|
util_abbr | data: Строка | Виведення аббревіатури з текстової строки |
qrcode-generator | options: text (Змінна, що містить посилання на файл або сторінку), type (Тип зображення), margin (Відступ), size (Розмір) | Генерує зображення з QR кодом, що перенаправляє на посилання |
qrcode-generator-base64 | options (з хелперу вище) | Генератор QR код. Є можливість задання відступу та встановлення розширення вихідного зображення |
map | data: геометрія, options: layers (Список шарів), height (Висота карти), width (ширина карти), obj (Об'єкт для генерації шаблону), id (Ідентифікатор для отримання даних з базі) | Отримання карти з бази. Є можливість кастомізації |
print_map | options: geom, layers, buffer (Буфер для отримання даних з бази), width, height, pin_width (Закріпленна ширина для карти) | Формує зображення карти. Використовується при формуванні витягу із БД у вигляді документу. |
{{{util_abbr 'Test Question'}}} // TQ
{{{util_get1 @root @root.user}}} // ?
{{{qrcode-generator text=qr_link type='png' margin=1}}}
{{{qrcode-generator-base64 text=qr_link type='png' margin=1}}}
{{util_find conditions_json "cond_value,note" attr="cond_id" val="35"}}
{{{_vue "/vue/core/components/UIKit/list/vs-table-simple.vue" id=user_group_id model="admin.user_group_rel.table"}}}
{{{map '{"type":"Point","coordinates":[22.482923735,48.960322333]}' height=600 id="2728523421016131109"}}}
{{{print_map geom=geom layers="topo100" width=300 height=300 buffer=10000 base64=1}}}
echart
Для діаграм і візуалізації
Helper | Props | Опис |
---|---|---|
bi | options: table_name, query, api, groupby, cls, color, type, height, width | для графіків |
echarts_line | options: table_name, x_axis, query, chart_style,show_legend, smooth, area_style, height, width | для графіків |
echarts_map | options: table_name, tooltip_name, show_map_labels, show_bar, query, id_column, data_column | для діаграм у вигляді карт |
echarts_pie | options: table_name, name_column, group_type, dict_name, show_legend, x_offset, radius, inner_radius | для секторних діаграм |
{{{bi table_name="data_dma.build_passport" groupby="doc_status" height="300" type="bar"}}}
{{{echarts_line table_name = 'data_parcel.cad_parcel' x_axis='simple' smooth=1 show_legend=1 chart_style= 'light'}}}
{{{echarts_map table_name='data_parcel.cad_zone' tooltip_name='Площа зони'
* show_map_labels=1 show_bar=1 query="cad_zone_id >'10'" id_column='cad_zone_id' data_column='area'}}}
{{{echarts_pie table_name='data_parcel.cad_parcel' name_column='parcel_ownership' group_type='count' dict_name='ownership_buidl' show_legend=1 x_offset='75%' radius='80%' }}}
{{{echarts_pie group_type='count' height='350px' width='500px' show_legend=1 name_column='project_status' dict_name="project_status" table_name="need_recovery.all_projects" show_legend=1 x_offset='55%' radius='60%' inner_radius='20%'}}}
file
Для роботи з файлами
Helper | Props | Опис |
---|---|---|
image_base64 | args[0] - назва фото | Будує шлях до фото. Використовується для виведення зображень у витязі (документі) |
pdf_to_base64Img_helper | args[0] - назва фото, options: title (Назва документу) style (Стилізація (верстка)), img_w (ширина), filepath (Шлях до файла) | Конвертація PDF-файлу до формату base64 з метою відображення його у якості додатку до основного PDF файлу. |
fileExists | data: шлях до файлу | Перевірка чи існує файл |
{{{image_base64 '/files/site/07a0a970-98ab-11e9-9c44-77fb2216dab1.png'}}}
{{{image_base64 (qrcode-generator text=qr-link type='png' margin=1)}}}
{{{pdf_to_base64Img_helper '/help/test_for_helper.pdf' title="Example"
style="display:block;width:100%;margin-bottom:30pt;" img_w=720}}}