PHIALEGRID · WPF + AVALONIARzeczywiste zrzuty aplikacji

Grupowanie, edycja i konfiguracja

PhialeGrid obsługuje grupowanie wielopoziomowe, konfigurowalne agregaty, edycję i walidację danych, zaznaczanie rekordów oraz zarządzanie układem kolumn. Poniżej wybrane możliwości w aplikacjach WPF i Avalonia.

Dwa poziomy grupowania (dział i status) oraz kilka agregatów tej samej kolumny — działający renderer Avalonii.
AvaloniaGrupowanie wielopoziomowe
Aktywny edytor wartości liczbowej w komórce Avalonii.
AvaloniaEdycja bezpośrednio w komórce
Grupowanie, projektant podsumowań i agregaty w demonstratorze WPF.
WPFWPF: konfiguracja podsumowań
Panel zarządzania widocznością kolumn w demonstratorze WPF, motyw nocny.
WPFWybór kolumn
WPFNajpełniejszy frontend; w demo scenariusze lokalne, REST i snapshot oraz natywne edytory.
AvaloniaDziałający renderer i demo, grupowanie, podsumowania i edycja; prace trwają.

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ł ↗