如何设计一个好的“进度面板”

发布于 2024-07-09 21:49:38 字数 562 浏览 7 评论 0原文

对于需要花费几秒钟以上的任务,我认为一个好的用户界面应该提供一个进度条以及有关操作进度的适当信息。 (Microsoft 请提供有关此主题的用户界面指南,但我想要一个更高级的状态面板。)

我正在使用的“任务”类能够记录消息,如果消息足够重要(警告或错误),我想将它们显示在进度面板上。 当出现警告或错误时,如果有图形指示(可能是警告或错误图标),那就太好了。 如果有很多此类消息,则可以使用文本框、列表视图或一些报告控件这里可能是合适的。

任务运行时可能有一个取消按钮,任务完成后,有一个“查看日志”按钮也不错。

总而言之,我很清楚如何实现我的状态面板,但我真的很想对此提供一些意见。 我错过了什么重要的事情吗? 我在这方面是否太过分了? 是否已经有类似的组件可用?

For tasks that will take more than a few seconds, a good user interface, in my opinion, should provide a progress bar along with appropriate information on the progress of the operation. (Microsoft kindly provide User Interface Guidelines on this topic, but I want a status panel that is a bit more advanced.)

The "task" class I am using is able to log messages, and if the messages are important enough (warning or error), I would like to display them on the progress panel. It would also be nice with a graphical indication when warnings or errors have occured (a warning or error icon perhaps). If there are many such messages, a text box, a list view or perhaps some report control could be appropriate here.

There could be a cancel button while the task is running, and after the task has been completed, a "View log" button would also be nice.

To summarise, I have a good idea how to implement my status panel, but I would really like some input on this. Did I miss something important? Am I going overboard on this? Are there perhaps any components like this already available out there?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

养猫人 2024-07-16 21:49:38

对于日志记录,您实际上可能应该遇到另一个更高级别的错误。 这些是我通常实施的级别(从 80 年代的 DEC 开始)。

  1. DEBUG - 一条非常低优先级的消息,开发人员只是将其放入以帮助诊断出现问题时发生的情况。
  2. 信息 - 没问题,只是报告用户可能感兴趣的进度。
  3. 警告 - 在某些情况下可能会出现问题,但也可能没问题。
  4. 错误 - 一个明确的问题。 必须通知用户,但程序将尝试继续运行。
  5. FATAL - 问题严重到程序无法继续。

第二个是,既然您称其为“进度面板”,我假设您计划实现某种进度栏。 实际上已经对进度条进行了相当多的研究。 最重要的是,无论你做什么,都不要让杠铃随着进展而变慢。 这让它看起来永远拖下去。

最后,听起来您正在考虑某种状态消息行。 如果您正在寻找一些好的状态消息,我建议您使用这些。 :-)

For logging, you should probably actually have another higher level of error. These are the levels I usually implement (as swiped from DEC back in the 80's).

  1. DEBUG - a very low-prioity message that the developer just put in to help diagnose what's going on in the event something goes awry.
  2. INFORMATIONAL - No problem, just reporting progress the user might be interested in.
  3. WARNING - Something that could possibly be an issue in some situations, but may also be just fine.
  4. ERROR - A definite problem. The user must be informed, but the program will try to keep going.
  5. FATAL - A problem so bad that the program can't go on.

The second is, since you are calling this a "progress panel", I assume you are planning on implementing some kind of progress bar. There has actually been a fair bit of research into progress bars. The main thing is that, whatever you do, don't let the bar get slower as it progresses. That makes it seem to drag on forever.

Lastly, it sounds like you are considering some sort of status message line. If you are looking for some good status messages, I suggest you use some of these. :-)

落花浅忆 2024-07-16 21:49:38

您这里有一个类似的状态面板规范,它可以为您提供一些关于可能的想法包含在这种 GUI 中:

首先,在列出设计细节之前定义此状态面板的目标和范围。

注意:如果选项太多,您将把它演变成“控制面板”;-)

You have here a similar Status Panel specifications which can give you some ideas on what could be included into this kind of GUI:

In sort, define your goals and scope of this Status Panel before listing the design details.

Note: with too much options on it, you will evolve it into a "Control Panel" ;-)

与酒说心事 2024-07-16 21:49:38

您需要在进行过程中查看日志消息,而不仅仅是在结束时查看。 如果出现错误,通常会在任务完成之前发生,并且 UI 认为一切仍在顺利进行。 发现这种情况发生确实很烦人,但唯一可见的日志消息(无需转到某个外部文件)是一些与实际问题相去甚远的随机信息消息。

(我不知道你是否已经这样做了,因为你的问题还不清楚。如果你是,那就脱帽吧。)

You'll want to view log messages while in progress, not just at the end. If a bug occurs, it'll often be before the task is done, and the UI thinks everything is still chugging along. It can be really annoying to find this is happening, and yet the only visible log message (without going to some external file somewhere) is some random informational message far removed from the actual problem.

(I don't know whether you're already doing this, as it's not clear from your question. If you are, hats off.)

·深蓝 2024-07-16 21:49:38

我认为重要的是你的主进度条只填满一次,并且总是有进度指示。

我最近在工作中做了一些非常类似的事情。 任务很长,有很多子任务。 我最终得到的界面是一个双进度条,它实际上是一堆进度条中的第一个和最后一个。

该 API 类似于

StartNewTask(Caption,NumberOfSubtasks)
EndTask 
SetProgress(Caption,NumberOfSubtasksFinished)

StartNewTask 在堆栈上推送一个新的栏,而 EndTask 则弹出一个。

SetProgress 设置最近推送的进度条的进度,并将更改波及到父进度条。 例如:

StartNewTask('Doing 2 things',2)
 SetProgress('Done 1 now',1)
 StartNewTask('Big Subtask',40)
  ...
  SetProgress('Done some subtasks',10)

现在,显示 2 个进度条,第二个进度条为 25% (10/40),第一个进度条为 62.5% (1/2 + 10/40*2)

就像我上面所说的,如果您有 > ;堆栈中的 2 个任务,我只显示第一个和最后一个(第一个给出整体进度并且永不倒退,第二个给出当前活动的指示)

您可以通过为每个子任务赋予权重来扩展它,即

StartNewTask(Caption,[ListOfSubTaskWeightings])

制作顶部进度条更顺畅。

此外,开发人员可以显示所有进度条,以了解为什么需要很长时间,而且我认为您可以从中制作出不错的日志。

I think it's important that your main progress bar fill up exactly once, and there is always indication of progress.

I've just recently done something very similar at work. The tasks were long, with many subtasks. The interface I ended up with was a double progress bar, which were actually the first and last of a stack of progress bars.

The API is something like

StartNewTask(Caption,NumberOfSubtasks)
EndTask 
SetProgress(Caption,NumberOfSubtasksFinished)

StartNewTask pushes a new bar on the stack, and EndTask pops one.

SetProgress sets the progress of the most-recently-pushed progress bar, and ripples up the changes to parent bars. For example:

StartNewTask('Doing 2 things',2)
 SetProgress('Done 1 now',1)
 StartNewTask('Big Subtask',40)
  ...
  SetProgress('Done some subtasks',10)

Now, there are 2 progress bars shown, the second at 25% (10/40) and the first at 62.5% (1/2 + 10/40*2)

Like I said above, if you've got >2 tasks in the stack, I only show the first and last (first gives overall progress and never goes backwards, second gives indication of current activity)

You could extend this by giving a weighting to each subtask, i.e.

StartNewTask(Caption,[ListOfSubTaskWeightings])

To make the top progress bar smoother.

Additionally, developers can show all progress bars to see why it takes ages, and I think you could make decent logs out of it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文