Фронтенд та SDK
Для того, щоб використовувати SDK, треба впевнитися, що воно готове до використання. Для цього використовуйте приклад коду нижче:
SDK події
SDK події викликаються на відповідних етапах життя шаблону. Деякі з подій можуть приймати відповіді та базуючись на них вносити зміни в шаблон
Будь-яка подія викликається наступним чином:
Кожна подія викликається для певного шаблону, тому кожний "eventParameters" містить базові значення:
Подія "init"
Дана подія сповіщає про те, що шаблон вже згенерований в необхідному на сторінці місці, а також, що функції, які стосуються конкретно цього шаблону, готові до виклику через SDK
Подія "prerender"
Дана подія викликається для кожної структурної одиниці, під час генерації шаблону та в подальших оновленнях різних його частин
До "eventParameters" додатково передаються такі значення:
Словник, який повертає функція "entities", складається з ключів, які додають елементи шаблону. Кожен ключ додає елемент, в описі якого його вказано, і далі цей ключ є в словнику для всіх вкладених у цей елемент структурних одиниць шаблону. Можливі ключі:
"filter" - фільтр: його "id" та "type" з "filters" відповіді API налаштувань разом із ключами його поля з "fields"
"filterOption" - опція фільтра у форматі опції поля з відповіді API налаштувань
"appliedFilters" - перелік усіх застосованих фільтрів. Кожен його елемент - словник із ключами "appliedFilter" та "appliedFilterOptions"
"appliedFilter" - застосований фільтр у форматі ключа "filter"
"appliedFilterOptions" - перелік застосованих опцій цього фільтра у форматі опцій поля з відповіді API налаштувань. Немає для фільтрів типу "Числовий"
"appliedFilterOption" - одна застосована опція фільтра у форматі опції поля з відповіді API налаштувань
"appliedFilterNumber" - число фільтра типу "Числовий", як його введено: точне значення, мінімум або максимум
"sortOptions" - перелік опцій сортування у форматі опцій сортування з відповіді API налаштувань
"paginationItems" - перелік елементів пагінації. Кожен його елемент - у форматі ключа "paginationItem"
"paginationItem" - один елемент пагінації. Ключ "itemType" має значення "page" для номера сторінки (сам номер - у ключі "page") або "ellipsis" для розділювача
"object" - об'єкт результату пошуку у форматі об'єкта з відповіді API результатів
"objectSelector" - опція поля-селектора об'єкта, для якої виводиться елемент "Поле об'єкта: Селектори": її ідентифікатор і підпис
"image" - посилання на зображення
Можна повертати власний html у вигляді звичайного рядка або як Node. Дана функція може бути асинхронною. Також можна модифікувати параметр "html", але тоді не треба повертати ніякого значення, достатньо лише застосувати зміни:
Існують події, які сповіщають про застосування нового значення параметрів відображення результатів. До "eventParameters" кожної такої події додатково передається значення "value" - нове застосоване значення:
Подія "filters"
Дана подія сповіщає про застосування нових значень фільтрів. Значення "value" відповідає результату функції "filtersApplied"
Подія "sort"
Дана подія сповіщає про застосування нового значення сортування. Значення "value" відповідає результату функції "sortValue"
Подія "page"
Дана подія сповіщає про застосування нового значення сторінки. Значення "value" відповідає результату функції "pageValue"
Подія "limit"
Дана подія сповіщає про застосування нового значення кількості відображених результатів. Значення "value" відповідає результату функції "limitValue"
Подія "view"
Дана подія сповіщає про застосування нового способу відображення результатів. Значення "value" відповідає результату функції "viewValue"
Подія "scroll"
Дана подія викликається безпосередньо перед прокручуванням сторінки вгору після застосування нових фільтрів, сортування, сторінки, кількості відображених результатів або способу відображення - лише тоді, коли прокручування увімкнене в налаштуваннях шаблону і ціль знайдена на сторінці. До "eventParameters" додатково передаються такі значення:
Можна повернути нову позицію прокручування у вигляді числа (px від верху сторінки), наприклад, щоб врахувати власний хедер. Функція має бути синхронною. Якщо повернуто не число, застосовується позиція за замовчуванням. Сторінка прокручується лише вгору - якщо вона вже вище повернутої позиції, вона залишиться на місці:
SDK функції
SDK функції треба викликати самостійно тоді, коли це необхідно. Їхнє завдання - це повертати дані, або виконувати відповідні дії виключно для одного шаблону
Будь-яка функція викликається наведеним нижче чином. Параметр "functionTemplate" - ідентифікатор шаблону, його передача - не є обов'язковою, у випадку, якщо значення не було передано, тоді функція буде застосована для першого ініціалізованого шаблону, який був згенерований на сторінці:
Виклик функцій для шаблону буде доступний тільки тоді, коли була викликана "init" подія. Нижче наведена частина коду, яка гарантує, що виклик функції дійсно відбудеться:
Функція "filtersApplied"
Дана функція повертає застосовані значення фільтрів для певного шаблону. Якщо фільтри не налаштовані в шаблоні - повертається "undefined"
Функція "filtersCurrent"
Дана функція повертає обрані, але ще не застосовані значення фільтрів(якщо такі є) для певного шаблону. Якщо фільтри не налаштовані в шаблоні - повертається "undefined"
Функція "filter"
Дана функція застосовує передані значення до фільтрів. Словник, який передавається до функції має містити ідентифікатори фільтрів і в залежності від типу фільтра кожен ідентифікатор має бути певного формату
Фільтр типу "Чекбокси" - масив із ідентифікаторів опцій, які мають застосуватися. Всі значення мають бути передані як рядки
Фільтр типу "Радіокнопки" - рядок із ідентифікатором нового значення. Якщо потрібно вказати пусте значення - передається пустий рядок
Фільтр типу "Числовий" - словник із ключами "value", "min", "max", значення яких мають бути переданими як рядки, якщо ж треба застосувати пусте значення - необхідно передати пустий рядок. Не обов'язково передавати всі ключі зі значеннями, достатньо лише ті, які треба застосувати
Детальний приклад словника, який передається в дану функцію, можна отримати за допомогою функцій: "filtersApplied" та "filtersCurrent"
Функції "sort" та "sortValue"
Функція "sort" застосовує передане значення сортування. Значення - рядок з ідентифікатором опції сортування
Функція "sortValue" повертає поточне значення сортування для певного шаблону. Якщо сортування не налаштоване в шаблоні - повертається "undefined"
Функції "page" та "pageValue"
Функція "page" застосовує передане значення сторінки. Значення - число сторінки, або рядок з цим числом
Функція "pageValue" повертає поточне значення сторінки для певного шаблону. Якщо пагінація не налаштована в шаблоні - повертається "undefined"
Функції "limit" та "limitValue"
Функція "limit" застосовує передане значення кількості відображених результатів. Значення - рядок з ідентифікатором відповідної опції, приклад якого можна отримати за допомогою функції "limitValue"
Функція "limitValue" повертає поточне значення кількості відображених результатів для певного шаблону. Якщо пагінація не налаштована в шаблоні - повертається "undefined"
Функції "view" та "viewValue"
Функція "view" застосовує переданий спосіб відображення результатів. Значення - рядок з ключем способу відображення, приклад якого можна отримати за допомогою функції "viewValue"
Функція "viewValue" повертає поточний спосіб відображення результатів для певного шаблону. Якщо способи відображення не налаштовані в шаблоні - повертається "undefined"