Ich habe eine Sammlung von Elementen, die der Benutzer auf verschiedene Arten gruppieren / kategorisieren muss. Nehmen wir als Beispiel an, dass es sich um eine Sammlung von Autos handelt und der Benutzer diese auf folgende Arten kategorisieren möchte:
Sind Sie schon einmal auf eine besonders elegante Art und Weise gestoßen, die es dem Benutzer erlaubt, seine eigenen Kategorien und Werte zu definieren?
Offensichtlich gibt es viele Kompromisse in jedem Design zu machen. Zum Beispiel ist ein erlernbares Design möglicherweise nicht effizient und umgekehrt. Oder manche Designs sind anspruchsvoller als andere. Und einige werden sich wesentlich länger entwickeln als andere.
Trotzdem, wenn Sie ein gutes Muster dafür gesehen oder entworfen haben, würde mich das interessieren. Wenn Sie Screenshots haben, umso besser.Versuch zur Klärung : Tags sind in der Tat eine großartige Möglichkeit, Dinge zu kategorisieren, aber in allen Implementierungen, die ich gesehen habe, gibt es nur eine Ebene der Tagging. Der Benutzer kann im Allgemeinen keine Kategorie / Eigenschaft und den Wert des Elements in dieser Kategorie definieren. Um das obige Beispiel und das TagOverflow-Tagging zu verwenden, markieren Sie ein Auto als "blau", "Limousine", "4" usw. StackOverflow hätte kein inhärentes Wissen, dass ein Gegenstand nicht sowohl als "Limousine" als auch als "Coupé" gekennzeichnet werden kann.
Die Schnittstelle, an die ich denke, müsste so etwas wissen, also ist der Vorschlag für benutzerdefinierte Attribute mehr nach dem, was ich denke. Ich bin nur daran interessiert, ein konkretes Beispiel dafür zu finden, wie ein solches System elegant implementiert werden kann (in einer Desktop-App, wenn das einen Unterschied macht).
Ist das klarer? Wenn nicht, hinterlasse einen Kommentar und ich werde versuchen, es noch einmal zu klären. :)
Es scheint, als hätten Sie zwei Aufgaben: Aufgabe 1 Objekte kategorisieren, wobei der Benutzer für eine Reihe von Objekten jeweils eine Kategorie (Wert) für jede von mehreren Dimensionen (Attributen) zuweist. Aufgabe 2: Erstellen und Ändern von Dimensionen und Kategorien
Außerhalb von Datenmodellierern, objektorientierten Programmierern und Datenbankdesignern ist die Idee von Dimensionen und Kategorien ein sehr schwer zu fassendes Konzept. Sie sollten darauf vorbereitet sein, dass Benutzer den Unterschied zwischen Kategorien und Dimensionen nicht verstehen. Benutzer werden jedoch im Allgemeinen Tabellen verstehen, bei denen jede Spalte eine Dimension ist (die mehrere Kategorien umfasst) und jede Zeile ein Objekt ist. So viel wie möglich, arbeiten mit Tabellen.
Die erste Schlüsselfrage ist, durch Benutzerforschung herauszufinden, ob der Grad Aufgabe 1 und 2 integriert oder getrennt ist.
Wenn die Aufgaben integriert sind und die Benutzer oft ohne viel Nachdenken fließend von einem zum anderen wechseln, dann sollte ein UI-Entwurf eine Tabelle für einzelne Objekte enthalten, aber eine leere Spalte (oder eine Schaltfläche "Einfügen") enthalten ), damit der Benutzer eine Dimension hinzufügen kann. Die Spaltenüberschrift hat den Dimensionsnamen, den der Benutzer bearbeiten kann. Unter der Kopfzeile befindet sich ein Bereich, der die Kategorien dieser Dimension auflistet. Jeder Kategoriename kann bearbeitet werden, und es gibt eine leere Zeile (oder die Schaltfläche Einfügen), um eine neue Kategorie hinzuzufügen. Darunter befinden sich die zu kategorisierenden Objekte mit jeweils einer Dropdown-Liste in jeder Spalte für die Dimension.
Achten Sie beim Usability-Test auf Benutzer, die versuchen, die Kategorie eines Objekts festzulegen, indem Sie in der Kategorieliste auf eine Kategorie klicken und nicht aus der Dropdown-Liste auswählen. Lassen Sie die Kategorieliste optisch getrennt erscheinen, um dies zu verhindern.
Sie können eine Schaltfläche verwenden, um die Kategorielisten ein- und auszublenden, da dies sehr viel Platz beanspruchen kann (auch bei Verwendung von Bildlaufleisten). Auch wenn Aufgabe 1 und 2 eng integriert sind, denke ich, dass die Benutzer die Kategorienlisten manchmal aus dem Weg räumen möchten.
Wenn Sie feststellen, dass Aufgabe 1 und Aufgabe 2 getrennt sind und nur selten zusammen ausgeführt werden (z. B. wenn Benutzer ihre Dimensionen normalerweise festlegen und dann eine Gruppe von Objekten kategorisieren), ist es besser, ein separates Fenster (oder eine separate Seite) zu verwenden jede Aufgabe, obwohl es leicht sein sollte, zwischen ihnen hin und her zu navigieren. Zum Beispiel, während Benutzer in der Regel ihre Dimensionen im Voraus einrichten, dann selten ändern, manchmal ein Benutzer realisiert wird benötigt eine neue Kategorie für eine Dimension beim Kategorisieren eines ungewöhnlichen Objekts, so dass Sie eine "Kategorie hinzufügen" Menüelement, das den Benutzer nimmt Im Fenster "Kategorien verwalten" wird eine neue Kategorie für die aktuelle Dimension eingefügt, die darauf wartet, dass der Benutzer einen Namen angibt.
Das Fenster für Aufgabe 1 ist das gleiche wie zuvor: Tabelle der Objekte mit einer Spalte von Dropdown-Listen für jede Dimension, aber die Kategorielisten, die Bearbeitung der Dimensionsnamen und die Kapazität, eine neue Dimension hinzuzufügen, auszuschließen. Dies ist am effizientesten, wenn der Benutzer nach Objekten suchen muss, die kategorisiert oder neu kategorisiert werden müssen, oder wenn der Benutzer typischerweise ein Objekt mit einigen anderen vergleichen muss (z. B. um zu entscheiden, wie das Objekt zu kategorisieren ist). Wenn jedoch die Aufgabe des Benutzers wirklich darauf beschränkt ist, ein Objekt einzeln basierend auf externen Informationen zu kategorisieren (z. B. Informationen aus Papier zu transkribieren), dann betrachten Sie ein Formular und nicht eine Tabelle, die ein Array zeigt von Listenfeldern, eins für jedes Attribut. Mit einem einzigen Klick auf jedes Listenfeld zum Einstellen der einzelnen Kategorien ist dies schneller als mit Dropdown-Listen.
Das Fenster für Aufgabe 2 könnte wie der Kopfabschnitt für Aufgabe eins sein. Es stimmt mit der für Aufgabe 1 verwendeten Tabelle überein und ermöglicht es Benutzern, Kategorien für mehrere Dimensionen gleichzeitig zu sehen, und hilft ihnen dabei, das beste Kategorisierungsschema zu finden (z. B. um zu ermitteln, wo im Wesentlichen die gleiche Kategorie in zwei verschiedenen Dimensionen angezeigt wird). Wenn der Platz jedoch ein Problem ist, dann betrachten Sie eine Liste von Dimensionen, die jeweils eine Liste von Kategorien in einer Master-Detail-Beziehung zeigen.
Die ultimative Benutzerleistung und Flexibilität für Task 2 ist eine baumartige Steuerung. Die Wurzelebene des Baums umfasst Dimensionen und der nächste Schritt in der Hierarchie umfasst die Kategorien innerhalb jeder Dimension. Der Hauptvorteil besteht darin, dass Dimensionen, die von Kategorien abhängig sind, -abhängig unterstützt werden. Zum Beispiel kann eine Fahrzeugart-Dimension verwendet werden, die Kategorien wie Auto, Boot, Flugzeug usw. enthält. Für die Kategorie Fahrzeug kann dann eine Karosserietyp-Dimension mit Kategorien, die nur für diese Kategorie gelten (Coupé, Schrägheck usw.), verwendet werden. ). Abhängige Dimensionen werden im Baum durch Zweige einer Kategorie dargestellt. Das Ergebnis ist, dass der Baum zwischen Dimensionen und Kategorien mit jeder Ebene wechselt.
Es ist wichtig, die Kategorien visuell von den Dimensionen zu unterscheiden, vielleicht durch verschiedene Symbole, und vielleicht auch verschiedene Schriftarten, um den Benutzern zu sagen, dass alternierende Schritte in der Hierarchie qualitativ unterschiedlich sind (z.Wenn Sie eine Dimension erstellen, sollten Sie mindestens zwei Kategorien erstellen). Selbst dann stellen Sie ein Mittel zur einfachen Wiederherstellung bereit, wenn Benutzer Dimensionen mit Kategorien verwechseln (z. B. ihnen erlauben, eine Reihe von "Dimensionen" unter eine andere Dimension zu verschieben und erstere in Kategorien umzuwandeln).
Ich möchte noch einmal die Schwierigkeit betonen, die Menschen mit Abstraktionen wie Dimensionen und Kategorien haben. Selbst wenn sie es verstehen, haben die Menschen im Allgemeinen große Schwierigkeiten, anständige Dimensionen und Kategorien zu schaffen. Es gibt komplizierte Interaktionen, die dazu führen können, dass Sie durchdenken müssen (z. B. was passiert mit der Objektkategorisierung, wenn eine Kategorie in eine neue Dimension verschoben wird?). Wenn Sie erwarten, dass jeder Benutzer wirklich seine eigenen neuen Dimensionen erstellt, sollten Sie Ihren gesamten Ansatz ernsthaft überdenken. Es ist eine von Natur aus komplizierte Aufgabe.
Benutzer tun viel besser, wenn es bereits ein relevantes mehrdimensionales Schema in der Kultur, Organisation oder Domäne gibt (wie wir es für Autos haben). Wenn es bereits ein Schema gibt, können Sie es natürlich recherchieren und als Standardmenge von Dimensionen in Ihrem Produkt installieren. Task 2 muss nur unterstützt werden, damit erfahrene Benutzer die Feinabstimmung vornehmen können.
Sie können tags verwenden: Lassen Sie die Benutzer jedes Bild taggen und zeigen Sie dann eine Reihe von Bildminiaturen an, die nach Tags sortiert sind.
Vielleicht ist eine Reihe von benutzerdefinierten Attributen fortschrittlicher als Tags. Anstatt beispielsweise ein Bild mit "rot" zu kennzeichnen, markieren Sie es mit einem Attribut "color = red".
Ich würde ein Tagging-System vorschlagen, das dem hier auf stackoverflow ähnlich ist. Ermöglichen Sie ihnen, die Bilder zu markieren und dann nach Tag oder einer Kombination von Tabs anzuzeigen. Wenn Sie die Seite anzeigen, zeigen Sie Miniaturansichten der Bilder und die Tags für das Bild darunter an.
Bearbeiten: Basierend auf Ihren Erläuterungen könnten Sie Arten von Tags haben. Wenn der Benutzer seinen eigenen Tag definiert, müsste er angeben, von welchem Typ er stammt. In diesem Sinne würden Sie Limit-Tags nur für einen dieser Typen benötigen.
%Vor%Wenn ein Benutzer ein Bild hinzufügen möchte, geben Sie ihm eine Dropdown-Liste mit dem TagType. Darunter gibt es dann noch ein Drop-Down mit den TabSubTypes. Geben Sie ihnen die Option "Neu definieren", wodurch ein Textfeld angezeigt wird, in das sie einen neuen Typ eingeben können.
Ich würde diese Optionen auch dem Kontextmenü hinzufügen, damit Benutzer die Tags in einem Baumstrukturmenü anzeigen können. Sie können auch den Tastendruck verwenden, auch wenn ein Bild fokussiert ist, den Namen TagType und TagSubType nachschlagen und ein Menü mit Optionen zur Auswahl präsentieren. Wenn keine Übereinstimmungen gefunden werden, bieten Sie die Option "Zum Hinzufügen eines neuen Tags klicken" an.
Faceted Classification ist eine Möglichkeit, Dinge zu kategorisieren, die nicht die Aufmerksamkeit bekommen, die sie verdient. Sie können sich gegenseitig ausschließende Kategorien definieren und für jede Inhaltskategorie einen Wert angeben. Sie können beispielsweise Weine nach Region, Rebsorte, Jahrgang und Preis klassifizieren, und ein Nutzer führt seine Suche durch, indem er einen oder mehrere Werte in einer oder mehreren Kategorien auswählt. Zum Beispiel "Französische oder italienische Rottöne unter 40 $". Angenommen, Sie haben die Daten der Kategorie zur Hand, ist dies oft die leistungsstärkste verfügbare Klassifizierungs- und Suchmethode, besser als zu versuchen, alles in eine einzige Hierarchie einzupassen oder sich auf Tags zu verlassen.
Um dies im Backend zu implementieren, erstellen Sie Tabellen für jede Kategorie und füllen Sie sie mit den eindeutigen Werten. Erstellen Sie dann eine Tabelle mit einem Fremdschlüssel für jede Kategorietabelle zusammen mit einem Feld, das den Inhalt enthält. Dies ähnelt einer "Fakt" -Tabelle im dimensionalen Datenbankentwurf.
Um eine Vorstellung davon zu bekommen, wie dies in der Benutzeroberfläche funktioniert, werfen Sie einen Blick auf Facetmap. Ich kann nicht für ihr Produkt bürgen, weil ich es nicht benutzt habe, aber ich habe etwas Ähnliches für meine eigenen Anwendungen mit guten Ergebnissen implementiert.
Auch hier verdienen die Ideen hinter der facettenreichen Klassifikation mehr Aufmerksamkeit, und ich weiß, dass ich ihnen hier nicht gerecht werde. Für eine unterhaltsame Behandlung des Themas von Clay Shirky, hören Sie "Ontology ist überbewertet":
Ok, ich tendiere dazu, zu viel darüber zu reden, aber das Markieren ist nur ein Beispiel dafür, was Sie mit einer dreifachen Grafik machen können, zB mit RDF. [Link zu Wikipedia einfügen]. Jetzt weiß ich, dass Sie gesagt haben, dass Tags nicht genug sind, basierend auf den Anforderungen für die Verschachtelung, aber es gibt keinen Grund, dass Sie nicht weiter "Tags" als Kinder von einander "markieren" können.
%Vor%Auf diese Weise bleiben Ihre Daten hochflexibel und die Trennung zwischen Daten und Metadaten wird verschwommen.
Es scheint sich um ein Problem zu handeln, das speziell dafür angegangen werden muss, dass Benutzer dimensionale Daten in weitere, einfachere Dimensionen einteilen (Gruppen oder Kategorien, wie immer Sie sie nennen wollen), damit sie die Daten über die vereinfachten Kategorien besser visualisieren können / Dimensionen.
Der Benutzer muss in der Lage sein, eine Liste zu importieren, und beide erstellen Dimensionen für die Liste und kategorisieren dann die Liste basierend auf diesen Dimensionen intuitiv. Das Erstellen der Dimensionen würde aus dem Benennen / Umbenennen der Dimension (Name der Spalte) und dem anschließenden Hinzufügen / Umbenennen / Entfernen der Kategorien (Spaltenelemente) dieser Dimension bestehen. Es sollte nahtlos möglich sein, zwischen dem Erstellen neuer Dimensionen und dem tatsächlichen Kategorisieren der Listenelemente einzeln oder in großen Mengen unter Verwendung der vom Benutzer erstellten neuen Dimensionen zu wechseln. Der Benutzer könnte dann die Liste mit der zusätzlichen Spalte oder den zusätzlichen Spalten (Dimensionen) exportieren, die die neu erstellten Kategorien enthalten.
Die Idee ist, dass es viel benutzerfreundlicher wäre, nur eine Tabelle zu haben und Spalten hinzuzufügen. Idealerweise können Sie Elemente in der Liste auswählen und ihnen dann ein validiertes Kategorieelement aus der vom Benutzer erstellten Dimensionsliste zuweisen, die automatisch eine schreibgeschützte Tabelle auffüllt, die exportiert werden kann. Eingabe = Liste, Ausgabe = umfassend kategorisierte Liste. Keine Tabellenkalkulation erforderlich.
Tags und Links user-interface usability