ReportHandler

class ReportHandler(reportStructureBuilder: ReportStructureBuilder, val handlerScope: CoroutineScope = CoroutineScope(SupervisorJob() + Dispatchers.IO))

Główny kontroler systemu raportowania - zarządza stanem i logiką biznesową raportów.

ReportHandler jest centralnym komponentem systemu raportowania, który:

  • Zarządza reaktywnym stanem raportu (dane, filtrowanie, sortowanie, paginacja)

  • Obsługuje zdarzenia użytkownika i aktualizuje stan

  • Koordynuje pobieranie danych z bazy przez DataManager

  • Zarządza konfiguracją raportów (zapisywanie/ładowanie ustawień)

Architektura oparta na wzorcu Redux:

  1. UI wysyła zdarzenia (ReportEvent) do handlera

  2. Handler redukuje stan na podstawie zdarzenia

  3. Jeśli potrzeba, wysyła żądanie pobrania danych

  4. UI automatycznie się przerysowuje na podstawie nowego stanu

Parameters

reportStructureBuilder

Builder definicji struktury raportu (kolumny, zapytania, akcje).

handlerScope

opcjonalny CoroutineScope

Constructors

Link copied to clipboard
constructor(reportStructureBuilder: ReportStructureBuilder, handlerScope: CoroutineScope = CoroutineScope(SupervisorJob() + Dispatchers.IO))

Properties

Link copied to clipboard
private val _state: MutableStateFlow<ReportState>
Link copied to clipboard
Link copied to clipboard
private var dataFetchJob: Job?
Link copied to clipboard
Link copied to clipboard
private val handlerScope: CoroutineScope
Link copied to clipboard
Link copied to clipboard
val state: StateFlow<ReportState>

Functions

Link copied to clipboard
fun addSortColumn(columnKey: String): Boolean
Link copied to clipboard
private fun applyConfiguration(state: ReportState, configuration: ReportConfiguration): ReportState
Link copied to clipboard
Link copied to clipboard
private fun fetchData(state: ReportState)
Link copied to clipboard
Link copied to clipboard
fun onEvent(event: ReportEvent)

Główna metoda obsługi zdarzeń użytkownika.

Link copied to clipboard
private fun reduceState(currentState: ReportState, event: ReportEvent): ReportState
Link copied to clipboard
fun removeSortColumn(columnKey: String)
Link copied to clipboard
fun reorderColumns(fromIndex: Int, toIndex: Int)
Link copied to clipboard
fun reorderSortColumns(fromIndex: Int, toIndex: Int)
Link copied to clipboard
fun toggleColumnVisibility(columnKey: String, isVisible: Boolean)
Link copied to clipboard
fun updateSortDirection(columnKey: String, newDirection: SortDirection)