# Edytor skryptów

## Widok skryptu <a href="#edytorskryptow-widokskryptuedycja" id="edytorskryptow-widokskryptuedycja"></a>

W głównym widoku skryptu widoczna jest wybrana wersja skryptu. W panelu bocznym znajdują się przyciski umożliwiające wysunięcie panelu parametrów skryptu, testów jednostkowych oraz logów.

Przycisk uruchomienia skryptu znajduje się w zakładce **Parametry**.

<figure><img src="https://1082717226-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2CssJT0zIo4SJQLbSZ6l%2Fuploads%2F0TmsJe1PUFNwZGF50Zeh%2Fobraz.png?alt=media&#x26;token=e69a3cb1-113a-4bf2-8614-f3744e20ee25" alt=""><figcaption><p><em><strong>Ilustracja 1.</strong> Widok skryptu z wysuniętym panelem "Parametry"</em></p></figcaption></figure>

## Edycja skryptu  <a href="#edytorskryptow-edycjaskryptu" id="edytorskryptow-edycjaskryptu"></a>

Praca nad skryptem możliwa jest dzięki edytorowi Monaco (edytor wspiera język JavaScipt).

Początkowo działa on w trybie **read-only**. Aby rozpocząć pracę należy kliknąć przycisk **Edytuj skrypt** znajdujący się na końcu paska nawigacyjnego.

<figure><img src="https://1082717226-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2CssJT0zIo4SJQLbSZ6l%2Fuploads%2FpDsYRgQPl4rH3dHk8U3r%2Fobraz.png?alt=media&#x26;token=8cc4b5a5-030f-483b-9eb5-bdcd52295c0f" alt=""><figcaption><p><em><strong>Ilustracja 2.</strong> Karta skryptu</em></p></figcaption></figure>

Instrukcja "jak pisać skrypt serwisy" znajduje się w [Skrypty (scriptService)](https://docs.eximee.com/budowanie-aplikacji/logika-biznesowa/scriptcode/skrypty-scriptservice) oraz [Dobre praktyki ScriptCode](https://docs.eximee.com/budowanie-aplikacji/logika-biznesowa/scriptcode/dobre-praktyki-scriptcode).

## Zmienne w ScriptCode w zakresie bloku <a href="#edytorskryptow-zmiennewscriptcodewzakresiebloku" id="edytorskryptow-zmiennewscriptcodewzakresiebloku"></a>

Platforma Eximee wymaga, aby zmienne w ScriptCode były zadeklarowane w zakresie bloku.

Brak deklaracji zmiennej spowoduje błąd skryptu.

## Parametry  <a href="#edytorskryptow-parametryparametry" id="edytorskryptow-parametryparametry"></a>

Modyfikacja parametrów również odbywa się w Monaco (edytor wspiera notacje JSON).&#x20;

Przy pierwszym wejściu na niepusty skrypt parametry zostaną automatycznie wydedukowane (jeżeli jest to możliwe) z samej zawartości skryptu.&#x20;

Pod edytorem znajduje się przycisk pozwalający na uruchomienie skryptu z parametrami podanymi w sekcji **Dane testowe.**

<figure><img src="https://1082717226-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2CssJT0zIo4SJQLbSZ6l%2Fuploads%2FZGhTCgC3aErwubzZHQep%2Fimage.png?alt=media&#x26;token=7bd8a94c-556f-42c3-b412-bef8936ff85f" alt=""><figcaption><p><em><strong>Ilustracja 3.</strong>  Karta parametrów</em></p></figcaption></figure>

Parametry uzupełnione w sekcji **Dane testowe** nie są częścią samego skryptu i nie zapiszą się w danej jego wersji!

## Edycja wejść/wyjść <a href="#edytorskryptow-edycjawejsc-wyjscio" id="edytorskryptow-edycjawejsc-wyjscio"></a>

W tym miejscu możemy dodać lub usunąć wejścia/wyjścia skrypt serwisu.&#x20;

Dodanie lub usunięcie wejścia spowoduje również aktualizację parametrów uruchomieniowych, więc po usunięciu parametru stracimy jego ewentualne mapowanie w miejscu podpięcia.

<figure><img src="https://1082717226-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2CssJT0zIo4SJQLbSZ6l%2Fuploads%2FG7THbWAG1fnmjd43jtgB%2Fimage.png?alt=media&#x26;token=d832a322-70d0-47c2-a7e7-fa20ca209253" alt=""><figcaption><p><em><strong>Ilustracja 4.</strong> Pola edycji wejść/wyjść</em></p></figcaption></figure>

## Wynik skryptu  <a href="#edytorskryptow-wynikskryptuwynik" id="edytorskryptow-wynikskryptuwynik"></a>

W dolnej części ekranu pojawia się dodatkowe okno. Znajdziemy tam wszelkie informacje na temat uruchomionego skryptu:&#x20;

1. Czas działania skryptu podany w ms.
2. Logi z wykonania skryptu w postaci:

   | `[CZAS_OPERACJI] [TYP_OPERACJI]: Tekst operacji` |
   | ------------------------------------------------ |

   Dla przykładu:

   | `[14:31:22,976] [GET_DATA]: Called getData("GesCustomComponent1","data") and resulted with data z cc` |
   | ----------------------------------------------------------------------------------------------------- |
3. &#x20;Wynik wołania skryptu (w panelu logów), czyli wszystkie wartości zdefiniowane jako wyjściowe (output) podczas tworzenia skrypt serwisu w postaci KLUCZ : WARTOŚĆ.<br>

   <figure><img src="https://1082717226-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2CssJT0zIo4SJQLbSZ6l%2Fuploads%2Fv1eNGJCtvc7hNEAZDzLM%2Fimage.png?alt=media&#x26;token=be3b5bfa-5dcf-444b-9e5d-8de1e2fb069c" alt=""><figcaption><p><em><strong>Ilustracja 5.</strong>  Karta wyniku skryptu</em></p></figcaption></figure>

## Edytor Monaco <a href="#edytorskryptow-edytormonacomonaco" id="edytorskryptow-edytormonacomonaco"></a>

Edytor użyty w projekcie jest pełnoprawnym edytorem, co za tym idzie oferuje nam zestaw skrótów wspomagających pisanie. Lista najczęściej używanych skrótów klawiszowych:&#x20;

* **Ctrl + Shift + I** - formatowanie kodu. Zawsze po napisaniu jakiegoś fragmentu warto go sformatować, zwiększa to czytelność oraz ułatwia pracę.&#x20;
* **Ctrl + Shift + O** - skok do zmiennej/funkcji. Jest to wyszukiwanie na sterydach. W momencie, gdy skrypty urosną do rozmiarów, gdzie nie mieszczą się na jednej stronie, warto korzystać z takich skrótów, aby szybciej poruszać się po kodzie.
* **Ctrl + Shift + K** - usunięcie całej linii.
* **Ctrl + F2** - wyszukanie i podmienienie konkretnego symbolu (nazwy funkcji, zmiennej).
* **Ctrl + G** - skok do linii.
* **Ctrl + Shift + Alt + Strzałka w górę/dół** - sklonowanie kursora na górze/dole.&#x20;
* **F1** - lista wszystkich dostępnych skrótów oraz opcji edytora.&#x20;

## Testy <a href="#edytorskryptow-testy" id="edytorskryptow-testy"></a>

Edytor posiada możliwość zdefiniowania [scenariuszy testowych](https://docs.eximee.com/budowanie-aplikacji/logika-biznesowa/scriptcode/testy-jednostkowe-skryptow).

### Błędy w trakcie uruchomienie testowego

Jeśli skrypt zawiera błędy, w trakcie uruchomienia testowego błąd taki zostanie odlogowany w konsoli pod edytorem. W komunikacie zawarty będzie powód i miejsce w kodzie wystąpienia błędu.

<figure><img src="https://1082717226-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2CssJT0zIo4SJQLbSZ6l%2Fuploads%2FZFoY32oGd8Olk5TxH1BN%2Fobraz.png?alt=media&#x26;token=1a4bb1b1-77e4-4370-af18-ca5585c48107" alt=""><figcaption><p><em><strong>Ilustracja 6.</strong> Błąd wywołania testowego</em></p></figcaption></figure>
