# Tworzenie i podpięcie walidatorów skryptowych

## Tworzenie walidatora  <a href="#walidatoryskryptowe-validationscript-tworzeniewalidatora" id="walidatoryskryptowe-validationscript-tworzeniewalidatora"></a>

Walidator skryptowy to jeden z typów artefaktów w repozytorium. Aby dodać walidator skryptowy, należy przejść do zakładki **Biblioteka → Walidatory skryptowe**, a następnie kliknąć w  znajdujący się po prawej stronie przycisk **Dodaj walidator skryptowy.**

<figure><img src="https://1082717226-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2CssJT0zIo4SJQLbSZ6l%2Fuploads%2FojbL83aL5vYYiRnu0yCl%2Fimage.png?alt=media&#x26;token=841f51d4-0e7c-42f7-9fbb-cd4522496078" alt=""><figcaption><p><em><strong>Ilustracja 1.</strong> Dodawanie walidatorów skryptowych</em></p></figcaption></figure>

## Okno edycji <a href="#walidatoryskryptowe-validationscript-oknoedycji" id="walidatoryskryptowe-validationscript-oknoedycji"></a>

Okno edycji w repozytorium zezwala na zmianę treści walidatora oraz zwracanych kluczy i domyślnych komunikatów błędów. W sekcji **Parametry** powinny zostać dodane wszystkie wynikające z treści kodu wejścia walidatora oraz wyjścia (klucze błędów). Okno z parametrami można wyświetlić po kliknięciu w lewym panelu przycisku ![](https://1082717226-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2CssJT0zIo4SJQLbSZ6l%2Fuploads%2FlcsQX63BJLjsjRv1no0n%2Fimage.png?alt=media\&token=3d1b4f04-bad2-4656-b0d6-1520fc814dcf).

Więcej informacji na temat samego edytora znajduje się w [Edytor walidatorów skryptowych](https://docs.eximee.com/budowanie-aplikacji/logika-biznesowa/scriptcode/walidatory-skryptowe-validationscript/edytor-walidatorow-skryptowych).

<figure><img src="https://1082717226-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2CssJT0zIo4SJQLbSZ6l%2Fuploads%2F1dtppZw8rgiRMfjB0YX1%2Fobraz.png?alt=media&#x26;token=d2c96196-58ba-44f1-aac9-9553a892c89e" alt=""><figcaption><p><em><strong>Ilustracja 2.</strong> Okno edycji walidatora skryptowego</em></p></figcaption></figure>

## Podpięcie na wniosku <a href="#walidatoryskryptowe-validationscript-podpiecienawniosku" id="walidatoryskryptowe-validationscript-podpiecienawniosku"></a>

Podpięcie walidatora skryptowego na wniosku nie różni się od podpięcia standardowego walidatora. Dla konkretnego komponentu w panelu **Właściwości** należy wybrać **Jakość danych → Walidatory → Dodaj walidator**, a następnie wyszukać jego nazwę. W zakładce **Parametry wejściowe**  należy wybrać odpowiedni komponent w polu **Wybierz komponent lub stałą**. \
Przełącznik znajdujący się w kolumnie ***Wołaj gdy pusty*** odpowiada za wywołanie walidatora, nawet gdy we wskazanym polu nie ma wartości (np. w przypadku usunięcia wartości z pola tekstowego).

<figure><img src="https://1082717226-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2CssJT0zIo4SJQLbSZ6l%2Fuploads%2Fc8AxoQJA5ifkjQjEfbll%2Fimage.png?alt=media&#x26;token=db68e283-e499-4cd4-8fba-e242c6644d65" alt=""><figcaption><p><em><strong>Ilustracja 3.</strong> Podpięcie walidatora skryptowego na wniosku</em></p></figcaption></figure>

## Tworzenie komunikatu błędu walidatora <a href="#walidatoryskryptowe-validationscript-tworzeniekomunikatubleduwalidatora" id="walidatoryskryptowe-validationscript-tworzeniekomunikatubleduwalidatora"></a>

Treść komunikatu błędu (tłumaczenia klucza) walidatora skryptowego musi zostać zdefiniowana w komponencie/wniosku - po podpięciu walidatora. Dodanie treści komunikatu w skrypcie nie jest błędem, ale nie będzie ona widoczna w oknie edycji komponentu/wniosku. Po podpięciu walidatora zarówno klucz, jak i jego tłumaczenie, będą wyświetlały nazwę klucza zdefiniowaną w treści walidatora skryptowego:

<figure><img src="https://1082717226-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2CssJT0zIo4SJQLbSZ6l%2Fuploads%2FwWKQM0nWS9hQtTcy3tHg%2Fimage.png?alt=media&#x26;token=a35b71eb-59fe-4471-8ab5-bf1196dc207c" alt=""><figcaption><p><em><strong>Ilustracja 4.</strong> Tłumaczenie klucza walidatora skryptowego</em></p></figcaption></figure>

\
Należy edytować kolumnę z tłumaczeniem i wpisać do niej treść komunikatu, który ma się pojawić w przypadku zwrócenia przez walidator określonego klucza komunikatu błędu.

Jeśli zajdzie konieczność wykorzystania zmiennych w komunikacie błędu, należy wymienić te zmienne w kodzie jako parametry (parameters: \[wartosc1, wartosc2 itd.]) , a następnie odwołać się do nich w komunikacie błędu w komponencie/wniosku w następujący sposób: {0} dla pierwszego parametru, {1} dla drugiego parametru, {2} dla trzeciego itd.

```
let minimalnyWiek = 18;
let maksymalnyWiek = 25;
if (minimalnyWiek > roznicaLat || maksymalnyWiek < roznicaLat) {
            return [{
            'key': 'pl.LCL_dataUrodzenia.pozaPrzedzialem',
            'parameters': [minimalnyWiek, maksymalnyWiek, 'Ten wniosek mogą złożyć osoby w wieku {0}-{1} lat.']               
        }];

```

<figure><img src="https://1082717226-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2CssJT0zIo4SJQLbSZ6l%2Fuploads%2Fq0QrUGwg36VKDMBy6Hs6%2Fimage.png?alt=media&#x26;token=fd7f6f5e-ab88-4e76-9b12-b1359442d05e" alt=""><figcaption><p><em><strong>Ilustracja 5.</strong> Tłumaczenie klucza walidatora skryptowego zasilone zmiennymi</em></p></figcaption></figure>

<figure><img src="https://1082717226-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2CssJT0zIo4SJQLbSZ6l%2Fuploads%2FCXXOfiYPEMMv0VGs0ceS%2Fimage.png?alt=media&#x26;token=394a11cf-a017-4418-822c-4e57c1fc6484" alt=""><figcaption><p><em><strong>Ilustracja 6.</strong> Treść komunikatu błędu widoczna na wniosku</em></p></figcaption></figure>
