Nowa logika tworzenia ekranów MFD i system input keypad
2025-12-22
​
Problem
Oryginalna logika tworzenia ekranów była sztywna i trudna do rozszerzania. Każdy nowy ekran wymagał modyfikacji głównego pliku. Dodatkowo, system input dla radia był zbyt prosty i nie pozwalał na naturalną pracę z numeryczną klawiaturą.
Nowa architektura ekranów
Przeredagowałem system, aby każdy ekran był autonomicznym komponentem z własnymi metodami renderowania i obsługi inputu. System został uproszezony do przełączania się między ekranami za pomocą prostego mappingu. To umożliwia dodawanie nowych ekranów bez modyfikacji istniejącego kodu.
System Keypad
Zaimplementowałem obsługę numerycznej klawiatury ze standardem T9. Użytkownik może teraz naturalnie wprowadzać częstotliwości radia: naciśnie cyfrę, wynik pojawi się na ekranie, może go edytować (backspace), i zatwierdzić (enter).
Wyzwania
1. Zarządzanie stanem inputu
Keypad musiał pamiętać co użytkownik wpisał, obsługiwać edycję i walidować dane przed wysłaniem do backendu. Potrzebowałem oddzielnego state managementu dla każdego rodzaju inputu.
2. Integracja z Canvas
Keypad wyświetlany jest na Canvas, ale obsługuje rzeczywiste zdarzenia klawiatury. Musiałem mapować zdarzenia klawiatury na wizualne elementy keypad-u i na odwrót.
3. Validacja danych
Częstotliwości radia mają określone zakresy (COM: 118.00-136.975, NAV: 108.00-117.95). Keypad musiał walidować dane przed wysłaniem.
Wynik
System input jest teraz naturalny i intuicyjny. Logika ekranów jest czysta i łatwa do rozszerzania. Dodanie nowego ekranu zajmuje teraz ułamek czasu.
⌨️