it-swarm.com.de

Optimale Schnittstelle zum Festlegen einer Zuordnung zwischen bekanntem Feldsatz und in der CSV-Datei erkannten Feldern?

Wir erstellen eine Datenimportfunktion, mit der unsere Benutzer eine beliebige CSV-Datei öffnen und eine Eins-zu-Eins-Zuordnung ihrer Felder zu einer Liste bekannter Felder in unserer Datenbank definieren. Die Liste der Felder ist sehr lang (ungefähr 30 bekannte Felder und eine beliebige Anzahl in der CSV [obwohl wahrscheinlich zwischen 20 und 50 in der CSV).

Eine naive Implementierung würde einfach darin bestehen, alle erkannten Felder in einer vertikalen Liste zusammen mit Kombinationsfeldern zur Auswahl der Zuordnung bekannter Felder anzuordnen.

[discovered 1] [combo]
[discovered 2] [combo]
etc

Oder horizontal,

[discovered 1] [discovered 2] [etc...]
[combo]        [combo]        [combo]

Die Probleme hier sind:

  • Eine lange Liste macht es unmöglich, die gesamte Zuordnung ohne Bildlauf anzuzeigen, um beispielsweise zu überprüfen, ob ein bekanntes Feld bereits zugeordnet wurde.
  • Verhindern der Mehrfachauswahl bekannter Felder oder Ändern einer Zuordnung.

Möglicherweise wäre ein besserer Ansatz ähnlich wie oben, außer mit ziehbaren Feldern für die bekannten Felder, die neben dem erkannten Feld positioniert werden können.

Ein weiteres zu berücksichtigendes Problem sind CSV-Dateien ohne Kopfzeilen: Wie kann jedes erkannte Feld identifiziert werden?

Gibt es Beispiele für eine gute Lösung für diese Interaktion?

12
Aidan Ryan

Viel hängt davon ab, was "Die Liste der Felder ist sehr lang" bedeutet. Können Sie Ihre Frage durch Angabe einer tatsächlichen Nummer klären? sowohl für die Anzahl der Felder in der CSV als auch für die Anzahl der Felder in der Datenbank. Sind die Feldnamen auch relativ kurz oder sind sie beschreibende Langnamen?

Grids kann einfach mehr Informationen anzeigen als Listen. Lassen Sie ein Raster für die in der CSV gefundenen Felder und ein Raster für die Felder in der Datenbank gleichzeitig anzeigen. Ziehen und ablegen, um sie abzugleichen. Es gibt dann visuelles Feedback darüber, was aus beiden Blickwinkeln verwendet wurde und was nicht, und es gibt eine unterschiedliche natürliche Möglichkeit, Änderungen vorzunehmen.

Große Gitter

Um mehr als 200 Felder in der Datenbank zu haben, benötigen Sie Möglichkeiten, einige der Felder auszublenden und nur Felder anzuzeigen, die von Interesse sind. Ein Registerkartensteuerelement mit 8 Registerkarten, das auf einer alphabetischen Sortierung basiert, ist eine einfache Möglichkeit, mehr darauf zu passen.

Ein weiteres zu berücksichtigendes Problem sind CSV-Dateien ohne Kopfzeilen: Wie identifiziere ich jedes erkannte Feld?

Es ist nichts Falsches daran, die entdeckten Felder "Feld 1", "Feld 2" usw. aufzurufen.

Um besser zu sein und dem Benutzer zu helfen, das Feld tatsächlich zu identifizieren, sollte auf dem Bildschirm ein Infobox angezeigt werden, das mehr Informationen für ein Feld enthält, z. B. 'Feld 1: Scheint ein Datum zu sein. Werte zwischen 9/Jul/1066 und 01/Apr/2035; 17 leere Einträge; 2 Einträge ohne gültiges Datumsformat; View'. Dies kann Informationen für das erste nicht zugeordnete Feld oder Informationen für ein Feld anzeigen, auf das gerade geklickt oder gezogen wurde.

Dies hilft, ob der Benutzer vom erkannten CSV-Feld zum Datenbankfeld oder vom Datenbankfeld zum erkannten CSV-Feld ziehen möchte.

Auto-Match

Sie haben nach einer optimalen Schnittstelle gefragt, falls Sie Feldüberschriften für das erkannte Feld haben. Wenn Ihre Software in der Lage ist, anhand von Name und Typ eine fundierte Vermutung darüber anzustellen, welches Feld aus der Datenbank übereinstimmt, kann dies im Infobox als "vorgeschlagene Übereinstimmung" angezeigt werden. Kontrollkästchen zur Bestätigung. Sie können auch einen Bildschirm haben, auf dem alle Vorschläge angezeigt werden und der in großen Mengen überprüft/akzeptiert werden kann.

4
James Crook

Wenn Sie eine große Anzahl bekannter Felder haben (mehr als zwei Dutzend), sollten Sie sie gruppieren oder hierarchisch anordnen, damit der Benutzer sie alle sehen oder zumindest alle sortieren und die verfügbaren Felder verstehen kann.

Präsentieren Sie sie auf einem Parkplatz - einer Seitenleiste oder einem Bereich des Bildschirms. Präsentieren Sie dann die erkannten Felder horizontal oder vertikal (abhängig vom Bildschirmbereich, der Breite der Felder und der Anzahl der Felder).

Lassen Sie den Benutzer dann bekannte Felder für erkannte Felder wie folgt angeben:

  1. Drag & Drop vom Parkplatz zum entdeckten Feld
  2. Tippen, wobei die Software durch Raten hilft (wie die Tags hier bei SE)
  3. Kombinationsfelder für jedes entdeckte Feld mit den bekannten Feldern in derselben Reihenfolge wie auf dem Parkplatz

Sie können die bekannten Felder hervorheben oder ausgrauen, die bereits verwendet werden, wenn der Benutzer sie auswählt.

Wenn der Benutzer ein Feld weiterhin ziehen oder eingeben möchte, können Sie es entweder stillschweigend vom vorherigen Speicherort entfernen oder eine Animation oder sogar ein Popup mit der Aufschrift "Sind Sie sicher, dass Sie dies aus dem erkannten Feld XXX entfernen möchten?" Geben ? "

2
Alex Feinman

Aufbauend auf früheren Antworten besteht eine ziemlich einfache Idee darin, ein Vorschau-Raster für die Daten zu haben (um Benutzern die Identifizierung der Felder zu erleichtern - manchmal reichen Überschriften nicht aus):

DB: [    v] [    v] [    v] ...
    column1 column2 column3
1.  foo     123     11/5
2.  bar     32      19/7

Die tatsächliche Auswahl erfolgt in einem Feld für die automatische Vervollständigung über jeder Spalte. Das Eingabefeld ist das Schlüsselelement, und es gibt viele Möglichkeiten, es zu verbessern.

Es könnte ungefähr so ​​aussehen:

 [p|      v] x
| Property  Publisher  *Party* |
| Place     Ponies     *Phone* |  
| Postcode                     |
  • Zeigen Sie die verfügbaren DB-Spalten oben in der Liste an.
  • Bereits zugewiesene DB-Spalten anzeigen (*---*) unten ausgegraut und mit einem Anzeigesymbol. Ermöglichen Sie die Auswahl und löschen Sie die alte Zuordnung sofort, wenn eine neue ausgewählt wird.
  • Wenn die Liste wahrscheinlich sehr lang ist, sollten Sie mehrere Spalten in der Dropdown-Liste berücksichtigen. Spalten helfen auch dabei, verfügbare und zugewiesene Elemente zu teilen (und versehentliche Klicks auf zugewiesene Elemente zu vermeiden).
  • Die automatische Vervollständigung filtert die Liste (daher ist kein Scrollen erforderlich).
  • Schaltfläche zum schnellen Löschen der Auswahl neben dem Feld (x)

Der Versuch, die Elemente automatisch abzugleichen (Best-Guess), wäre bemerkenswert hilfreich.

Hinweis : Ich bin stark voreingenommen gegenüber Drag & Drop, insbesondere wenn es um das Scrollen geht. Ein Kombinationsfeld kann schrittweise verbessert werden, während eine ausgefallenere Steuerung mehr Arbeit für die Grundfunktionalität erfordern würde. Es ist auch ein sehr bekanntes/erwartetes UI-Element.

2
dbkk

Beim Identifizieren jedes erkannten Feldes habe ich ein Dropdown-Menü mit den ersten 5 eindeutigen nicht leeren Werten für jedes der importierten Felder bereitgestellt (wobei der erste Wert in der Dropdown-Liste "importiertes Feld N" ist ").

Ein anderer Ansatz besteht darin, dem Benutzer eine Möglichkeit zu bieten, durch die importierten Datensätze zu blättern.

import mapping and import preview

2
Erics

Du hast deine Antwort schon, ich möchte immer noch Folgendes einwerfen:

Ich denke nicht, dass die Kombinationsfelder ideal sind. Unter völliger Missachtung der Entwicklungskosten würde ich ein kleines Spiel vorschlagen:

enter image description here

Setzen Sie sie in zwei Spalten. Durch Klicken auf ein Element (links oder rechts) wird ein Pfeil gezeichnet, der dem Mauszeiger folgt, bis Sie auf ein Element aus der anderen Spalte (Übereinstimmung) oder an einer anderen Stelle (Nichtübereinstimmung) klicken.

Verschieben Sie erfolgreiche Übereinstimmungen nach oben, damit sie "aus dem Weg" sind, sie aber dennoch auswählen und umleiten können.

Tastaturnavigation bereitstellen (Cursor nach oben/unten/links/rechts zum Auswählen, Eingabe oder Leertaste zum "Klicken", Sie müssen den Status "Ausgewählt" angeben).

Stellen Sie visuelle (und möglicherweise sogar akustische) Hinweise bereit. Behandle es wie ein Kinderspiel.

Wenn der Platz nicht ausreicht, sollte das Scrollen größtenteils in Ordnung sein. Wenn nicht, können Sie den Bildschirm vertikal teilen und jeden Satz in einem Raster auf jeder Seite anordnen:

enter image description here

Begründung

Das Kombinationsfeld nutzt den Bildspeicher nicht aus. "Charles war irgendwo da drüben". Dies wäre eine große Hilfe für einen großen Teil der Benutzer. Es mag eine Verschlechterung für Menschen sein, denen dieses Merkmal fehlt, aber das ist ausreichend niedrig und wahrscheinlich nicht einmal so viel schlimmer als die Combobox-Lösung.

Das Kombinationsfeld listet - in trivialer Ausführung - immer alle Elemente auf, erfolgreich übereinstimmende Elemente werden nicht entfernt. Das wäre schon eine Verbesserung, aber dann brauchen Sie eine Möglichkeit, Übereinstimmungen zu entfernen.

2
peterchen