Siedzę właśnie nad częścią książki poświęconą elementom interfejsu, więc dzisiaj trochę o tym. A konkretnie o wskaźnikach postępu (progress bars).
Przez stosowanie nowych rozwiązań programistycznych, zwłaszcza AJAXa, interfejsy webowe coraz częściej przypominają te, które znamy korzystając z programów zainstalowanych na naszych komputerach. Ma to swoje zalety: w przypadku dobrze zaprojektowanych i dobrze oprogramowanych interfejsów, doświadczenie użytkowników może zostać pozytywnie przeniesione z środowiska desktop do Internetu. Ma też swoje minusy: minus zasadniczy to ten, że często interfejsy te tworzone są przez osoby z małym doświadczeniem, nie znające i przez to nie stosujące prawa i reguły rządzące światem projektowania interakcji.
Jedna z takich reguł związana jest z percepcją czasu – pisałem już na ten temat, ale dzisiaj będzie ciut inaczej.
Generalnie w naszym życiu codziennym, pozakomputerowym, każda akcja związana z otoczeniem, wywołuje natychmiastową reakcję. W świecie komputerów nie jest już tak różowo – nie rzadko dochodzi do kliku-, kilkunastosekundowych przestojów systemu, związanych z pracą dysku, pamięci RAM, procesora. To samo można powiedzieć o przestojach w ramach korzystania z sieci – gdzie głównie spowodowane jest to czasem pobierania danej strony WWW, ale także korzystaniem z usług webowych – np. poczty e-mail. Z drugiej strony chcemy mieć odpowiedź od systemu czy rozpoczął daną akcję, którą wywołaliśmy, czy nie jest czasem zepsuty. Dodatkowo potrzebujemy informacji ile dana czynność będzie trwała, jeśli jej wykonanie w trybie natychmiastowym (tj. w przeciągu 1 sekundy) z jakiegoś powodu jest niemożliwe. Dotyczy to tak samo operacji w systemie operacyjnym, jak i korzystania ze stron WWW. W końcu, długie czasy odpowiedzi systemu nie są spostrzegane dobrze przez operatora; użytkownicy szybko się zniechęcają to ślimaczących się systemów, ale osobnicze odczuwanie mijania czasu można oszukać, chociażby przez dodanie ruchu w polu widzenia.
Interfejsy w wersji desktop
Progress bar – klasyczny wskaźnik postępu, najczęściej o kształcie paska poziomego, w ramach którego środkowa, wypełniająca go część przesuwa się z lewej strony do prawej, pokazując w ramach upływu czasu postęp wykonywanej akcji: kopiowania danych, opróżniania kosza, nakładania tekstury na model 3D w programie graficznym, etc.
Występują dwa rodzaje progress baru:
- determinate progress indicator – mamy z nim do czynienia wówczas gdy, posługując się przykładem z kopiowania pliku, system zna rozmiar pliku i jest w stanie oszacować, biorąc pod uwagę szybkość transferu danych, ile będzie trwało kopiowanie,
- indeterminate progress indicator – stosowany wtedy, gdy system nie jest w stanie oszacować potrzebnego czasu do zakończenia danej operacji.
Ważne jest by progress bar pokazywał postęp w ramach upływającego czasu: A) albo w formule czysto graficznej – np. przesuwający się pas kolorystyczny z lewej do prawej, B) albo w formie tekstowej – np. w przypadku ładującej się strony w technologii flash, przy pokazaniu całkowitej objętości danych, które muszą zostać ściągnięte by wyświetliła się strona, odliczanie upływającego czasu, np. odliczając ilość pobranych danych, C) albo łącząc obydwie formy: A + B.
Asynchronous progress indicator – wskaźnik postępu pracujący w tle, najczęściej przypominający kształtem jakiś kręciołek, np. po stronie przeglądarki WWW, gdy w ramach kilku otworzonych zakładkach ładują się strony WWW.
Ten rodzaj wskaźnika może się rónież pojawiać w postaci spinning wait cursor. W interfejsach Apple zasada jest taka, iż jeśli system wykonuje jakąś czynność dłużej niż 2 sekundy, to po upływie dwu sekund pojawia się kursor wait, dając znać użytkownikowi, że akcja jest wykonywana, ale musi chwilę poczekać na efekt końcowy.
Internet
W ramach sieci wskaźniki postępu znajdują zastosowanie w ramach korzystania z jednej z dwu technologii:
- Flash,
- AJAX.
I tu nie będę się rozpisywał, gdyż zasady korzystania są takie same jak w ramach aplikacji desktopowych:
- klasyczny wskaźnik postępu powinien być stosowany tam, gdzie pobierana jest większa ilość danych i przewidziany przez to jest dłuższy czas przestoju. Dodatkowo, dobrze jak informacje towarzyszące wskaźnikowi ukazują postęp w pobieraniu danych – albo w formie przesuwającego się paska, odzwierciedlającego postęp w ramach upływu czasu, albo odliczając ilość ściągniętych danych w stosunku do całkowitej ich liczby.
- asynchroniczny wskaźnik powinien mieć zastosowanie wszędzie tam, gdzie czas odpowiedzi systemu przekracza granicę dwu sekund.
***
Warto zajrzeć do Apple Human Interface Guidelines, a tam m.in.:
- o progress indicators,
- o kursorach w systemie Apple Mac OS X, w tym progress indicator oraz spinning wait cursor.