# Słowniki warunkowe

{% hint style="info" %}
Dostępność funkcjonalności zależy od licencji i może nie być dostępna we wszystkich wdrożeniach.
{% endhint %}

Słowniki warunkowe są opcjonalnym wariantem zwykłych słowników. Za pomocą danych przekazanych do słownika istnieje możliwość napisania warunków JavaScript, które zadecydują o widoczności wybranych wartości ze słownika. Przykładowo podzbiór miast ze słownika miast na podstawie zadanego województwa.

## Definicja słownika

Okno definicji warunkowego słownika oprócz standardowych elementów będzie miało wypełnioną sekcję **Warunki widoczności**, **Parametry wejściowe** oraz klucze i wartości powiązane warunkami wyświetlania.

## Definicje warunków

Warunki dodajemy w panelu bocznym **Warunki widoczności**, który wysunie się po kliknięciu w lewej belce przycisku ![](https://content.gitbook.com/content/2CssJT0zIo4SJQLbSZ6l/blobs/52kLOG6fXblhj6YPXW9c/4s_files/image2022-12-14_13-54-24.png).

Każdy wiersz oznacza jeden warunek, indeks pozwala powiązać warunek z kluczami i wartościami słownika. Warunek powinien być opisany wyrażeniem JavaScript, wykorzystując dane wejściowe z mapowania.

![Ilustracja 1. Przykładowe warunki zdefiniowane dla słownika](https://content.gitbook.com/content/2CssJT0zIo4SJQLbSZ6l/blobs/bN4hkp0L8IskowkYsR95/4s_files/image2022-12-14_13-55-29.png)

## Mapowanie pól wejściowych

W panelu **Parametry wejściowe**, który wysunie się po kliknięciu w lewej belce przycisku ![](https://content.gitbook.com/content/2CssJT0zIo4SJQLbSZ6l/blobs/uHnFVFWsxZRkHqbdPcJS/4s_files/image2022-12-14_13-56-43.png), możemy określić dane wejściowe do słownika. Kolumna **Zmienna** oznacza nazwę zmiennej, której będziemy mogli używać w wyrażeniach JavaScript definiując warunki, a **Alias** oznacza nazwę zmiennej widoczną przy podpinaniu słownika jako źródła danych.

![Ilustracja 2. Panel z przykładowymi parametrami wejściowymi](https://content.gitbook.com/content/2CssJT0zIo4SJQLbSZ6l/blobs/W1MjlIhrGDnEk2tINFAH/4s_files/image2022-12-14_13-58-21.png)

## Mapowanie warunków na klucze

Każdy warunek zdefiniowany wcześniej ma swoje odzwierciedlenie w tabeli kluczy i wartości jako kolumna, zgodnie z nadanym indeksem. Zaznaczenie checkboxa na przecięciu wiersza z kluczem i kolumną z warunkiem oznacza, że wartość będzie widoczna, gdy warunek zostanie zewaluowany na true.

![Ilustracja 3. Przykład wierszy słownika ze zmapowanymi warunkami](https://content.gitbook.com/content/2CssJT0zIo4SJQLbSZ6l/blobs/rTye9RWpt9s7xBedkLMy/4s_files/image2023-4-7_7-32-3.png)

## Ewaluacja warunków

Warunki są ewaluowane w kolejności wynikającej z indeksu (co ma przełożenie na: od lewej do prawej w tabeli kluczy), przy czym **pierwszy warunek który ewaluuje się na true determinuje zbiór wyświetlanych wartości**.

## Użycie warunkowego słownika

Słownik warunkowy podpinamy w taki sam sposób jak słownik zwykły (instrukcja: [Podpięcie słownikowego źródła danych](https://docs.eximee.com/budowanie-aplikacji/interfejs-uzytkownika/formularze/praca-z-komponentami-bazowymi/zasilanie-wartosciami-z-zewnetrznych-zrodel/podpiecie-slownikowego-zrodla-danych)). Jedyna różnica polega na tym, że należy dodatkowo wskazać mapowania parametrów wejściowych na komponenty:

![Ilustracja 4. Przykład mapowania pól wejściowych słownika na komponenty wniosku](https://content.gitbook.com/content/2CssJT0zIo4SJQLbSZ6l/blobs/dVtVjHfeF543r7duQ4cx/4s_files/image2022-12-14_14-3-44.png)

{% hint style="info" %}
Wnioski demo: demoSlownikiWarunkowe, demoCombobox
{% endhint %}
