Funkcjonalność¶
Każdy moduł MOŻE zawierać jedną lub kilka funkcjonalności. Funkcjonalność stanowi najbardziej podstawą cześć modułu systemu i składa sie głównie z „bloczka” w schemacie kampanii i formularza.
Parametr | Opis | Wymagane | Uwagi |
---|---|---|---|
label | Nazwa funkcjonalności wyświetlana w systemie | TAK | |
config | Konfiguracja funkcjonalności | TAK | |
node | Konfiguracja bloczka wyświetlanego w schemacie | TAK | |
form | Konfiguracja formularza bloczka | TAK |
Definicja bloczka - node¶
Parametr | Opis | Wymagane | Uwagi |
---|---|---|---|
icon | Ikona wyświetlana na bloczku | NIE | |
tab | Kategoria bloczka | TAK | source - trigger, analitics - filtry, executable - akcje |
endpoints | Lista wejść i wyjść bloczka | TAK |
Lista wejść i wyjść - endpoints¶
Definicja wejść i wyjść bloczka funkcjonalności.
Parametr | Opis | Wymagane | Uwagi |
---|---|---|---|
source | Lista wyjść z bloczka | TAK | |
target | Lista wejść do bloczka | TAK |
Konfiguracja wejścia/wyjścia składa się z następujących parametrów:
Parametr | Opis | Wymagane | Uwagi |
---|---|---|---|
typ | Typ wejścia/wyjścia | TAK | |
params | Obiekt dodatkowych opcji WE/WY | TAK |
Typy wejść¶
- universal
Podstawowy typ wejścia używany w wszystkich bloczkach
Typy wyjść
- universal
Podstawowy typ wejścia, używany gdy potrzeba tylko jednego wyjścia z bloczka.
- plus
Typ wyjścia dla spełnienia warunku. Używany głównie w filtrach.
- minus
Typ wyjścia dla niespełnienia warunku. Używany głównie w filtrach.
Dodatkowe opcje¶
Każde WE/WY bloczka może posiadać następujące dodatkowe opcję
Parametr | Opis | Wymagane | Uwagi |
---|---|---|---|
maxConnections | Maksymalna liczba połączeń | NIE | Domyślnie 1. Aby wyłączyć limit należy wstawić -1 |
Przykład:
{
"endpoints": {
"source": [
{
"type": "universal",
"params": {
"maxConnections": -1
}
}
],
"target": [
{
"type": "universal",
"params": {}
}
]
}
}
Definicja formularza - form¶
Definicja formularza konfiguracji funkcjonalności.
Parametr | Opis | Wymagane | Uwagi |
---|---|---|---|
fields | Lista pól formularza | TAK | |
validation | Konfiguracja walidacji ustawień bloczka | TAK |
Lista pól - fields¶
Pole tekstowe - text, url, email¶
Podstawowe pole tekstowe. Ustawiając typ url lub email, nastąpi wymuszenie poprawności wpisanej wartość dla odpowiedniego typu.
Parametr | Opis | Wymagane | Uwagi |
---|---|---|---|
id | Unikalny identyfikator pola | TAK | |
label | Etykieta pola | TAK | Możliwe tłumaczenia (%TRANSLATE%) |
placeholder | Teks pomocniczy | TAK | Możliwe tłumaczenia (%TRANSLATE%) |
required | Wymagalność pola | NIE | true/false |
maxlength | Maksymalna liczba znaków | NIE |
Przykład:
{
"id": "param1",
"type": "text",
"label": "%TRANSLATE|pole_tekstowe%",
"placeholder": "%TRANSLATE|podpowiedz_pola%",
"required": true,
"maxlength": 30
}
Pole numeryczne - number¶
Pole edycyjne przyjmujące tylko liczby.
Parametr | Opis | Wymagane | Uwagi |
---|---|---|---|
id | Unikalny identyfikator pola | TAK | |
label | Etykieta pola | TAK | Możliwe tłumaczenia (%TRANSLATE%) |
placeholder | Teks pomocniczy | TAK | Możliwe tłumaczenia (%TRANSLATE%) |
required | Wymagalność pola | NIE | true/false |
readonly | Pole tylko do odczytu | NIE | true/false |
min | Minimalna wartość, jaką może przyjąć pole | NIE | |
max | Maksymalna wartość, jaką może przyjąć pole | NIE | |
step | Określa, o jaki zakres może zmienić się wartość pola | NIE |
Przykład:
{
"id": "param1",
"type": "number",
"label": "%TRANSLATE|pole_tekstowe%",
"placeholder": "%TRANSLATE|podpowiedz_pola%",
"required": true,
"min": 1,
"max": 20,
"step": 2,
}
Obszar tekstowy - textarea¶
Wieloliniowe pole tekstowe.
Parametr | Opis | Wymagane | Uwagi |
---|---|---|---|
id | Unikalny identyfikator pola | TAK | |
label | Etykieta pola | TAK | Możliwe tłumaczenia (%TRANSLATE%) |
placeholder | Teks pomocniczy | TAK | Możliwe tłumaczenia (%TRANSLATE%) |
required | Wymagalność pola | NIE | true/false |
rows | Maksymalna liczba wierszy | NIE |
Przykład:
{
"id": "param1",
"type": "textarea",
"label": "%TRANSLATE|obszar_tekstowy%",
"placeholder": "%TRANSLATE|podpowiedz_pola%",
"required": true,
"rows": 5
}
Rozwijana lista - select¶
Parametr | Opis | Wymagane | Uwagi |
---|---|---|---|
id | Unikalny identyfikator pola | TAK | |
label | Etykieta pola | TAK | Możliwe tłumaczenia (%TRANSLATE%) |
required | Wymagalność pola | NIE | true/false |
reload | Określenie czy po zmianie wartości formularz ma się przeładować | NIE | true/false |
values | Opcje do wyboru w polu | TAK | |
default | Domyślnie wybrana opcja | NIE | Identyfikator opcji |
Przykład:
{
"id": "param1",
"type": "select",
"label": "%TRANSLATE|rozwijana_lista%",
"required": true,
"default": "option2",
"values": [
{
"id": "option1",
"label": "%TRANSLATE|opcja1%"
},
{
"id": "option2",
"label": "%TRANSLATE|opcja2%"
},
{
"id": "option3",
"label": "%TRANSLATE|opcja3%"
}
]
}
Przycisk radio - radio¶
Grupa przycisków radio.
Parametr | Opis | Wymagane | Uwagi |
---|---|---|---|
id | Unikalny identyfikator pola | TAK | |
label | Etykieta pola | TAK | Możliwe tłumaczenia (%TRANSLATE%) |
required | Wymagalność pola | NIE | true/false |
values | Opcje do wyboru w polu | TAK | |
default | Domyślnie wybrana opcja | NIE | Identyfikator opcji |
Przykład:
{
"id": "param1",
"type": "radio",
"label": "%TRANSLATE|przycisk_radio%",
"required": true,
"values": [
{
"id": "option1",
"label": "%TRANSLATE|opcja1%"
},
{
"id": "option2",
"label": "%TRANSLATE|opcja2%"
},
{
"id": "option3",
"label": "%TRANSLATE|opcja3%"
}
]
}
Przycisk wyboru - checkbox¶
Grupa przycisków wyboru.
Parametr | Opis | Wymagane | Uwagi |
---|---|---|---|
id | Unikalny identyfikator pola | TAK | |
label | Etykieta pola | TAK | Możliwe tłumaczenia (%TRANSLATE%) |
required | Wymagalność pola | NIE | true/false |
reload | Określenie czy po zmianie wartości formularz ma się przeładować | NIE | true/false |
values | Opcje do wyboru w polu | TAK |
Przykład:
{
"id": "param1",
"type": "checkbox",
"label": "%TRANSLATE|przycisk_wyboru%",
"required": true,
"values": [
{
"id": "option1",
"label": "%TRANSLATE|opcja1%"
},
{
"id": "option2",
"label": "%TRANSLATE|opcja2%"
},
{
"id": "option3",
"label": "%TRANSLATE|opcja3%"
}
]
}
Wybór daty - date¶
Pole wyboru daty i godziny.
Parametr | Opis | Wymagane | Uwagi |
---|---|---|---|
id | Unikalny identyfikator pola | TAK | |
label | Etykieta pola | TAK | Możliwe tłumaczenia (%TRANSLATE%) |
placeholder | Tekst pomocniczy | TAK | Możliwe tłumaczenia (%TRANSLATE%) |
required | Wymagalność pola | NIE | true/false |
format | Format daty/godziny do wpisania | TAK |
|
min_view | Minimalny widok do wybory | NIE |
|
max_view | Maksymalny widok do wyboru | NIE | j.w. |
min_date | Minimalna możliwa data do wyboru | NIE | „now” dla obecnej daty i godziny |
output_format | Format wynikowy | NIE | Domyślnie X, Opcję zgodne z Moment. |
Przykład:
{
"id": "param1",
"type": "date",
"label": "%TRANSLATE|data%",
"placeholder": "%TRANSLATE|podaj_date_i_godzine%",
"label": "%TRANSLATE|data%",
"format": "DD-MM-YYYY HH:mm",
"min_date": "now",
"max_view": "year",
"required": true
}
Wybór dnia tygodnia - week-picker¶
Pole wyboru dnia tygodnia.
Parametr | Opis | Wymagane | Uwagi |
---|---|---|---|
id | Unikalny identyfikator pola | TAK | |
label | Etykieta pola | TAK | Możliwe tłumaczenia (%TRANSLATE%) |
required | Wymagalność pola | NIE | true/false |
Przykład:
{
"id": "param1",
"type": "week-picker",
"label": "%TRANSLATE|dzien_tygodnia%",
"required": true
}
Grupy pól - array¶
Parametr | Opis | Wymagane | Uwagi |
---|---|---|---|
id | Unikalny identyfikator pola | TAK | |
label | Etykieta pola | TAK | Możliwe tłumaczenia (%TRANSLATE%) |
max | Maksymalna liczba grup | TAK |
|
min | Minimalna liczba grup | TAK | |
fields | Lista pól w grupie | TAK | |
addButton | Opcje przycisku dodawania grupy | TAK |
|
Właściwość etykiety pola(label) dla pól w grupie przyjmuję postać tablicy obiektów o następującej postaci:
Parametr | Opis | Wymagane | Uwagi |
---|---|---|---|
index | Indeks grupy | TAK | Numerowane od 0. Należy wstawić false dla pozostałych indeksów |
text | Tresć etykiety pola | TAK | Możliwe tłumaczenia (%TRANSLATE%) |
Przykład:
{
"id": "param1",
"label": "%TRANSLATE|grupa%",
"type": "array",
"min": 1,
"max": {
"rule": 5,
"info": "%TRANSLATE|osiagnales_juz_limit_5_adresow_url%"
},
"init": true,
"addButton": {
"show": true,
"disabled": false,
"label": "%TRANSLATE|dodaj_strone%"
},
"fields": [
{
"id": "param2",
"type": "text",
"label": [
{
"index": 0,
"text": "%TRANSLATE|pierwsze_pole%"
},
{
"index": false,
"text": "%TRANSLATE|pole_tekstowe%"
}
],
"placeholder": "%TRANSLATE|podpowiedz_pola%",
"required": true,
"maxlength": 30
}
]
}
Tekst statyczny - paragraph¶
Parametr | Opis | Wymagane | Uwagi |
---|---|---|---|
id | Unikalny identyfikator pola | TAK | |
content | Treść | TAK | Możliwe tłumaczenia (%TRANSLATE%) |
style | Styl elementu | NIE | Styl jako obiekt |
Przykład:
{
"id": "param1",
"type": "paragraph",
"content": "%TRANSLATE|tresc%",
"style": {
"margin-top": "24px"
}
}
Pola zależne¶
Prosta zależność¶
Jeśli jest potrzeba ukazania pola zależnie od wypełnienia innego pola, należy użyć właściwości show_if, która jest tablicą identyfikatorów od którego zależy pole.
Przykład:
{
"id": "param2",
"type": "select",
"label": "%TRANSLATE|rozwijana_lista%",
"required": true,
"show_if": [
"param1"
],
"default": "option2",
"values": [
{
"id": "option1",
"label": "%TRANSLATE|opcja1%"
},
{
"id": "option2",
"label": "%TRANSLATE|opcja2%"
},
{
"id": "option3",
"label": "%TRANSLATE|opcja3%"
}
]
}
Dla pól select, checkbox oraz radio możliwe jest zdefiniowanie listy pól zależnych od wartosci pola rodzica.
Zależności bez przeładowania - dependent¶
Jeśli nie jest wymagane przeładowanie całego formularza można użyć pola dependent (np. gdy pola zależne nie posiadają zmiennych)
Przyklad:
{
"id": "param1",
"type": "select",
"label": "%TRANSLATE|rozwijana_lista%",
"required": true,
"default": "option2",
"values": [
{
"id": "option1",
"label": "%TRANSLATE|opcja1%"
"dependent": [
{
"id": "param2",
"type": "number",
"label": "%TRANSLATE|pole_tekstowe%",
"placeholder": "%TRANSLATE|podpowiedz_pola%",
"required": true,
"min": 1,
"max": 20,
"step": 2,
}
]
},
{
"id": "option2",
"label": "%TRANSLATE|opcja2%"
},
{
"id": "option3",
"label": "%TRANSLATE|opcja3%"
}
]
}
Zależności z przeładowaniem - sub¶
Jeśli pola zależne posiadają zmienne należy użyć sub. Dodając parametr reload do rodzica następuje wymuszenie przeładowania całego formularza.
Przyklad:
{
"id": "param1",
"type": "select",
"label": "%TRANSLATE|rozwijana_lista%",
"required": true,
"reload": true,
"default": "option2",
"values": [
{
"id": "option1",
"label": "%TRANSLATE|opcja1%"
"sub": [
{
"id": "param2",
"type": "number",
"label": "%TRANSLATE|pole_tekstowe%",
"placeholder": "%TRANSLATE|podpowiedz_pola%",
"required": true,
"min": 1,
"max": 20,
"step": 2,
}
]
},
{
"id": "option2",
"label": "%TRANSLATE|opcja2%"
},
{
"id": "option3",
"label": "%TRANSLATE|opcja3%"
}
]
}
Walidacja pól - fields¶
Konfiguracja bloczka zapisywana jest w obiekcie settings w którym kluczem jest identyfikator pola a wartościa jest wartość uzupełniona danego pola.
{
"settings": {
"param1": "wartosc pola",
"param2": 2
},
}
Przed zapisaniem schematu kampanii, każdy bloczek jest sprawdzany pod kątem poprawności uzupełnienia jego konfiguracji.
Aby zdefiniować konfigurację walidacji należy przygotować model walidacji zgodny z JSON Schema draft-07. W modelu walidacji należy uwzględnić cały obiekt settings.
Przykład:
{
"settings": {
"param1": "wartosc pola",
"param2": 5
}
}
{
"validation": {
"model": {
"type": "object",
"required": [
"settings"
],
"properties": {
"settings": {
"type": "object",
"required": [
"param1",
"param2"
],
"properties": {
"param1": {
"type": "string"
},
"param2": {
"type": "number"
}
}
}
}
}
},
}