Dans le cadre d'un flux de profil, je dois permettre à l'utilisateur de parcourir et de sélectionner des éléments individuels à ajouter à son profil.
Cette liste d'articles peut comprendre plus de 300 articles (les divisions de l'entreprise représentent), l'utilisateur doit pouvoir tout sélectionner, sélectionner individuellement et/ou sélectionner des multiples d'articles. L'utilisateur doit pouvoir voir ce qu'il a déjà ajouté.
Il y a certaines choses que je préfère ne pas faire ici: je ne veux pas seulement une grande liste (probablement paginée) des éléments avec des cases à cocher. Le cas d'utilisation typique est que 90% des utilisateurs voudront 90% des éléments (malheureusement, ceux-ci ne peuvent pas être regroupés logiquement), donc avoir à les vérifier individuellement serait une déception, même si vous avez tout sélectionné et que vous deviez ensuite chasser et picorer à désélectionner.
Je veux aussi quelque chose qui soit plus qu'une amélioration progressive par rapport à l'expérience actuelle. Il s'agit actuellement d'une zone de gauche contenant les éléments et vous les faites glisser vers la droite (ou sélectionnez et cliquez et ajoutez un bouton). La bonne partie à ce sujet est que vous pouvez voir facilement ce qui est dedans et ce qui est dehors, mais c'est super lourd avec de grands ensembles de données.
Certaines des suggestions à partir d'une question précédente gérer le clic et faire glisser les problèmes d'avant en arrière, mais je me demande si quelqu'un a un meilleur système que ce qui était proposé à l'époque.
Je dois donc expliquer un peu cela, en termes de 90% que quelques personnes ont commenté. Les 90% ne seront pas les mêmes pour tous les utilisateurs. Chaque client aura un nombre différent et auto-déclaré de "sociétés". Les 90% différeront donc selon le client. Une fois que le client a ajouté toutes les sociétés et que les premiers utilisateurs ont été ajoutés, il y a de fortes chances qu'il existe un modèle que nous pouvons saisir et aider à créer des regroupements logiques basés sur les sociétés précédemment affectées.
[~ # ~] modifier [~ # ~]
Ainsi, chaque client avec N nombre d'utilisateurs et N entreprises aura cet état initial à gérer. La création et la sélection d'entreprises par un client ne peuvent pas aider à déterminer la création et la sélection d'entreprises d'un autre client car elles sont complètement différentes. Les entretiens avec les utilisateurs ne seraient spécifiques qu'à ces clients individuels, et comme la plupart des clients structurent leurs "entreprises" de manière complètement différente, les entretiens avec les utilisateurs ne donnent que "Je veux sélectionner mes entreprises importantes à affecter à des utilisateurs spécifiques". Lorsque vous demandez quelles sont les entreprises "importantes", vous obtenez généralement la réponse "Cela dépend, et cela change souvent".
C'est pourquoi je cherche un bon modèle pour faire face à cela, les premiers utilisateurs de chaque client auront à se battre.
Nous avions commencé avec l'idée de demander aux gens de créer les regroupements logiques lorsqu'ils créaient des entreprises, mais cela a été rejeté pour des raisons techniques.
Merci pour toutes les contributions jusqu'à présent.
Il y a quelques mois, nous avons procédé à une refonte d'un multisélecteur qui ressemblait exactement au filaire affiché dans votre lien: deux champs, l'un rempli d'éléments et l'autre pour les éléments sélectionnés. (et il avait des boutons "Ajouter/Supprimer" au lieu d'une sélection par glisser-déposer ...)
Nous avons décidé d'utiliser selected.js pour nettoyer l'interface utilisateur et intégrer la recherche. Cela a très bien fonctionné pour nous, car le nombre d'éléments sélectionnés avait tendance à être faible pour ce flux de travail particulier.
Cela ne semble pas fonctionner pour votre modèle particulier avec la quantité d'articles à sélectionner.
Vous pourriez peut-être supprimer l'étape consistant à faire glisser et déposer des éléments en faisant changer l'état des éléments en un clic. Vous pouvez même ajouter plusieurs sélections au moyen d'une boîte de sélection.
La solution la plus simple dans mon esprit serait l'ajout d'un contrôle à votre sélecteur actuel qui permet à l'utilisateur de sélectionner tous les éléments (et ensuite ils peuvent revenir en arrière et désélectionner ceux dont ils ne veulent pas).
Vous dites que 90% des utilisateurs voudront 90% des options. Par conséquent, il semble qu'il y ait un ensemble de base que tout le monde possède.
Pourquoi ne pas attribuer ce noyau à tout le monde par défaut et laisser les utilisateurs modifier cette liste d'origine?
Cela atteint 2 objectifs: