Standard budowania interfejsu aplikacji
W poniższym rozdziale zebrane zostały najlepsze praktyki podczas budowania aplikacji.
Zaproponowane rozwiązania pozwolą ci stworzyć przejrzyste, ergonomiczne i funkcjonalne formularze, listy i inne elementu GUI, które podniosą atrakcyjność tworzonej aplikacji.
Układ (Layout)
Powszechną praktyką jest stosowanie szablonów ekranów. W ramach aplikacji określ typy ekranów (np. dashboard, ekrany szczegółów, widok 360, raporty itp.) Poniżej przykład dashbordu menadżera – na stronie znajdują się najważniejsze skumulowane informacje, które bezpośrednio dotyczą użytkownika.

- Informacje dziel na sekcje i separuj je w sposób czytelny (w tym celu możesz zastosować kontenery oraz nagłówki).

- Poszczególne komponenty formularza powinny zwierać zbieżne tematycznie dane.
- W przypadku dużej ilości danych, stosuj:
- Sekcje – są odpowiednie do danych, których użytkownik może potrzebować w danym momencie.

- Zakładki – odpowiednie do odseparowanych danych (użytkownik w ramach danej zakładki znajdzie wszystko czego potrzebuje).

- Osobne ekrany – niepowiązane zestawy danych (np. Obsługa ewidencji czasu pracy, edycja danych adresowych).

- Unikaj budowania „wysokich” ekranów ( >2 ekrany ). W takim wypadku stosuj: zakładki, osobne ekrany w formie wizarda.
Nawigacja
- Nawigacja powinna być czytelna, powtarzalna i przewidywalna – zdefiniuj schemat nawigacji i stosuj go w całej aplikacji.
- Wskazówki dotyczące nawigacji powinny być uwzględnione przy tworzeniu opisanych powyżej szablonów ekranów.
- Położenie akcji głównych:
- Akcje główne to akcje odnoszące się do całej strony i powinny znajdować się w panelu akcji na formularzu.

- Powyższe akcje powinny być widoczne cały czas. Dobrym rozwiązaniem jest zadokowanie ich na górze strony.
- W przypadku nie dokowania akcji zaleca się pokazanie panelu akcji powyżej formularza.
- W przypadku ekranów, których zawartość powoduje pojawienie się scrolla, dobrą praktyką jest powtórzenie tych akcji pod formularzem.
- Położenie akcji lokalnych.
- Akcja lokalna to akcja, która odnosi się do części formularza.

- Położenie akcji powinno współgrać ze stylem sekcji (ramka, tło), której dotyczy tak aby było wiadomo czego dotyczy dana akcja.
- Miejsce akcji lokalnej w sekcji powinno być powtarzalne (np. górny prawy róg)
Styl przycisków akcji
- Style należy stosować konsekwentnie dbając o podkreślanie ich według znaczenia/funkcji.
- Standard - akcje podstawowe, techniczne.
- Primary - akcje wyróżnione, oczekiwane, powodujące postęp w realizowanym procesie.
- Success - akcje pozytywne (akceptacje), kończą jakiś proces (np. zatwierdź zamówienie) lub inicjują jakieś istotne zdarzenie (np. Wyślij wniosek).
- Negation - akcje typu odrzucenie / anulowanie, akcje przerwania procesu lub akcje o znaczeniu negatywnym w kontekście biznesowym (np. Skieruj do windykacji).

- Kolejność przycisków akcji w panelu akcji.
- W przypadku kilku przycisków akcji obok siebie należy zadbać o powtarzalną ich kolejność.
- Z lewej strony stosujemy akcje wstrzymujące realizowany proces, cofające go lub nawigację WSTECZ.
- Pośrodku akcje neutralne, techniczne (np. zapisz, aktualizuj dane).
- Z prawej akcje postępu /oczekiwane / wyróżnione.
Zapis
- Na stronie powinno być jasne czego dotyczy akcja zapisu.
- Nie należy na stronie stosować więcej niż jedna akcja zapisu zmuszając użytkownika do zastanawiania się co zostanie zapisane.
- Jeżeli istnieje potrzeba zapisana zmiany wartości danej kontrolki „tu i teraz” (jej wartość ma wpływ na zachowania formularza) należy zastosować zapis na zdarzeniu onChange kontrolki.

Edycja
- Sposób edycji „dużego” formularza powinien zależeć od kontekstu.
- Poniżej przykład tworzenia elementu obiektu (np. wniosek) gdzie użytkownik będzie uzupełniał wszystkie/większość pól – wszystkie pola są w edycji.

- Wejście w edycję już istniejącego elementu – można zastosować edycję na poziomie sekcji za pomocą okna popup lub osobnej strony formularza.

- Nie stosuj formularza w trybie edycji dla każdego wejścia na szczegóły obiektu. Tryb edycji powinien być dostępny jeśli istnieje tego biznesoswe uzasadnienie. W przeciwnym przypadku zastosuj tryb odczytu z opcją edycji na żądanie.
Tryb odczytu – dwie metody
- Textbox R-O (read only) - stosuj dla małych formularzy gdzie masz więcej miejsca do dyspozycji.

- Label - stosuj w celu oszczędności miejsca.

- Możesz przyjąć konwencję mieszaną wg. określonych/własnych kryteriów.
- Wybierz i stosuj konsekwentnie w całej aplikacji.
Ikony, symbole
- Stosuj symbole dla akcji oczywistych i typowych, zrozumiałych dla użytkownika (zapis, edycja, akceptacja).
- Akcja nietypowa, stosowana powszechnie w danej aplikacji, można potraktować jak typową (np. „pobierz PDF” w systemie obsługi dokumentów, gdzie akcja występuje na wielu formularzach).
Akcje nietypowe wspieraj dodatkowym tekstem przycisku akcji.

- Stosuj tooltipy w każdej sytuacji.
Kontekst użycia ekranu
- Buduj ekrany oparte o dane odpowiadające potrzebie biznesowej użytkownika . Agreguj dane potrzebne użytkownikowi na danym etapie procesu lub czynności, eliminując potrzebę przełączania się pomiędzy ekranami.
- Separuj dane na osobne ekrany, jeśli nie stanowią one spójnej całości w kontekście biznesowym.
- Projektuj dedykowane ekrany dostarczające użytkownikowi informacji, których potrzebuje
Przykład 1

Dashboard menagera prezentuje statystyki i wartości, które podlegają jego kontroli. Ten ekran ma dostarczyć informacji „co wymaga jego uwagi i podjęcia działania”, ale samo podjęcie tego działania nie musi być realizowane poprzez ten właśnie ekran.
Przykład 2

Ekran pracownika zawiera dwa konteksty:
- Rejestracja czasu pracy – zbiór funkcji umożliwiający rejestrację aktywności zawodowej lub absencję.
- Kartoteka – zbiór informacji i dokumentów dla pracownika (adresy, kontakt, płaca, pożyczki, ZUS itp.).
Zakres prezentowanych informacji
- Pamiętaj, że wszystko jest informacją – ikona, kolor, wielkość, wyrównanie – stosuj ich z umiarem podkreślając tylko to, co może stanowić pomoc / wsparcie użytkownika w realizowanym procesie biznesowym.
- Dobieraj zestaw danych stanowiący wartość dla użytkownika w chwili wykonywania danej czynności.
Identyfikacja obiektu
- Warto zadbać aby cały czas były dostępne istotne informacje o obsługiwanym podmiocie.
Przykład 1 – przy obsłudze wniosku kredytowego cały czas pokazuj dane identyfikacyjne klienta (imię, nazwisko, PESEL, CID itp.).
Przykład 2 – Przypisując przesyłki do pojazdu kuriera, pokazuj dane pojazdu (typ, model, numer rejestracyjny. przewoźnik).
Kontrolki
Lista
- Stosuj ograniczoną ilość kolumn – scroll poziomy na liście stanowi duże utrudnienie.
- Maksymalna ilość wierszy – tak aby było możliwe wyświetlenie całej listy z nagłówkiem, filtrem i paginacją na jednym ekranie.
- Jeżeli lista będzie zawierać kilka rekordów (np. < 5) zrezygnuj z paginacji (np. lista żyrantów kredytu kiedy nie może ich być więcej niż 5).
- Określaj szerokość kolumn względem oczekiwanej zawartości.
- Stosuj wyrównanie treści kolumn:
- teksty do lewej
- wartości liczbowe do prawej
- daty do lewej
- Filtry – stosuj układ filtra w taki sposób aby zajmował on jak najmniej miejsca.

- Stosuj krótkie opisy / skróty pól filtra aby uniknąć zawijania wierszy (definiuj tooltipy z pełnym opisem pól).
- Akcje związane z całą listą umieszczaj w toolbarze listy.
- Akcje związane z rekordem umieszczaj bezpośrednio na rekordzie (ikona).

- Korzystaj z opcji sortowania danych. Projektant aplikacji powinien wiedzieć po czym ma się domyślnie sortować lista i takie ustawienia zastosować. Więcej patrz: Wybór kolumn i sortowania.

Repeater
- Repeater stosuj do wyświetlenia skończonej ilości elementów, tak aby była możliwa jego obsługa w ramach jednego ekranu.
- Separuj elementy powtarzalne w sposób widoczny (kontenery, separatory).


- W przypadku elementów jednowierszowych nie stosuj dodatkowych separatorów elementów powtarzalnych.
- Używaj opcji Pierwszy wiersz nagłówkowy w celu oszczędności miejsca na formularzu.

Popupy (formularz otwarty w oknie popup)
- Umieszczaj akcje zadokowane na dole okna formularza. Tak aby były dostępne cały czas.
- Do akcji finalizującej pożądane działanie w ramach okna popup, dołączaj dodatkową akcję JS z funkcją zamykającą okno popup.
Przykład: przycisk ZAPISZ / ZATWIERDŹ w oknie popup powinien powodować zamknięcie tego okna.

- Zawsze odświeżaj odpowiedni element strony po zamknięciu okna, tak aby zmiany były od razu widoczne.
Przycisk
- Umieszczając kilka przycisków obok siebie na formularzu stosuj Kontener (flow) w celu optymalizacji odstępów między przyciskami.
- Chcąc umieścić przycisk wyrównany „do prawej” dowolnego obiektu, stosuj Kontener (flow) - pozwoli to uniezależnić położenie przycisku od szerokości kolumny kontenera, na którym przycisk został osadzony.

Grupa
- W zależności od spodziewanej zawartości edytowanych pól, modyfikuj domyślny układ grupy (4-4-4) w celu lepszego wykorzystania powierzchni ekranowej.

Pole daty, Pole tekstowe z maską
- Określaj szerokość w kolumnach adekwatnie do spodziewanej zawartości.

Pole liczbowe
- Opcję spiner stosuj tam gdzie dodawanie jednostek ma sens
- Pole Ilość domowników na utrzymaniu - użycie poprawne
- Pole Kwota zadłużenia - użycie niepoprawne
