web-dev-qa-db-fra.com

Permettre aux utilisateurs de sélectionner tous les éléments sauf quelques-uns

J'ai une liste de noms de pays (par exemple ci-dessous)
enter image description here

Je veux que l'utilisateur soit en mesure de sélectionner quelques pays ou, de sélectionner tous les pays sauf quelques-uns.

Maintenant, cela peut être fait en utilisant un bouton Tout sélectionner en sélectionnant tous les éléments, puis en décochant ceux qui ne sont pas requis. Cependant, cela crée une longue requête à envoyer au backend.

Par exemple, si je souhaite sélectionner tous les pays sauf l'Argentine, la requête ressemblera à quelque chose comme suit:

select(Australia, Austria, Belgium...)

Je veux transformer cette requête en

except(Argentina)  

Comment afficher/indiquer à l'utilisateur qu'il peut sélectionner les pays pour lesquels il souhaite des détails ou les pays pour lesquels il ne souhaite pas de détails?

3
Ashwin Nepal

Tout d'abord, vous devez essayer d'éviter de décider comment quelque chose doit se comporter à l'écran en fonction de la contrainte technique de ce que vous envoyez au serveur. Vous pouvez utiliser JavaScript pour refléter une version modifiée de la sélection en tant qu'entrées masquées à soumettre sans que cela n'affecte l'interface utilisateur.

Cela dit, je pense que c'est un bon candidat pour le modèle d'interface constructeur de liste (également appelé liste double), qui vous permettrait d'ajouter ou de supprimer des éléments individuels à la sélection. Vous pouvez également ajouter des boutons pour "Ajouter tout" ou "Supprimer tout". Je soupçonne que ce serait une interaction plus naturelle:

List Builder UI from Microsoft's Windows Design Guidelines
Crédit d'image: Microsoft Windows Design Guidelines for List Boxes

2
Kit Grose

Du point de vue de l'utilisateur, le moyen le plus simple est un sélecteur "inversé". Par exemple. Je connais un logiciel où je coche deux cases et que j'inverse la sélection avant d'appuyer sur le bouton "Rechercher". Mais cela nécessite un certain niveau d'instruction et d'abstraction de la part de l'utilisateur.

Une solution possible pour ignorer l'étape "inverser" serait de fournir deux boutons:

  • Rechercher dans tous les pays marqués
  • Rechercher partout sauf dans les pays marqués

Je pense que c'est la plus pratique.

0
JonnyZoo