# Akcje

## Sekcja Akcje <a href="#akcje-sekcjaakcje" id="akcje-sekcjaakcje"></a>

Sekcja **Akcje** umożliwia dodanie do wniosku akcji dla wybranych komponentów inicjujących zdarzenia.

Aby zdefiniować akcję na wniosku należy w pierwszej kolejności dodać w formularzu komponent, dla którego chcemy akcję zdefiniować (np. [Trigger](https://github.com/Consdata/eximee-docs/blob/main/budowanie-aplikacji/interfejs-uzytkownika/formularze/biblioteka-komponentow-bazowych/trigger.md)) oraz komponent, którego akcja dotyczy (np. [Popup](https://github.com/Consdata/eximee-docs/blob/main/budowanie-aplikacji/interfejs-uzytkownika/formularze/biblioteka-komponentow-bazowych/popup.md)).

<figure><img src="https://1082717226-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2CssJT0zIo4SJQLbSZ6l%2Fuploads%2FoKpWsBzXE4egPxT2dIR7%2Fimage.png?alt=media&#x26;token=ce70d96b-e365-4c64-99a9-ae238872f415" alt=""><figcaption><p><em><strong>Ilustracja 1.</strong> Sekcja ze zdefiniowanymi akcjami</em></p></figcaption></figure>

## Dodanie akcji <a href="#akcje-dodanieakcji" id="akcje-dodanieakcji"></a>

Po kliknięciu przycisku **Dodaj akcję** na górze sekcji nad pozostałymi akcjami (o ile już jakieś były na wniosku), zostaje dodany pusty wiersz, w którym wybieramy najpierw źródło akcji w polu **Wybierz źródło akcji**. Na liście dostępne będą tylko te komponenty wniosku, dla których można zdefiniować akcję.

<figure><img src="https://1082717226-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2CssJT0zIo4SJQLbSZ6l%2Fuploads%2FVIqtOlkqGYERiNzuocFQ%2Fimage.png?alt=media&#x26;token=c0f854f2-8a52-4093-9f4d-804b882f3555" alt=""><figcaption><p><em><strong>Ilustracja 2.</strong> Wiersz definiowania nowej akcji</em><br></p></figcaption></figure>

***Ilustracja 2.** Wiersz definiowania nowej akcji*<br>

<figure><img src="https://1082717226-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2CssJT0zIo4SJQLbSZ6l%2Fuploads%2FKYozZ9SWdFW4g18NwWw6%2Fimage.png?alt=media&#x26;token=983d6f37-d761-4fe0-8fd4-51fd2e320a55" alt=""><figcaption><p><em><strong>Ilustracja 3.</strong> Wiersz przykładowej akcji SHOW_POPUP po kliknięciu checkboxa</em></p></figcaption></figure>

## Definiowanie zdarzenia dla przycisku Dalej <a href="#akcje-definiowaniezdarzeniadlaprzyciskudalej" id="akcje-definiowaniezdarzeniadlaprzyciskudalej"></a>

Podczas definiowania akcji na kliknięcie przycisku Dalej należy pamiętać, aby zapewnić także akcję, która wykona się, gdy podany dla akcji warunek nie zostanie spełniony, ponieważ inaczej użytkownik nie mógłby przejść na kolejną stronę przy niespełnionym warunku dla zdarzenia. Wystarczy dodać akcję z odwrotnym warunkiem dla akcji FORWARD\_PAGE.

<figure><img src="https://1082717226-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2CssJT0zIo4SJQLbSZ6l%2Fuploads%2FqmLVFLd4I66Yb8DTCDIB%2Fimage.png?alt=media&#x26;token=cdcaf690-a374-42a2-8e9d-85f330012c7b" alt=""><figcaption><p><em><strong>Ilustracja 4.</strong> Przykład akcji otwarcia popupa dla klikniętego przycisku Dalej na Page1</em></p></figcaption></figure>

<figure><img src="https://1082717226-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2CssJT0zIo4SJQLbSZ6l%2Fuploads%2FY3P7z4Ue3YGVQwPWEDrW%2Fimage.png?alt=media&#x26;token=96f8efff-340f-40d4-a064-9031e255dab8" alt=""><figcaption><p><em><strong>Ilustracja 5.</strong> Przykład akcji dla odwrotnego warunku pozwalającego przejść dalej w standardowy sposób ze strony Page1</em></p></figcaption></figure>

{% hint style="info" %}
Wniosek demo: demoPopup
{% endhint %}

## Definiowanie akcji dla komponentu Oświadczenia <a href="#akcje-definiowanieakcjidlakomponentuoswiadczenia" id="akcje-definiowanieakcjidlakomponentuoswiadczenia"></a>

Dla [Oświadczenia - Statements](https://github.com/Consdata/eximee-docs/blob/main/budowanie-aplikacji/interfejs-uzytkownika/formularze/biblioteka-komponentow-bazowych/oswiadczenia-statements/README.md) w konkretnym oświadczeniu należy w **actionBindings** dodać zdarzenie (Event) równe **EDIT**. Oświadczenie, które będzie takie zdarzenie miało zdefiniowane będzie miało wyświetloną specjalną opcję edycji danych, której kliknięcie wyświetli popup.

<figure><img src="https://1082717226-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2CssJT0zIo4SJQLbSZ6l%2Fuploads%2FSznVQFNfun8wb2khGvz0%2Fimage.png?alt=media&#x26;token=77986c2b-0b18-4ed9-bde5-52c5b37be4ad" alt=""><figcaption><p><em><strong>Ilustracja 6.</strong> Przykład oświadczenia ze zdefiniowaną akcją</em></p></figcaption></figure>

{% hint style="info" %}
Wniosek demo: demoStatementsPopup
{% endhint %}

## Zdefiniowane zdarzenia dla Slidera <a href="#akcje-zdefiniowanezdarzeniadlaslidera" id="akcje-zdefiniowanezdarzeniadlaslidera"></a>

[Slider](https://github.com/Consdata/eximee-docs/blob/main/budowanie-aplikacji/interfejs-uzytkownika/formularze/biblioteka-komponentow-bazowych/slider.md) jest w stanie obsłużyć zdarzenie zdefiniowane w walidatorze (musi on w komunikacie błędu wysłać akcję EMIT\_EVENT). Podczas dodawania akcji należy w liście rozwijanej akcji wybrać pozycję z listy dopuszczalnych zdarzeń, która z kolei jest zdefiniowana w implementacji walidatora.

## Zdefiniowane zdarzenia dla pomocy kontekstowej Pola tekstowego i Pola wyboru wartości z listy <a href="#akcje-zdefiniowanezdarzeniadlapomocykontekstowejpolatekstowegoipolawyboruwartoscizlisty" id="akcje-zdefiniowanezdarzeniadlapomocykontekstowejpolatekstowegoipolawyboruwartoscizlisty"></a>

Dla komponentów: [Pole tekstowe - TextField](https://github.com/Consdata/eximee-docs/blob/main/budowanie-aplikacji/interfejs-uzytkownika/formularze/biblioteka-komponentow-bazowych/pole-tekstowe-textfield.md) oraz [Pole wyboru wartości z listy - Combobox](https://github.com/Consdata/eximee-docs/blob/main/budowanie-aplikacji/interfejs-uzytkownika/formularze/biblioteka-komponentow-bazowych/pole-wyboru-wartosci-z-listy-combobox.md) zawierających etykietę (label) można zdefiniować akcję otwarcia popupa na kliknięcie w przycisk pomocy kontekstowej. Przed zdefiniowaniem akcji należy dodać do komponentu pomoc kontekstową (tooltip).

<figure><img src="https://1082717226-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2CssJT0zIo4SJQLbSZ6l%2Fuploads%2FDKuDAFubgtsJsltD4fgX%2Fimage.png?alt=media&#x26;token=d09ba41c-cea5-4093-b8a8-c272ceb020f5" alt=""><figcaption><p><em><strong>Ilustracja 7.</strong> Przykład akcji zdefiniowanej dla tooltipa komponentu Pole tekstowe</em></p></figcaption></figure>

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

## PageService jako akcja <a href="#akcje-pageservicejakoakcja" id="akcje-pageservicejakoakcja"></a>

Jeśli na wniosku zdefiniujemy PageService to możemy go wybrać w sekcji **Właściwości** - po jego wybraniu możliwe jest wybranie akcji CALL.

## Akcja przekierowania na zdefiniowany returnUrl <a href="#akcje-akcjaprzekierowanianazdefiniowanyreturnurl" id="akcje-akcjaprzekierowanianazdefiniowanyreturnurl"></a>

Istnieje możliwość podpięcia akcji (np. na kliknięcie Triggera), która uruchomi przekierowanie na ***returnUrl*** (REDIRECT\_TO\_RETURN\_URL), którego wartość pobierana jest ze zmiennej sesyjnej o takiej nazwie (zmienna sesyjna ***returnUrl*** musi być exposed).

## Akcja przekierowania na zdefiniowany URL <a href="#akcje-akcjaprzekierowanianazdefiniowanyurl" id="akcje-akcjaprzekierowanianazdefiniowanyurl"></a>

Istnieje możliwość podpięcia akcji (np. na kliknięcie Triggera), która uruchomi przekierowanie na podany przez użytkownika adres URL, którego wartość jest ustalana w momencie definiowania akcji - REDIRECT.

Akcja wykona się nawet jeżeli jakiś walidator podświetli jakieś dane jako niewłaściwe.

## Akcja parkowania po wejściu na konkretną stronę <a href="#akcje-akcjaparkowaniapowejsciunakonkretnastrone" id="akcje-akcjaparkowaniapowejsciunakonkretnastrone"></a>

Istnieje możliwość zdefiniowania akcji parkowania po wejściu na konkretną stronę: PARK\_FORM\_WITH\_PROVIDED\_HASH. Należy wtedy określić akcję dla komponentu strony (np. ze zdarzeniem ON\_PAGE\_ENTER). Aby mechanizm parkowania zadziałał, należy pamiętać o ustawieniu wartości zmiennej sesyjnej ***hashForUnparking***, która jest potrzebna do odparkowania wniosku.

## Akcja wejścia na nowy wniosek zasilonym modelem danych z podanego procesu <a href="#akcje-akcjawejsciananowywniosekzasilonymmodelemdanychzpodanegoprocesu" id="akcje-akcjawejsciananowywniosekzasilonymmodelemdanychzpodanegoprocesu"></a>

Istnieje możliwość zdefiniowania akcji wejścia na nowy wniosek, który na start zostanie zasilony modelem danych z konkretnego procesu. Należy wtedy określić akcję START\_FORM\_BASED\_ON\_PROCESS na komponencie Trigger. W ramach tej akcji należy skonfigurować nazwę wniosku (**formName)** oraz **processInstanceId,** z którego zostanie pobrany model. Pamiętaj, że **processInstanceId** musi być wskazaniem na zmienną sesyjną, ponieważ tylko **zmienna sesyjna jest obsługiwana.**\
Aktualnie konfiguracja akcji nie jest możliwa z poziomu Designera, należy wykorzystać zakładkę "Źródło". Poniżej przykładowa konfiguracja.

```
<formAction id="5392a77a-5b2b-4664-b918-b2b65004736f" handler="START_FORM_BASED_ON_PROCESS" event="CLICK">
  <formActionSources>
    <formActionSource>GesTrigger1</formActionSource>
  </formActionSources>
  <formActionParameters>
    <formActionParameter name="formName" value="esg_test_preview_wniosek"/>
    <formActionParameter name="processInstanceId" value="nazwaZmiennejSesyjnej"/>
  </formActionParameters>
</formAction>
```

## Akcje - startowanie Aplikacji <a href="#title-text" id="title-text"></a>

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

Akcja START\_APPLICATION jest odpowiedzialna za startowanie procesu ustawionego jako punkt startowy.

<figure><img src="https://1082717226-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2CssJT0zIo4SJQLbSZ6l%2Fuploads%2Fc5QpqKiTAKWBcL6EyyTN%2Fimage.png?alt=media&#x26;token=f9302772-ab76-439f-959f-a9a49d438e11" alt=""><figcaption><p><em><strong>Ilustracja 8.</strong></em> <em>Wiersz definiowania akcji START_APPLICATION</em></p></figcaption></figure>

Akcja START\_APPLICATION przyjmuje następujące parametry:

|                                    |                                                                                                                            |
| ---------------------------------- | -------------------------------------------------------------------------------------------------------------------------- |
| Nazwa aplikacji                    | Wskazanie procesu, który ma zostać wystartowany.                                                                           |
| Przekieruj na kolejny krok procesu | Warunek JAVASCRIPT. Wskazanie czy ma nastąpić automatyczne przekierowanie na kolejnego user taska. Domyślna wartość: false |

## Przykładowe komponenty wysyłające zdarzenia <a href="#akcje-przykladowekomponentywysylajacezdarzenia" id="akcje-przykladowekomponentywysylajacezdarzenia"></a>

| Komponent (Źródło akcji)                       | Możliwe zdarzenie | Opis                                                                |
| ---------------------------------------------- | ----------------- | ------------------------------------------------------------------- |
| Page (strona)                                  | NEXT              | Akcja na kliknięcie przycisku dalej na stronie wniosku              |
| <p><br></p>                                    | ON\_EXIT          | Akcja na wyjście ze strony                                          |
| <p><br></p>                                    | ON\_PAGE\_ENTER   | Akcja wejścia na konkretną stronę                                   |
| <p><br></p>                                    | SAVE\_DRAFT       | Akcja na kliknięcie przycisku zapisu tymczasowego wniosku           |
| Popup                                          | SAVE              | Akcja na kliknięcie przycisku zapisu na komponencie Popup           |
| <p><br></p>                                    | HIDDEN            | <p><br></p>                                                         |
| Oświadczenia (Statements)                      | EDIT              | Akcja na kliknięcie przycisku edycji na komponencie oświadczeń      |
| Oświadczenia zasilane z usługi (FedStatements) | EXPAND\_STATEMENT | Akcja na kliknięcie rozwijacza na komponencie zasilanych oświadczeń |
| Pole tekstowe (GesTextField)                   | TOOLTIP\_CLICKED  | Akcja na kliknięcie tooltipa komponentu                             |
| Pole wyboru wartości z listy (GesCombobox)     | TOOLTIP\_CLICKED  | Akcja na kliknięcie tooltipa komponentu                             |
| <p><br></p>                                    | VALUE\_CHANGED    | Akcja na zmianę wartości comboboxa                                  |
| Trigger                                        | CLICK             | Akcja na kliknięcie komponentu                                      |
| Checkbox                                       | CLICK\_MORE\_INFO | Akcja na kliknięcie linku more info komponentu checkbox             |
| <p><br></p>                                    | CHECK             | Akcja na zaznaczenie checkboxa                                      |
| <p><br></p>                                    | UNCHECK           | Akcja na odznaczenie checkboxa                                      |
| RadioGroup                                     | VALUE\_CHANGED    | Akcja na zmianę wartości komponentu                                 |
| TileGroup                                      | VALUE\_CHANGED    | Akcja na zmianę wartości komponentu                                 |
| TileGroup                                      | TILE\_CLICKED     | Akcja na kliknięcie pojedynczego kafla w grupie kafli               |

## Przykładowe komponenty odbierające zdarzenia <a href="#akcje-przykladowekomponentyodbierajacezdarzenia" id="akcje-przykladowekomponentyodbierajacezdarzenia"></a>

| Komponent obsługujący akcje                    | Rodzaj akcji formularza          | Opis                                                                                                                       |
| ---------------------------------------------- | -------------------------------- | -------------------------------------------------------------------------------------------------------------------------- |
| Checkbox                                       | CHECK                            | Zaznaczenie checkboxa                                                                                                      |
| <p><br></p>                                    | UNCHECK                          | Odznaczenie checkboxa                                                                                                      |
| <p><br></p>                                    | TOGGLE                           | Zmiana wartości checkboxa na przeciwną                                                                                     |
| Oświadczenia zasilane z usługi (FedStatements) | CHECK\_FED\_STATEMENT            | Zaznacza wymagane oświadczenie z listy oświadczeń                                                                          |
| Page (strona)                                  | FORWARD\_PAGE                    | Przejście do następnej strony (tożsame z kliknięciem przycisku **Dalej**, **Wyślij wniosek** itp.)                         |
| <p><br></p>                                    | BACKWARD\_PAGE                   | Przejście do poprzedniej strony (tożsame z kliknięciem przycisku **Cofnij**, **Powróć** itp.)                              |
| <p><br></p>                                    | REDIRECT\_TO\_RETURN\_URL        | Przekierowanie na url zdefiniowany w zmiennej sesyjnej ***returnUrl***                                                     |
| <p><br></p>                                    | REDIRECT                         | Przekierowanie na url zdefiniowany w polu dostępnym po wyborze typu akcji REDIRECT                                         |
| <p><br></p>                                    | SAVE\_DRAFT                      | Zapis tymczasowy wniosku                                                                                                   |
| PageService                                    | CALL                             | Wywołanie usługi                                                                                                           |
| Popup                                          | SHOW\_POPUP                      | Otwarcie komponentu popup zdefiniowanego w polu **Komponent obsługujący akcję**                                            |
| <p><br></p>                                    | CLOSE\_POPUP                     | Zamknięcie komponentu popup                                                                                                |
| <p><br></p>                                    | SAVE\_POPUP                      | Zapisanie komponentu popup                                                                                                 |
| Załączniki (Uploadfile)                        | CLEAR\_UPLOAD\_FILE              | Czyszczenie dodanego załącznika (działa dla akcji ON\_PAGE\_ENTER)                                                         |
| Form                                           | PARK\_FORM\_WITH\_PROVIDED\_HASH | Parkowanie wniosku                                                                                                         |
| Trigger                                        | START\_APPLICATION               | Startowanie procesu (procesu ustawionego jako punkt startowy) wskazanej w parametrze **applicationName** aplikacji         |
| Trigger                                        | START\_FORM\_BASED\_ON\_PROCESS  | Akcja wejścia na nowy wniosek (parametr formName) zasilony model z podanej instancji procesu (parametr processInstanceId). |

{% hint style="info" %}
Wnioski demo: demoAkcje, demoTooltipy
{% endhint %}
