2009-03-22 23 views
5

Buduję aplikację branżową w Silverlight i muszę zmusić użytkownika do edycji dwóch wartości .NET TimeSpan. Jedna to pora dnia (w stosunku do północy), a druga to czas. Obecnie używam dwóch pól tekstowych, sformatowanych jako hh: mm. Jest to dość proste, ale zdecydowanie można je poprawić. Obserwowałem ludzi korzystających z aplikacji i chociaż niektórzy nie mają problemu z szybkim wejściem, inni walczą.Jaki jest najbardziej intuicyjny i użyteczny sposób wpisywania pory dnia lub czasu?

Biorąc pod uwagę, że pracuję w Silverlight2, co widziałbyś jako perfekcyjną kontrolę niestandardową, która pozwoli Ci łatwo wizualizować i edytować te dwie TimeSpany?

Aby utrudnić działanie, interfejs użytkownika powinien umożliwiać dokładną selekcję dowolnej pory dnia, ale podkreślać czas w normalnym dniu roboczym (np. 8:00 - 17:00). Niektórzy użytkownicy zazwyczaj wpisują 2:00 (am), kiedy naprawdę mają na myśli 2:00 po południu.

W mojej aplikacji zmierzam do wyrównania czasów i czasów trwania do 5-minutowych interwałów. Jako tło, ta aplikacja jest podobna do aplikacji rezerwacji pokoju, w której ludzie określają, kiedy i jak długo chcą mieć pokój.

Odpowiedz

5

W jednej z moich aplikacji internetowych użyłem suwaka z 2 uchwytami.

Przykład:

|.........Y-----------------Y...| 
     5AM    8PM 

Oczywiście nie muszę tak wysokiej precyzji, jak to zrobić, ale wierzę, że z nieco dłuższych odstępach suwak 5min byłoby możliwe.

Aby uwydatnić normalny dzień pracy, można ustawić kolor suwaka w innym kolorze w normalnym dniu roboczym. Lub spraw, aby "chwytacze" zaczęli i kończyli normalny dzień roboczy.

1

Prawdopodobnie zależy to od tego, jak dokładne są Twoje dane i jakie mogą być różne. Jeśli to nie musi być idealnie dokładne i nie różnią się wiele, można zrobić coś takiego

Task was performed at [select start time...] o'clock for [select duration...] 

gdzie [Wybierz czas rozpoczęcia ...] jest rozwijane z każdą godziną i [wybierz czas trwania ...] jest rozwijany z typowymi scenariuszami dla tego, co śledzisz, jak "30 minut", "1 godzina", "2 godziny"

Jeśli musi być elastyczny, może po prostu iść ze strukturą zdania i zastępować pulldowns z textboxem sprawią, że stanie się to jasne dla wszystkich użytkowników po raz pierwszy.

+0

Dobra uwaga na dokładność – geofftnz

1

Spójrz Outlook może, używa listy rozwijanej że domyślnie rozsądnych pół godziny (dla mnie w każdym razie;) i pozycje można następnie edytować ręcznie potem, jeśli pożądana jest wyższa precyzja. Czas trwania występuje także po zmianie czasu rozpoczęcia, a domyślnie na godzinę lub coś innego.

Użyłem pól tekstowych w starej aplikacji internetowej przed tobą, podobnie jak ty, z dodaną opcją dwukrotnego kliknięcia ich w celu wyświetlenia widgetu szybkiego wyboru, takiego jak powyższy przykład programu Outlook. Być może przycisk lub inna magia Silverlight może to wzmocnić.

Pionowa linia czasu, taka jak dzień kalendarzowy w programie Outlook, w której można przeciągnąć górną i dolną część "okna" spotkania, jest dla mnie najbardziej intuicyjnym lub co najmniej najszybszym sposobem na umieszczenie i dostosowanie rezerwacji. Być może, jeśli jest ona wstępnie wypełniona taką, która obejmuje około godziny, łatwo przeciągalna, aby zmienić czas rozpoczęcia - z górną i dolną opcją zmiany rozmiaru, aby zmienić czas trwania.

1

Poszerzenie tego, co powiedział Anthony, wydanie Silverlight Toolkit z marca 2009 r. Obejmuje kontrolę TimePicker & TimeUpDown. można zobaczyć na żywo demo TimeUpDown i timepicker z 2 pop-upów w: http://silverlight.codeplex.com/Wiki/View.aspx?title=Silverlight%20Toolkit%20Overview%20Part%201#TimeUpDown

I rzeczywiście posiadał zestaw funkcji i API dla tej kontroli, więc jestem bardzo dobrze zaznajomieni dzisiaj z tym, co jest najlepszą formą do czasu wejścia . Istnieje cała lista najlepszych praktyk, o których możemy porozmawiać w celu wprowadzenia czasu. Z których wszystkie są obecnie łatwo znaleźć w kontroli.

W przypadku niektórych koncepcji musieliśmy wprowadzić innowacje (np. Funkcja "Czas Intellisense"), ale w większości korzystaliśmy z koncepcji sprawdzonych w czasie rzeczywistym. (nie gra słów przeznaczonych)

Jednakże, jako część non-goal dla tych kontroli dla v1 zdecydowaliśmy się nie obsługiwać zakresów czasowych. Jeśli uważasz, że przedziały czasowe są czymś, co powinniśmy wesprzeć natywnie, możesz zasugerować to na codeplex: http://silverlight.codeplex.com/WorkItem/Create.aspx Aktywnie nadajemy priorytet pozycjom na podstawie liczby głosów i scenariuszy użytkownika, o których mowa w problemach.

Na razie proponuję użyć tylko 2 TimePickerów. Zaawansowane wizualizacje (takie jak linijki wielokrotnego wyboru lub suwak multi) są jednym ze sposobów wprowadzania zakresu czasowego, ale musisz mieć solidny globalny system wprowadzania tekstu dla opcji awaryjnej.

+0

Dzięki za wejście Justin ... Właściwie używam teraz selektora czasu March09 Toolkit. Stworzyłem nowe narzędzie do kontroli czasu trwania: http://silverlight.codeplex.com/WorkItem/View.aspx?WorkItemId=2392 – geofftnz

+0

Nie możesz mnie oszukać. Ta gra była całkowicie zamierzona. – MojoFilter

+0

Gdzie jest dokumentacja w TimePicker? Na przykład, jaki jest typ danych TimePicker.Value? Czy wiążę go z TimeSpan lub z DateTime? –

1

To świetny czas, aby zapytać, jakie zadanie próbują wykonać Twoi użytkownicy. W oparciu o to można stworzyć wydajność systemu. Na przykład w programie Outlook ludzie zazwyczaj wpisują czas, ponieważ próbują zaplanować spotkanie - dzięki czemu można łatwo rozróżnić "2" lub "2:00", aby oznaczać godzinę 14, ponieważ bardzo niewielu użytkowników próbuje zaplanować spotkania na 2 rano. Brzmi to podobnie do twojej aplikacji.

Jeśli spojrzysz na swoich użytkowników, najprawdopodobniej będą oni również planować czasy typowe - te powinny być łatwe do określenia w interfejsie. Np. Jeśli większość spotkań trwa 50 minut, powinno to być bardzo istotne, być może przycisk lub inna opcja z jednym kliknięciem.

Nie polecam wymyślania nowego widżetu wejściowego. Im bardziej standardowe narzędzie wprowadzania, tym mniej użytkownicy muszą pomyśleć podczas korzystania z produktu. Skoncentruj się na sprytach w swojej logice, wymyślając (i pokazując użytkownikowi) to, o czym myślisz.

+0

Dzięki Alex, prawie uderzyłeś paznokciem w głowę. W końcu porzuciłem pomysł suwaka na rzecz kontroli czasu w najnowszym narzędziu Silverlight Toolkit. Pozwalają ci wprowadzić czas jako prosty tekst i będą analizować prawie wszystko. Powiedziałem, że obecnie piszę kod do importowania dat i godzin z naszego systemu rozkładów jazdy DailyWTF. – geofftnz