I have to define a GUI Element that contains timespan with minutes, hours, days, weeks and months. Whats the best practice in this case?
The following possibilities I considered:
Are there any other good ways?
User Experience Stack Exchange is a question and answer site for user experience researchers and experts. It only takes a minute to sign up.
Sign up to join this communityMy initial idea is to use a slider where you can chose timestamps appropriate to the user. The further back in time, the more rough time steps you have in this logarithmic scale. It might not be appropriate everywhere, but it’s fast and intuitive:
download bmml source – Wireframes created with Balsamiq Mockups
hour ago ||| | | | | | | | | minute ago
and repeat this pattern between each 'milestone'. Also, the slider could 'snap' to these sub markers, and a speech bubble above or below could indicate the absolute selected value of the slider position.
Mar 17, 2014 at 14:49
I particularly like the way Facebook handle dates. You just have to pick a date by clicking the calendar and then specify the hour. When typing in the hour input, they suggest you some rounded ones.
Sounds to me your trying to design the interaction pattern often used in scheduling, agenda or calendar software.
Take a look at how it is generally done on the operating system you are designing for. On Windows for example, you can assume that most of the professional users work with Outlook and have created an appointment or agenda item at least once.
Below two examples from google calendar and outlook. Both rely on a datepicker and dropdownlist for choosing the begin and start date/time. You could extend the time textbox to host minutes or seconds if necessary. The checkboxes provide extra shortcuts in filling out the timespan.
**Edit based on the comment by Frugi **
For a notification after a give time you could also consider something in the line of Evernote's solution. It gives 2 shortcuts which will often be used: 'Tomorrow''In a week but also gives the possibility of filling in a time and possibly a date. You could however remove the date and replace this with a number of months.
Although the solution is more appropriate for a webpage/webinterface or mobile app, than a desktop application in my opinion.
**Edit based on the answer by Benni **
Just one last idea that springs to mind. If the idea of a slider suits your application but you need more control over the exact time limit you could think about a combination.
Use the slider for quick adjustment but if you need to fill in a precise value you can create a popup which opens on doubleclick/hover/click/rmb on the sliders 'thumb'. In this popup you can put precision controls like spinners to finetune your time/date.
I had a similar problem with a project of mine. Here is what I did. Source Code
The positioning might be off.
To select time duration use something like this:
I guess this highly depends on what kind of use case you want to implement.
Depending on that there may be multiple valid answers, and no single answer will suit all use cases in the same way, so I guess there is no canonical answer.
Initially, I was also thinking of the slider, but then I though: What timespan are we talking about?
Depending on the answers to these questions I'd go one way or the other.
To give an example:
Just to give you an idea.
Basically, my answer comes down to use the right tool for the right job.