DatabaseControl
Kontrolka do wyboru rekordu z bazy danych z listy rozwijanej.
Źródłem jest dowolne zapytanie. Kontrolka owija je podzapytaniem i dokleja wyszukiwanie, sortowanie i stronicowanie, nigdy go nie przepisując - ten sam kontrakt co buildQuery() w report-engine. Joiny, stały filtr czy wyliczany tekst pozycji piszesz więc w SQL-u, a nie w parametrach kontrolki:
"author_id" to DatabaseControl(
label = Tr.Books.Form.author(),
query = QueryFragment("SELECT id, name FROM books.authors"),
displayColumn = "name"
)Wartością kontrolki jest idColumn wybranego wiersza. Cały wiersz - łącznie z kolumnami, których kontrolka nie pokazuje - trafia przy wyborze do ActionContext.payload, więc akcja może z niego wypełnić inne kontrolki.
Parameters
Zapytanie źródłowe. Jego parametry są dołączane do każdego wywołania.
Kolumna wyniku pokazywana jako tekst pozycji.
Kolumna wyniku będąca wartością kontrolki.
Sortowanie listy, domyślnie po displayColumn. idColumn jest zawsze doklejane na końcu jako rozstrzygnięcie remisów: bez tego stronicowanie przez OFFSET nie jest deterministyczne, a przy doklejaniu kolejnych stron pozycja o powtórzonym tekście na granicy strony mogłaby się pojawić dwa razy albo wcale.
Warunek wyszukiwania dla wpisanego tekstu. Brak lambdy albo null z niej oznacza domyślne displayColumn::text ILIKE %tekst%. Ten sam kształt co buildQuickSearch w report-engine.
Liczba pozycji doczytywanych naraz.
Constructors
Properties
Ile odczekać po ostatnim wpisanym znaku, zanim poleci zapytanie.
Flaga określająca, rolę kontrolki w hierarchii.
Validator odpowiedzialny za walidację tej kontrolki. Każdy typ kontrolki dostarcza własną implementację (np. StringValidator). Domyślnie pusta implementacja
Functions
Konwertuje wewnętrzny stan kontrolki (ControlState) na wynik do zapisu (ControlResultData). Może być przesłonięta dla niestandardowych konwersji (np. w RepeatableControl).
Tworzy głęboką kopię wartości początkowej dla bieżącej wartości. Kluczowe dla typów mutowalnych (np. List), aby zmiany w value nie wpływały na initValue.
Abstrakcyjna metoda renderowania specyficznego interfejsu kontrolki. Każdy konkretny typ kontrolki (np. StringControl) musi ją zaimplementować.
Pomocnicza funkcja renderująca błędy walidacji dla tej kontrolki.
Wykonuje zdefiniowane akcje dla tej kontrolki, zazwyczaj po zmianie wartości.
Pobiera wynik kontrolki (wartość bieżącą i początkową) do dalszego przetwarzania. Jeśli kontrolka jest niewidoczna, jej currentValue jest ustawiane na null.
Ustawia referencje do komponentów formularza. Jest to drugi etap inicjalizacji kontrolki, wywoływany przez FormHandler. Daje dostęp do globalnego stanu, schemy i managera błędów. Dodatkowo umożliwia wykonanie dodatkowych kroków inicjalizacyjnych wymaganych przez określone kontrolki
Komponent renderujący wskaźnik ładowania.
Komponent renderujący główną zawartość menu.
Komponent renderujący listę opcji do wyboru.
Funkcja do rejestracji dzieci na globalnej mapie Zawiera referencje do kontrolek zdefiniowanych w kontrolce posiadającej własne
Renderuje kontrolkę w interfejsie użytkownika. Ta metoda jest publicznym API dla FormScreen. Obsługuje logikę widoczności.
Podklasy muszą zaimplementować tę metodę, aby wyrenderować zawartość menu rozwijanego.
Wołane raz na wartość, poza renderowaniem, a wynik zapisuje się w ControlState.displayText.
Komponent renderujący pole wyszukiwania wewnątrz menu.
Ustawia początkową wartość kontrolki i tworzy jej stan (ControlState).
Uruchamia proces walidacji dla tej kontrolki przy użyciu przypisanego walidatora.