我需要让最终用户指定一个时间范围,在内部存储和使用作为开始日期/时间和结束日期/时间。范围可能是几分钟,也可能是几天。
是否有人发现了可以优雅处理此问题的交互式控件?
大多数GUI工具包都有日历控件,因此我可以指定“开始”,包含当天的日历和时间的文本字段......以及“结束”的相同内容。
我还可以用单个文本字段或滑块替换“结束”控件,该文本字段或滑块简单地描述了“结束”开始后的秒数/分钟/小时数。
我不喜欢这些想法是需要多少点击,打字和更多点击来描述这样一个简单的概念。如果输入的时间不能被识别为时间,我也必须拍打用户的手。
我有一个更清晰的实现吗?
答案 0 :(得分:11)
当我在思考诸如此类的问题时,我倾向于研究常见的设计模式以获取灵感。
Yahoo Pattern Library提供some potential solutions。
UI Patterns site也give some suggestions,值得浏览。
为了更好的衡量,这里是another solution at the Welie pattern library。
另一个灵感来源可能是其他网站和应用程序。例如,考虑所有需要记录短时间和长时间持续时间的用例。例如,公司TimeSheet记录,公司汽车里程记录软件,任务记录软件,秒表应用程序,日历应用程序等。然后看看他们如何处理用于捕获时间范围的GUI控件。
我个人没有找到最喜欢的选择日期和时间的解决方案。但是,我想我想要这样的东西。
希望这有帮助
答案 1 :(得分:3)
我是一个旧控件的粉丝,我看到在90年代使用的是在SGI机器(以及PC等)上使用Inventor(以及后来的Open Inventor):无限拨号。
有些截图,有点偏小,是here。课程,它已经在各种平台上完成,包括iphone上的类似内容。
我认为日期/时间选择器适用于两个刻度盘,每个刻度盘代表日期/时间幅度的顺序。在ASCII艺术中,[方括号]之间的每个拨号可能看起来像:
[20 Oct | 21 OCT | 22 Oct ] [11:15 .. 11:30 .. 11:45..]
或3:
[20 Oct | 21 OCT | 22 Oct ] [11 .. 12 .. 1pm] [12:31 .. 12:32 .. 12:33]
您可以尝试多种变体(垂直/水平,日期/时间,日期/小时/分钟等)。
拨号虽然有点很少使用,但却是人类与之交互的自然设备,它们的无限旋转选项(不像必须经常停止的幻灯片)很适合日期/时间。
FWIW
答案 2 :(得分:2)
用户界面设计严重依赖于应用程序。 “最佳”意味着可以衡量解决方案的某种指标。在UI设计中,这样的度量标准可以是“完成任务所需的主页多次点击/按键操作?”数量越少越好。因此,一旦定义了指标,您就可以开始将解决方案分类为更好,更好,更好。
您还希望减少用户的认知负担。如果用户必须根据90天的退货政策进入可以交换产品的最后一天,那么询问开始和结束日期将迫使他们进行日期数学计算,这并不好玩。在此示例中,具有x天“delta”的开始日期将减轻用户的负担。
根据您的应用程序,您可以在其图表上考虑和接近Google财经时间范围选择器:http://finance.google.com/finance?q=.dji
答案 3 :(得分:1)
没有单一的答案,这取决于具体情况。对许多地方来说,良好的文本控制就足够当然,通过支持粘贴和一些增加/减少操作,这些事情仍然有用。也许它甚至可以对价值进行一些验证。
然后有些地方需要更多东西。日历对于输入日期非常有帮助,某些滑块可以用于时间。 (Lotus Notes日历有一个滑块。)
我的建议是:
想想你需要什么。不要将复杂的小部件放到较少使用的对话框中。
如果您需要这些非常有用的小部件,请检查您正在使用的库中是否已做好准备并花些时间查看其他人如何完成这些操作。
始终拥有支持粘贴的文本控件。
答案 4 :(得分:1)
查看VisualHint 日期控件。它可以通过多种方式进行配置,包括时间跨度。这将允许您使用一个控件实例来显示开始时间,而另一个控件实例可以设置时间跨度直到该时间段完成。该控件还支持可扩展的基本框架,因此您可以将开始/结束或开始/跨度组合到单个控件中。
答案 5 :(得分:1)
答案 6 :(得分:0)
除非您选择的GUI工具包中有更高级的时间控制,否则表示开始和结束的两个日历控件最直接。此外,您需要决定如何使用这些信息。例如,如果您使用开始日期和间隔来增加该日期,则更改开始日期不会更改间隔的含义。这实际上取决于你想要做什么。
答案 7 :(得分:0)
我看到工作得很好的一种方法是使用甘特图:
http://en.wikipedia.org/wiki/Gantt_chart
您可以创建单个折线图,然后可以在几个月,几天,几小时和几分钟内对其进行缩放,具体取决于您制作控件的宽度或缩放范围。问题是我现在不知道任何只有一行的控件,所以你可能需要创建一个自定义控件。您可以查找甘特图控件并执行一项任务/项目。
答案 8 :(得分:0)
观察人们在时间范围控制方面的表现。然后编写它,使其最适合做人们想要用它实现的目标。例如,如果仅输入未来日期是有意义的,请将过去的日期留空。
Jonathan Leighton在jquery中做了一个很好的date inputter -element,我发现它非常适合输入日期。这有利于用户可以通过单击或直接输入日期来输入日期。用户还可以直接获取有关在框中键入内容的提示。如果你把它与某种时间线 - 对象结合在一起,你实际上可能会走得很远。只是避免制作令人困惑或愤怒的UI元素!
答案 9 :(得分:0)
这是迟到的,它本身并不是一种控制。我在一个我找不到的博客上读到了这个想法(事实上,我在试图找到它时发现了这个帖子)。这个想法是使用挂钟的比喻。这是我为了它的乐趣而实现的。它不是功能控制。你可以使用这样的东西作为自然捕捉时间的起点。最多三次点击,大部分时间两次。只有拨号接近。
http://www.viridium.ro/clock-sample/
使用支持HTML5的浏览器;就是Chrome。