web-dev-qa-db-fra.com

Quel est le meilleur modèle de conception pour diviser des objets en pièces?

Je souhaite concevoir l'interaction suivante: l'utilisateur achète 1 tonne de sucre et 100 pommes et souhaite qu'il lui soit expédié en 3 packs différents:

Pack 1: 200 kg de sucre et 50 pommes Pack 2: 100 kg de sucre et 30 pommes Pack 3: 700 kg de sucre et 20 pommes

Existe-t-il un motif qui pourrait m'aider à le concevoir? Cela ressemble un peu à l'interaction des fonctionnalités ADD/REMOVE dans l'ancien MS Office, mais il n'a pas eu à traiter le montant, uniquement les étiquettes sur une seule ligne.

2
Max

Je me suis récemment procuré un Humble Bundle , et vous devriez tous le faire aussi ;-)

Une partie de ce processus consiste pour l'utilisateur à décider comment répartir l'argent donné entre plusieurs entités (éditeur de jeu, deux organisations caritatives, équipe Humble Bundle). J'ai aimé la façon dont ils transmettent cette décision à l'utilisateur, faites défiler vers le bas sur la première page pour trouver ceci:

Humble Bundle amount splitting mechanism

Vous pouvez déplacer ces curseurs ou choisir l'une des divisions par défaut prédéfinies, ce qui à mon avis est astucieux en soi :-)

1
Jan

Hmm ... Vous avez une relation "somme à" à satisfaire.

Grid showing order

Elle est liée à cette question , mais appliquée à chaque ligne. Jetez un œil aux solutions qui s'y trouvent et voyez si vous souhaitez les adapter. Vous faites cela plusieurs fois.

Ma suggestion serait de les laisser entrer des chiffres dans l'un des champs de saisie. Vous signalez ensuite les incohérences où les chiffres ne s'additionnent pas. Vous modifiez l'apparence des champs qui sont incohérents. Vous affichez un message d'avertissement expliquant en dessous.

Les gens sont habitués à voir ce genre de ventilation tabulaire avec une colonne de totaux . Vous leur simplifiez la vie s'ils peuvent également entrer des quantités dans ce format.

Le modèle ici sépare la saisie des données de la logique de validation. Faites-le et vous autorisez les utilisateurs à travers de "mauvais états" sur leur chemin vers une solution valide. Cela rend la vie leur plus facile et donne vous plus de flexibilité dans la validation. Vous avez probablement déjà d'autres contraintes dynamiques, comme ne permettre à aucun paquet de dépasser 800 kg. L'approche décrite ici vous permet d'avoir de telles contraintes de colonne ainsi que les contraintes de ligne.

Un raffinement optionnel: Si vous voulez faire gagner du temps à l'utilisateur en tapant et en arithmétique, les entrées laissées vides peuvent être suggérées au crayon (en gris) automatiquement , en répartissant uniformément la quantité restante.

1
James Crook