it-swarm-eu.dev

Návrh interakce pro kopírování podstromů

Předpokládejme, že v UI jsou vizualizovány dva datové stromy A a B v těchto řádcích:

enter image description here

Uživatel chce zkopírovat zvýrazněné uzly podstromů z A do B. Dva stromy mají některé sdílené uzly, jak jsou označeny id.

Jak byste navrhli interakci pro tento scénář? Jedním možným přístupem by bylo umístit zaškrtávací políčka vedle nesdílených uzlů a tlačítko „provést“/„kopírovat“ mezi dva stromy, ale je to nejlepší řešení, když se rozhodnete pro drag'n'drop?

Máte nějaké nápady na alternativní návrhy?

6
agib

Je přirozené, že stromy umožňují přetažení na spořádání uzly; zdá se však, že chcete zachovat hierarchii a pouze sloučit výsledky ...

Proto může být užitečné, aby aplikace právě identifikovala rozdíly a pak umožnila uživateli vybrat/potvrdit každou změnu (vložit, aktualizovat nebo smazat.)

1
Nescio

Pokud mi chybí nějaká omezení, použil bych drag-and-drop.

1
Hisham

Syntaxe akce s výběrem objektu, jak jste navrhli, je běžným standardním přístupem s grafickým uživatelským rozhraním, které je dobré použít, pokud ji rozšíříte na jiné příkazy než kopírování (např. Mazání, přesouvání, vlastnosti). To umožňuje jednoduché, konzistentní, ale výkonné uživatelské rozhraní. Nejsem si však jistý, zda bych pro výběr doporučil zaškrtávací políčka. Za předpokladu, že uživatelé obvykle zkopírují najednou pouze jeden uzel vyšší úrovně, napodobím chování správců souborů, jako je Průzkumník Windows, a použiji ikony, které jsou ve výchozím nastavení vybrány jednotlivě, ale podporují vícenásobný výběr pomocí metakeys (Shift a Ctrl) a přetažení. Výběr uzlu by měl zvýraznit tento uzel a všechny jeho uzly, aby bylo jasné, co uživatel vybere. OTOH, zaškrtávací políčka mohou být upřednostňována, pokud uživatelé obvykle potřebují kopírovat více nespojených uzlů, zejména pokud si nejste jisti, že jsou obeznámeni se standardními metodami výběru.

Alternativou syntaxe akce pro výběr objektu je přístup založený na řízení objektu, kde pro každý uzel přidáte malý ovládací prvek Kopírování. Jedním kliknutím se zkopíruje. To může být výhodné, pokud je kopírování jediné, co uživatel může s uzly udělat. Naproti tomu by samostatné ovládací prvky pro kopírování, přesouvání, mazání, vlastnosti atd. Pro každý uzel byly pravděpodobně příliš nepřehledné. Pokud jdete s ovládáním vyhrazeným pro objekt, můžete prezentovat ovládací prvek Kopírování pouze pro uzly v A, které mají sdílené uzly v B, což poskytuje jasnou indikaci toho, co může být kopírováno.

Ve vašem příkladu to vypadá, že funkce kopírování je omezena na kopírování do sdílených uzlů mezi stromy. Je to opravdu všechno, co může být dovoleno? Neexistuje vždy více než jeden cílový strom? Pokud ano, vaše jediné tlačítko Kopírovat je pravděpodobně nejlepší a máte právo zůstat daleko od přetahování. Drag and drop má špatnou zjistitelnost a je obtížnější než kliknout na tlačítko Kopírovat. Drag and drop může také přimět uživatele, aby si mysleli, že mohou provádět libovolné kopírování (např. Vložte Node 4 ve stromu A pod Node 18 ve stromu B) nebo dokonce přesunout uzly kolem vnitř Strom B).

Pokud je však možné a výhodné podporovat libovolné kopírování, zvažte použití dvou tlačítek pro použití idiomu Kopírovat a Vložit (přidáním třetího tlačítka Vyjmout pro podporu přesunu). Pokud podporujete libovolné kopírování, pak je vhodné zvážit také přetažení jako odbornou zkratku pro kopírování a vkládání.

1
Michael Zuschlag