web-dev-qa-db-fra.com

Actions groupées: que faire lorsque tous les éléments ne prennent pas en charge une action

Imaginez le scénario suivant: l'utilisateur sélectionne un groupe d'éléments et la boîte "Actions groupées" apparaît; l'utilisateur sélectionne une action que tous les éléments ne prennent pas en charge (pour une raison ou une autre).

Que faites-vous dans ce cas: appliquez l'action aux éléments qui la prennent en charge? n'appliquez pas l'action du tout et affichez un message d'erreur?

Mes idées actuelles consistent à:

  • Appliquez l'action aux éléments qui la prennent en charge; pour les actions qui font disparaître les éléments (comme "supprimer l'élément"), je laisserais les éléments incriminés derrière, toujours sélectionnés, avec un message d'erreur: "certains éléments n'ont pas pu être supprimés".
  • Désactivez les actions qui ne sont pas prises en charge par tous les éléments et fournissez un lien "corriger ce" qui désélectionne les éléments incriminés pour l'action.

Pouvez-vous également me diriger vers des exemples pertinents du monde réel?

13
Dan Burzo

Sans plus d'informations de votre part (par exemple, s'agit-il d'une application de bureau ou Web?), Voici une idée:

alt text

Lorsque l'utilisateur sélectionne l'action qu'il souhaite accomplir, ne faites rien sur les éléments de la liste si l'action peut s'appliquer à tous les éléments sélectionnés. Si ce n'est pas le cas, montrez en gras (ou dans une couleur différente) ceux auxquels l'article s'applique, avec un texte explicatif à droite, par exemple:

alt text

Vous devez absolument indiquer le nombre total d'éléments qui peuvent être déplacés car la liste peut être assez longue.

Bien sûr, ce n'est là qu'une des nombreuses variantes possibles.

6
Hisham

La réponse simple est ne laissez pas l'utilisateur commettre l'erreur en premier lie. Si une action ne peut pas être effectuée sur tous les éléments sélectionnés, vous devez désactiver l'action, expliquer à l'utilisateur pourquoi l'action ne peut pas être effectuée et suggérer une solution.

5
Antony Quinn

Je pense que la plupart des solutions d'interface utilisateur dépendent du contexte: une solution qui fonctionne pour "supprimer" ne fonctionne peut-être pas pour "déplacer" et une solution qui fonctionne dans un commerce électronique ne fonctionne peut-être pas dans un outil industriel.

Cela dit, dans l'abstrait, j'ajouterais probablement un indicateur numérique dans la "boîte qui apparaît" que vous avez citée, indiquant à l'utilisateur quelque chose comme: "29 éléments ciblés, 5 verrouillés" afin qu'il puisse continuer sans problème s'il le souhaite, ou vérifier quels sont les "éléments d'avertissement" en cliquant sur la partie "5 verrouillée".

De toute façon, j'éviterais tout "message d'erreur": c'est votre problème, pas celui de l'utilisateur. ;)

5
Folletto

En s'appuyant sur le contre-exemple ci-dessous - je voudrais voir une liste avec tous les éléments pop-up indiquant que seuls les éléments spécifiques auront l'action (nommée) appliquée (et ceux marqués différemment dans la liste) - et offrir un "Bien sûr, allez avant "et une action" Annuler ".

Il n'est pas confortable de réafficher une liste similaire, mais dans l'intérêt d'aller de l'avant, je pense que ce serait ma première prise.

Au moins, ne le faites pas comme le fait la console Microsoft Exchange 2010 - il génère une erreur pour tous les éléments sur lesquels l'action n'est pas prise en charge (une longue liste dans une petite fenêtre contextuelle modale non redimensionnable) et ne l'applique pas non plus à les éléments qui le soutiennent (sic). Il n'y a aucun moyen de sortir de la situation, sauf en annulant complètement l'idée et en creusant Powershell, ou en essayant de croiser la petite boîte de dialogue d'erreur modale pour désélectionner manuellement les éléments incriminés un par un derrière ... ^^

3
Oskar Duveborn

J'ai vu quelques approches pour faire face à cette situation, aucune d'entre elles n'est particulièrement satisfaisante:

  • Refuser la multi-sélection en silence. CorelDraw, par exemple, évite le problème en ne permettant pas aux utilisateurs de sélectionner plusieurs fois un mélange d'objets modifiables et non modifiables ("verrouillés") même pour afficher uniquement des informations en lecture seule. De même, IronCAD ne vous permet pas de sélectionner plusieurs objets de certaines classes différentes (par exemple, une caméra et une pièce). Cela me semble une restriction inutile.

  • Refuser silencieusement la commande. Windows XP vous ignore simplement si vous essayez d'ouvrir une fenêtre de propriétés pour plusieurs éléments de différentes classes (par exemple, Poste de travail et un fichier pdf). Cela pourrait être déroutant et frustrant.

Il me semble que vous voulez permettre à l'utilisateur la plus grande flexibilité en permettant la multi-sélection de tout et en faire autant que possible sur tout ce qui est sélectionné. Dans le même temps, vous ne voulez pas submerger votre utilisateur avec des boîtes de message comme décrit par Oskar Duveborn sur cette page.

C'est discutable si les utilisateurs font une erreur: peut-être qu'ils voulaient valider la commande X sur tous les objets dispersés dans la fenêtre à laquelle la commande X s'applique, sachant très bien qu'elle ne s'applique pas à certains objets. Ils tapent donc Ctrl-A et sélectionnent la commande X. Soutenir cette "astuce" serait très pratique. Ou peut-être qu'ils ont multi-sélectionné un tas de choses pour appliquer la commande X puis la commande Y. Il serait utile qu'ils n'aient pas à resélectionner ou ajuster la sélection multiple entre les commandes pour exclure les objets qui ne ne s'appliquent pas.

Voici quelques idées:

  • Tout d'abord, essayez d'indiquer les informations pertinentes dans la fenêtre principale/parent afin que l'utilisateur puisse deviner que certaines actions n'affecteront pas certains objets sélectionnés. Par exemple, donnez aux objets en lecture seule une apparence distincte, peut-être uniquement lors de la sélection (j'imagine de petits cadenas pour les poignées d'une application de type CAO). Chaque classe d'objet doit avoir une apparence distincte, peut-être en marquant chacune avec une icône particulière. De cette façon, lorsque les utilisateurs effectuent une sélection multiple, ils peuvent anticiper ce que font les commandes et n'ont pas de sens (par exemple, cet élément est une caméra, il peut donc être déplacé mais ne peut évidemment pas être redimensionné).

  • Si l'application ne peut pas dire ce qui s'applique à quoi jusqu'à ce que la boîte de dialogue soit ouverte, alors peut-être changer l'apparence de la sélection des objets pour lesquels l'action ne s'applique pas. Par exemple, lorsque l'utilisateur modifie une valeur de propriété, tous les objets qui n'ont pas cette propriété prennent une apparence de sélection "secondaire" dans la fenêtre parent.

  • Si les critères d'application d'une action ne sont pas évidents, vous aurez peut-être besoin d'indices de texte. L'élément de menu du bouton appelant l'action peut inclure dans sa légende le nombre d'éléments qu'elle affecte ou ce qu'elle affecte (par exemple, "Tôlerie uniquement"). Dans une zone Propriétés, vous pouvez inclure une colonne à côté de la colonne de propriétés qui indique que pour de nombreux éléments, chaque propriété s'applique ou peut être modifiée.

  • Cela peut être trop gourmand en espace, mais il vous suffit peut-être d'indiquer que seuls les objets certains sont affectés (pas le nombre exact, l'identité ou la proportion). Dans ce cas, vous pouvez peut-être utiliser une note de bas de page dans la boîte de dialogue. Créez un symbole qui signifie "partiel", peut-être un cercle à moitié rempli? (N'utilisez pas d'astérisque - cela signifie trop souvent "requis"). Mettez ce symbole par n'importe quel contrôle qui affecte un sous-ensemble de la sélection. Au bas de la boîte de dialogue, affichez le symbole avec le texte "= s'applique uniquement à certains éléments sélectionnés". Pour les actions qui n'utilisent pas de boîte de dialogue, utilisez le même symbole dans les légendes des éléments de menu ou des boutons de commande, y compris une info-bulle pour expliquer ce que cela signifie.

  • Idéalement, vous devez indiquer que l'action ne s'applique que partiellement avant que l'utilisateur n'engage cette action, mais en guise de solution de rechange, vous pouvez fournir des commentaires après l'action. En général, vous voulez rendre l'effet de toute action visuellement apparent dans vos objets dans la fenêtre parent, et cela peut être suffisant. Cependant, si vous êtes toujours préoccupé par la confusion des utilisateurs (par exemple, par des objets qui ont défilé hors de vue et qui ont ensuite remarqué qu'ils n'ont pas été modifiés), vous pouvez peut-être fournir une notification textuelle non modale (auto-suppression) qui dit " [actionné] [n] de [m] éléments sélectionnés "lorsque l'action est terminée. Peut-être fournir un lien d'aide au cas où l'utilisateur ne comprend pas pourquoi.

Je ne sais pas comment ces éléments fonctionneront réellement, donc ce sera une bonne idée de tester tout ce que vous déciderez des utilisateurs.

1
Michael Zuschlag

La réponse simple est ne laissez pas l'utilisateur commettre l'erreur en premier lie. Si une action ne peut pas être effectuée sur tous les éléments sélectionnés, vous devez désactiver l'action, expliquer à l'utilisateur pourquoi l'action ne peut pas être effectuée et suggérer une solution.

1
Antony Quinn

Quant à un exemple du monde réel, Jira me vient à l'esprit. Et cela montre au moins un inconvénient possible des actions de masquage: lorsque les gens ne réalisent pas qu'une certaine action n'est pas disponible, cela peut être assez frustrant. Vous ne pouvez pas déplacer des problèmes fermés, mais je ne le savais pas au début. J'ai cherché longtemps et durement avant de découvrir pourquoi il n'y avait soudainement aucune action de mouvement alors que j'étais très certain d'avoir déplacé les problèmes de cette façon auparavant.

Je pense que pour cette raison, la couverture cachée n'est pas la meilleure façon. Vous pouvez marquer les actions qui ne sont pas accessibles à tous, de préférence en expliquant pourquoi elles sont marquées. Je pense que cela pourrait très bien fonctionner si vous permettez aux gens de le sélectionner indépendamment et de les laisser s'appliquer à "ceux disponibles". Sinon, je pense qu'il est préférable de désactiver les éléments que de les masquer. (D'un autre côté, il faut veiller à ne pas se retrouver avec une liste d'actions qui est infiniment longue.)

1
Inca

Pourquoi ne pas faire ce que font les inspecteurs de propriétés/objets de nombreux environnements de développement intégré: afficher uniquement les propriétés communes à tous les objets sélectionnés sur un formulaire?

Dans votre scénario: offrez uniquement les actions groupées prises en charge par tous les éléments sélectionnés. Et mettez à jour la disponibilité (aspect activé) par rapport à la non-disponibilité (aspect désactivé) de toutes les actions en masse avec chaque élément sélectionné/désélectionné. De cette façon, l'utilisateur recevra des commentaires et déterminera rapidement quelles actions groupées sont disponibles sur quels éléments (et quels éléments ont quelles actions groupées en commun).

1
Marjan Venema

Il semble que la deuxième solution proposée dans la question elle-même fonctionne le mieux:

N'activez l'action que lorsque tous les éléments sélectionnés la prennent en charge.

Vous pouvez l'afficher désactivé, avec une explication à côté ou dans une info-bulle pour indiquer à l'utilisateur pourquoi cette action est désactivée.

Je pense qu'il peut être très déroutant de permettre à l'utilisateur de faire une action qui n'affecte qu'une partie de sa sélection, même en le notifiant après ou avant que le fait ne fonctionne pas car les utilisateurs ne lisent pas le texte.

Par conséquent, il est probable que tout avertissement ou explication n'empêchera pas l'utilisateur de simplement cliquer sur le bouton ET de fermer immédiatement la boîte de dialogue des notifications.

Cela dit, cela dépend de l'action et de l'application - si l'action déclenche un changement de cycle de vie d'un objet, affectant son état, etc. J'appliquerais "autoriser l'action uniquement lorsque tous les éléments sélectionnés le prennent en charge". Pour les éléments non essentiels à la mission, vous préférerez peut-être un meilleur flux que la précision.

1
Dan Barak

J'irais pour appliquer l'action aux articles qui l'acceptent et laisser le reste. Je pense l'utilisateur est assez intelligent pour savoir que l'action ne peut pas être appliquée aux autres éléments.

Si vous créez le reste de l'interface pour que l'utilisateur comprenne directement cela, cela ne devrait pas poser de problème et vous pouvez laisser les autres éléments sans message spécial.

C'est également ainsi que cela se fait dans Gmail par exemple. Prenez deux messages, un non lu et un lu, sélectionnez les deux et choisissez marquer comme lu. Le message non lu est marqué comme lu et celui déjà lu ne change pas. Le reste de l'interface (texte en gras et autre couleur d'arrière-plan) indique clairement que le message lu a déjà été lu.

(Gmail sait même que 2 messages ont été marqués comme lus, ce qui semble un peu étrange, mais ça va.)

1
Lode

Mon approche:

Laisser les utilisateurs sélectionner les éléments qu'ils souhaitent, laisser les utilisateurs sélectionner l'action qu'ils souhaitent si au moins un élément peut être affecté par l'action et une fois l'action effectuée renvoyer un message d'information: "les éléments x, y, z ne prennent pas en charge * action parce que * motif. "

Filtrer les actions qui peuvent être appliquées à au moins un élément sélectionné peut être un peu délicat.

0
Bobby Tables

Je ferais quelque chose comme: publier un message que tous les éléments n'ont pas la possibilité de supprimer/modifier/déplacer/etc. et avoir une liste avec leur entité définissant les valeurs de champ par la suite. Ou si leurs pas trop ont un temp. réorganisation avec les éléments n/a en haut de la liste, mis en évidence.

0
Billy