it-swarm.it

Progettazione di interazioni per la copia di sottoalberi

Supponiamo di avere due alberi di dati A e B visualizzati nell'interfaccia utente secondo queste linee:

enter image description here

L'utente vuole copiare i nodi della sottostruttura evidenziati da A a B. I due alberi hanno alcuni nodi condivisi come indicato dall'ID.

Come progetteresti l'interazione per questo scenario? Un possibile approccio sarebbe quello di posizionare le caselle di controllo accanto ai nodi non condivisi e un pulsante "Esegui"/"Copia" tra i due alberi, ma è questa la soluzione migliore quando si annulla il drag'n'drop?

Hai idee per progetti alternativi?

6
agib

È naturale che gli alberi ti consentano di trascinare e rilasciare su riorganizza nodi; tuttavia, sembra che tu voglia mantenere la gerarchia e solo nire i risultati ...

Pertanto, può essere utile che l'applicazione identifichi semplicemente le differenze e consenti all'utente di selezionare/confermare ogni modifica (inserire, aggiornare o eliminare).

1
Nescio

A meno che non mi manchi qualche vincolo, utilizzerei il trascinamento della selezione.

1
Hisham

Una sintassi di selezione-oggetto-azione come tu suggerisci è un approccio GUI standard comune che è buono da usare se lo estendi a comandi diversi dalla copia (ad esempio, eliminazione, spostamento, proprietà). Ciò consente un'interfaccia utente semplice, coerente e potente. Non sono così sicuro di raccomandare le caselle di controllo per la selezione, comunque. Supponendo che gli utenti in genere copino solo un nodo di livello superiore alla volta, imiterei il comportamento in file manager come Esplora risorse e utilizzerei icone che sono selezionate singolarmente per impostazione predefinita, ma supportano la selezione multipla tramite metakey (Shift e Ctrl) e trascinamento selezione. La selezione di un nodo dovrebbe evidenziare quel nodo e tutti i suoi sottonodi per aiutare a chiarire ciò che l'utente sta selezionando. OTOH, le caselle di controllo possono essere preferite se gli utenti di solito devono copiare più nodi non associati, soprattutto se non si è sicuri che abbiano familiarità con i metodi di selezione multipla standard.

L'alternativa alla sintassi azione-selezione-azione è l'approccio di controllo dedicato agli oggetti in cui si include un piccolo controllo Copia per ciascun nodo. Un clic ed è copiato. Questo può essere preferito se la copia è l'unica cosa che l'utente può fare con i nodi. Al contrario, avere controlli di Copia, Sposta, Elimina, Proprietà, ecc. Separati per ciascun nodo sarebbe probabilmente troppo ingombrante. Se si utilizza il controllo dedicato agli oggetti, è possibile presentare un controllo Copia solo per i nodi in A che hanno nodi condivisi in B, fornendo una chiara indicazione su ciò che può essere copiato.

Nel tuo esempio, sembra che la tua funzione Copia sia limitata alla copia su nodi condivisi tra gli alberi. È davvero tutto ciò che può essere permesso? Non c'è sempre più di un albero di destinazione? In tal caso, il tuo singolo pulsante Copia è probabilmente il migliore e hai ragione a stare lontano dal trascinamento della selezione. Il trascinamento della selezione ha scarsa rilevabilità ed è più difficile da fare rispetto al semplice clic su un pulsante Copia. Il trascinamento della selezione può anche far pensare agli utenti di poter eseguire una copia arbitraria (ad esempio, mettere Node 4 nella struttura ad albero sotto Node 18 nella struttura ad albero B, o persino spostare nodi intorno entro Albero B).

Se, tuttavia, è possibile e vantaggioso supportare la copia arbitraria, allora considera di avere due pulsanti per utilizzare il linguaggio Copia e Incolla (aggiungi un terzo pulsante Taglia per supportare lo spostamento). Se supporti la copia arbitraria, vale la pena considerare anche il trascinamento della selezione come scorciatoia da esperto per Copia e incolla.

1
Michael Zuschlag