- From: Chris Blouch <cblouch@aol.com>
- Date: Tue, 04 Mar 2008 13:31:16 -0500
- To: Chris Blouch <chris.blouch@corp.aol.com>
- CC: "Evans, Donald" <Donald.Evans@corp.aol.com>, wai-xtech@w3.org, "Wlodkowski, Thomas" <Thomas.Wlodkowski@corp.aol.com>, Earl.Johnson@Sun.COM, Jon Gunderson <jongund@uiuc.edu>, Becky Gibson <Becky_Gibson@notesdev.ibm.com>, Joseph Scheuhammer <clown@utoronto.ca>, "Schnabel, Stefan" <stefan.schnabel@sap.com>, schwer@us.ibm.com, Al Gilman <Alfred.S.Gilman@IEEE.org>
- Message-ID: <47CD9574.9000402@aol.com>
Updated: - added commentary about alignment with mainstream objects - added section of additional keys we might want to consider - added continuity of grid focus when changing months and years Here is how I imagine an ideal Date Picker widget would behave. Purpose: Choose a date as input in an easy to navigate manner. Behavior: Like other widgets the calendar widget receives focus to become active by tabbing into it. Once focused is received focus is repositioned on todays date in a grid of days and weeks. I suggest a grid as a reasonable representation because I am an advocate of using the same representational metaphors for both visual and aural navigation when it would not be overly cumbersome. This gives extra lift to the solution by aligning it with mainstream objects. The spoken text is from specific to general such as [Selected] 4 Tuesday March 2008 [Not Selected] As the user navigates they can quickly hear the number and if they allow speech to go on long enough they can get the day or more detail. If the date is already selected that is stated. If not then "Not Selected" is stated at the end. The assumption is that being selected is important to the user so they would want to know that right away. The majority of dates are not selected so hearing that over and over would be tedious, but still important at points of interest. So the first focus on today's date would read all the details out in full unless the users starts interacting. Arrowing up and down goes to the same day of the week in the previous or next week respectively. If the user advances past the end of the month they continue into the next or previous month as appropriate. Visually the grid might flip from month to month but audibly arrowing is a continuum of dates. Going left and right advances one day to the next, also in a continuum. Visually focus is moved from day to day and wraps from row to row in a grid of days and weeks. Pressing the enter key selects a date. There is no particular reason a user can't pick more than one date but actual implementation should include the option to allow only one choice which deselects the previous choice. In this scenario there should be an alert that says Selecting this date will unselect 4 Tuesday March 2008 Ok Cancel For faster navigation there are also shortcuts to advance month to month. I suggest control+alt+M. All the desktop/OS examples I checked required the user to activate a modality such as weekly or monthly view such that arrows would advance in steps of the mode's current time unit. I think that is overly complex. control+alt+M to advance a month and control+alt+shift+M to retreat a month. In general the control+alt realm of keys is becoming more common in web apps because of collisions with existing OS/Browser keyboard shortcuts. Likewise years can be advanced or retreated via control+alt+Y or control+alt+shift+Y respectively. When changing months or years there is a question of where focus should be in the grid after the change. I suggest that it should stick to the week and day as the user cycles through months or years. For example, if they are currently focused on 4 Tuesday March 2008 and I advance a month, I should sill be on the first Tuesday but in April, which is April 1. This new date should be announced to the user. I was thinking we did not need another shortcut for changing weeks because it is already just hitting the up and down arrow. I'm assuming there would be a header to the widget containing equivalent links to advance and retreat years and months along with the title showing which month and year the last focused date is contained in. To reach the header the user would shift+tab. Shift+tab takes you out of the calendar date picker section and moves you through the month and year increment/decrement controls. If the last control is reached and shift-tab is pressed again the widget is exited "out the top". If the user tabs forward through the widget and back to the date picker section, one more tab exits the widget "out the bottom". {alternate} Some calendar widgets represented the current Month and Year as pull-down menus in the header with the current month/year selected. You then use standard navigation to change the selected month or year from these menus. {alternate} Some calendar widgets have the year as an editable text field so the user can just type in 2018 to jump to that date rather than incrementing or messing with a menu. I'm not clear as to whether either of these alternates is better then my original suggestion which was just plain header text with controls to increment or decrement. Might swing to far on the capability/complexity trade off. {additional keys} There are many other keys defined in some desktop applications but I didn't know if they are of great utility or not. More keystrokes is more cognitive load and more client-side code. That said, here is a list of additional keystrokes beyond the baseline previously discussed control+alt+home - first day of the current week control+alt+end - last day of the current week control+alt+pageUp - first day of the current month control+alt+pageDown - last day of the current month control+alt+t - Jump focus to today I purposely did not cover selecting time ranges. Most implementations I've seen on the web have this as a separate UI element such as pull-down menus for start stop points or generalizations such as "morning" or "afternoon." This may be because many time selectors are implemented as draggable regions which has been difficult to duplicate in a web-based UI. It also implies some measure of data entry and storage to label what this particular time range is for, which gets pretty far into implementation details. Looking forward to your analysis of the proposal. CB
Received on Tuesday, 4 March 2008 18:32:28 UTC