2008-12-10 9 views
2

Pour les tâches qui prendront plus de quelques secondes, une bonne interface utilisateur, à mon avis, devrait fournir une barre de progression avec des informations appropriées sur la progression de l'opération. (Microsoft souhaite fournir User Interface Guidelines à ce sujet, mais je veux un panneau d'état un peu plus avancé.)Comment concevoir un bon "panneau de progression"

La classe «tâche» que j'utilise peut enregistrer des messages et si les messages sont suffisamment importants (avertissement ou erreur), je voudrais les afficher sur le panneau de progression. Ce serait également bien avec une indication graphique quand des avertissements ou des erreurs se sont produits (une icône d'avertissement ou d'erreur peut-être). S'il y a beaucoup de tels messages, une zone de texte, une vue de liste ou peut-être report control pourrait être appropriée ici.

Il peut y avoir un bouton d'annulation pendant que la tâche est en cours d'exécution, et une fois la tâche terminée, un bouton "Afficher le journal" serait également agréable.

Pour résumer, j'ai une bonne idée de la façon de mettre en œuvre mon panneau de statut, mais j'aimerais vraiment avoir des commentaires à ce sujet. Ai-je manqué quelque chose d'important? Est-ce que je vais trop loin? Est-ce qu'il y a peut-être des composants comme ceux-là déjà disponibles?

Répondre

2

Pour l'enregistrement, vous devriez probablement en fait un autre niveau plus élevé d'erreur. Ce sont les niveaux que j'implémente habituellement (comme l'a fait glisser le DEC dans les années 80). DEBUG - un message très faible que le développeur vient de mettre en place pour aider à diagnostiquer ce qui se passe en cas de problème.

  • INFORMATIONS - Pas de problème, il suffit de signaler les progrès qui pourraient intéresser l'utilisateur.
  • AVERTISSEMENT - Quelque chose qui pourrait être un problème dans certaines situations, mais peut également être très bien.
  • ERREUR - Un problème certain. L'utilisateur doit être informé, mais le programme va essayer de continuer. FATAL - Un problème si grave que le programme ne peut pas continuer. La seconde est, puisque vous appelez cela un "panneau de progression", je suppose que vous prévoyez d'implémenter une sorte de barre de progression. Il y a eu un peu de recherche sur progress bars. L'essentiel est que, quoi que vous fassiez, ne laissez pas la barre ralentir au fur et à mesure qu'elle progresse. Cela donne l'impression de traîner pour toujours. Enfin, il semble que vous envisagiez une sorte de ligne de message d'état. Si vous êtes à la recherche de bons messages d'état, je vous suggère d'utiliser une partie de these. :-)

  • 1

    Vous avez ici un similar Status Panel specifications qui peut vous donner quelques idées sur ce qui pourrait être inclus dans ce genre de GUI:

    En sorte, définir vos objectifs et la portée de ce panneau d'état avant d'énumérer les détails de conception.

    Remarque: avec des options trop sur elle, vous évoluerez dans un « Panneau de configuration » ;-)

    +0

    Cette spécification est pour un service en cours d'exécution, pas pour une seule tâche, donc pas exactement ce que je recherche. Je réalise que le terme "panneau d'état" est un peu ambigu, donc je reformule ma question pour utiliser le terme "panneau d'état de progression" à la place. –

    +0

    Assez juste. Je parlais plutôt du processus de spécification de votre panneau (statut/contrôle/progression) plutôt que du contenu réel de la spécification. – VonC

    1

    Vous souhaitez afficher les messages de journal en cours, pas seulement à la fin. Si un bogue survient, ce sera souvent avant que la tâche ne soit terminée, et l'interface utilisateur pense que tout est encore en cours. Cela peut être vraiment énervant de constater que cela se produit, et pourtant le seul message de journal visible (sans aller à un fichier externe quelque part) est un message d'information aléatoire très éloigné du problème réel.

    (Je ne sais pas si vous faites déjà, car il ne sait pas de votre question. Si vous êtes, chapeau.)

    +0

    C'est exactement ce que j'essaie de faire. Le message de journal devrait être affiché dans le panneau de progression s'il est assez "sérieux" (c'est-à-dire, erreur ou avertissement). –

    1

    Je pense qu'il est important que votre barre de progression remplir exactement une fois, et il y a toujours des signes de progrès.

    J'ai récemment fait quelque chose de très similaire au travail. Les tâches étaient longues, avec beaucoup de sous-tâches. L'interface que j'ai fini avec était une barre de progression double, qui étaient en fait le premier et le dernier d'une pile de barres de progression.

    L'API est quelque chose comme

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

    StartNewTask pousse une nouvelle barre sur la pile, et EndTask pops un.

    SetProgress définit la progression de la barre de progression la plus récemment poussée et répercute les modifications sur les barres parent. Par exemple:

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

    Maintenant, il 2 barres de progression sont présentés, le second à 25% (10/40) et le premier à 62,5% (1/2 + 10/40 * 2)

    Comme je l'ai dit plus haut, si vous avez plus de 2 tâches dans la pile, je ne montre que le premier et le dernier (premier donne une progression globale et ne revient jamais en arrière, deuxième donne une indication de l'activité actuelle)

    donnant une pondération à chaque sous-tâche, c.-à-d.

    StartNewTask(Caption,[ListOfSubTaskWeightings]) 
    

    Pour rendre la barre de progression supérieure plus lisse. En outre, les développeurs peuvent afficher toutes les barres de progression pour voir pourquoi cela prend des années, et je pense que vous pourriez en faire des logs décents.

    Questions connexes