Co tworzę
Rozwijam PhialeGrid, ponieważ w aplikacjach biznesowych najtrudniejszą częścią tabeli nie jest narysowanie komórki. To zarządzanie stanem, edycją, zatwierdzaniem zmian i współpracą z backendem. Wspólny Core obsługuje zasady działania, a frontendy WPF i Avalonia odpowiadają za interakcje natywne i renderowanie. To trwające prace, nie publicznie dostępny produkt.
Jeden silnik, dwa środowiska UI
Zamiast implementować te same reguły osobno dla WPF i Avalonii, rozwijam wspólny Core. Odpowiada on za logikę działania Grida, a warstwy platformowe za obsługę natywnych zdarzeń i renderowanie. To pozwala rozwijać i testować mechanizmy komponentu w jednym miejscu. Natywne zdarzenia obu platform są tłumaczone na wspólny protokół UniversalInput (szczegóły na stronie PhialeTech).
Wirtualizacja: milion rekordów, kilkadziesiąt na ekranie
Grid nie przetwarza i nie rysuje wszystkich rekordów naraz, tylko ten fragment tabeli, który użytkownik aktualnie widzi. Wirtualizacja widoku polega na tym, że zamiast tworzyć tysiące kontrolek dla wszystkich komórek, grid rysuje widoczne wiersze i kolumny i przy przewijaniu aktualizuje ten niewielki obszar. Wirtualizacja danych, jeśli źródło ją obsługuje, pobiera tylko potrzebne fragmenty danych i część z nich trzyma w pamięci podręcznej. Dzięki temu tabela może reprezentować nawet milion rekordów, choć na ekranie wyświetla kilkadziesiąt, a koszt rysowania zależy głównie od wielkości widocznego obszaru. Jeden z testów obejmuje milion pozycji logicznych i 50 pobranych rekordów. Nie każda operacja jest przez to równie szybka: sortowanie, filtrowanie i podsumowanie całego zbioru nadal wymagają pracy w lokalnym Core albo po stronie serwera.
Edycja to nie to samo co zapis
Rozdzielam edycję komórki, zatwierdzenie zmian w buforze oraz trwały zapis do backendu. Model sesyjny uwzględnia wersjonowanie, konflikty, częściowe wyniki i ponawianie operacji. Kontrolka nie zastępuje jednak transakcyjności i idempotencji, które musi zapewniać serwer.
Grupowanie i podsumowania
Grid pozwala grupować dane na kilku poziomach, rozwijać i zwijać grupy oraz dobierać sposób ich podsumowania. Użytkownik może wskazać kolumnę i dodać kilka agregatów — na przykład liczność, sumę i średnią. Podsumowania są prezentowane w osobnych, czytelnych blokach, a nie upychane w jednej komórce.
Zakres projektu
- Wirtualizacja widoku i danych: nawet milion rekordów, a na ekranie kilkadziesiąt
- Działające implementacje WPF i Avalonia korzystające ze wspólnej logiki
- Niezależny runtime i stan każdej instancji kontrolki
- UniversalInput: neutralny protokół zdarzeń wejściowych
- Sesje zmian: edycja, bufor zmian i zapis do backendu jako oddzielne etapy
- Grupowanie i wiele agregatów tej samej kolumny
- Motywy dzienny, nocny i wysokiego kontrastu
Uprawnienia w interfejsie
Możliwości Grida, takie jak zmiana kolejności kolumn czy edycja podsumowań, mogą być ograniczane przez manifest komponentu i uprawnienia użytkownika. Prace nad tym trwają; szczegóły na stronie PhialeTech.
Artykuł o PhialeGrid
Decyzje dotyczące wspólnego Core, sesji zmian i grupowania, ze zrzutami z WPF i Avalonii.
Przeczytaj artykuł ↗Repozytorium PhialeTech.Platform (historyczna migawka, kod zastrzeżony) ↗



