Filter

abstract class Filter<T : FilterData>

Abstrakcyjna klasa bazowa dla wszystkich filtrów kolumn raportów.

System filtrowania opiera się na współpracy dwóch komponentów:

  • Filter: Logika filtrowania i generowanie SQL

  • FilterData: Stan filtra (wartości wprowadzone przez użytkownika)

Każdy typ kolumny ma własny filter (StringFilter, NumberFilter, etc.). Filter odpowiada za:

  • Tworzenie domyślnych danych filtra

  • Renderowanie interfejsu użytkownika

  • Generowanie fragmentów zapytań SQL

  • Serializację/deserializację stanu

Type Parameters

T

Typ danych filtra dziedziczący z FilterData.

Inheritors

Constructors

Link copied to clipboard
constructor()

Functions

Link copied to clipboard
private fun applyNullHandling(columnName: String, baseQueryFragment: QueryFragment?, data: T): QueryFragment?
Link copied to clipboard
protected abstract fun buildBaseQueryFragment(columnName: String, data: T): QueryFragment?

Tworzy fragment zapytania SQL na podstawie aktualnego stanu filtra.

Link copied to clipboard
abstract fun createDefaultData(): T

Tworzy domyślny, pusty obiekt danych dla tego filtra.

Link copied to clipboard
fun createQueryFragment(columnName: String, data: T): QueryFragment?
Link copied to clipboard
abstract fun deserializeData(data: JsonObject): T

Deserializuje dane filtra z konfiguracji JSON.

Link copied to clipboard
@Composable
fun FilterModePanel(onEvent: (ReportEvent) -> Unit, columnKey: String, filterData: FilterData)
Link copied to clipboard
@Composable
fun NullHandlingPanel(onEvent: (ReportEvent) -> Unit, columnKey: String, filterData: FilterData)
Link copied to clipboard
@Composable
fun Render(onEvent: (ReportEvent) -> Unit, columnKey: String, data: T)

Główny punkt wejścia do renderowania filtra. Buduje cały UI, włączając w to wspólne panele.

Link copied to clipboard
@Composable
abstract fun RenderFilterUI(onEvent: (ReportEvent) -> Unit, columnKey: String, data: T)

Renderuje interfejs użytkownika specyficzny dla tego typu filtra.