web-development-kb-es.site

Diseño de interacción para copiar subárboles

Supongamos que tenemos dos árboles de datos A y B visualizados en la interfaz de usuario a lo largo de estas líneas:

enter image description here

El usuario desea copiar los nodos de subárbol resaltados de A a B. Los dos árboles tienen algunos nodos compartidos como lo indican los id.

¿Cómo diseñaría la interacción para este escenario? Un enfoque posible sería colocar casillas de verificación al lado de los nodos no compartidos y un botón "ejecutar"/"copiar" entre los dos árboles, pero ¿es esta la mejor solución al optar por arrastrar y soltar?

¿Tienes alguna idea para diseños alternativos?

6
agib

Es natural que los árboles le permitan arrastrar y soltar a reorganizar nodos; sin embargo, parece querer mantener la jerarquía y solo fusionar los resultados ...

Por lo tanto, puede ser útil que la aplicación identifique las diferencias y luego permita al usuario seleccionar/confirmar cada cambio (insertar, actualizar o eliminar).

1
Nescio

A menos que me falte alguna restricción, usaría arrastrar y soltar.

1
Hisham

Una sintaxis de selección de objeto y acción como la que usted sugiere es un enfoque de GUI estándar común que es bueno usar si lo va a extender a otros comandos además de copiar (por ejemplo, eliminar, mover, propiedades). Esto lo convierte en una interfaz de usuario simple, consistente y potente. Sin embargo, no estoy tan seguro de recomendar las casillas de verificación para la selección. Suponiendo que los usuarios generalmente solo copian un nodo de nivel superior a la vez, imitaría el comportamiento en los administradores de archivos como el Explorador de Windows y usaría iconos que se seleccionan de forma única de forma predeterminada, pero admiten la selección múltiple a través de metakeys (Shift y Ctrl) y selección de arrastre. La selección de un nodo debería resaltar ese nodo y todos sus subnodos para ayudar a aclarar lo que el usuario está seleccionando. OTOH, pueden preferirse las casillas de verificación si los usuarios generalmente necesitan copiar múltiples nodos no asociados, especialmente si no pueden estar seguros de que están familiarizados con los métodos estándar de selección múltiple.

La alternativa a la sintaxis de acción de selección de objeto es el enfoque de control dedicado de objeto donde incluye un pequeño control de Copia para cada nodo. Un clic y se copia. Esto puede ser preferible si copiar es lo único que el usuario puede hacer con los nodos. En contraste, tener controles separados de Copiar, Mover, Eliminar, Propiedades, etc. para cada nodo probablemente sería demasiado abarrotado. Si utiliza el control dedicado a objetos, puede presentar un control Copiar solo para los nodos en A que tienen nodos compartidos en B, lo que proporciona una indicación clara de lo que se puede copiar.

En su ejemplo, parece que su función Copiar se limita a copiar en nodos compartidos entre los árboles. ¿Es eso realmente todo lo que se puede permitir? ¿Siempre hay más de un árbol de destino? Si es así, su único botón Copiar es probablemente el mejor, y tiene razón en mantenerse alejado de arrastrar y soltar. Arrastrar y soltar tiene poca capacidad de detección y es más difícil de hacer que simplemente hacer clic en el botón Copiar. Arrastrar y soltar también puede hacer que los usuarios piensen que pueden realizar copias arbitrarias (por ejemplo, poner Node 4 en el Árbol A debajo de Node 18 en el Árbol B, o incluso moverse) nodos alrededor de dentro Árbol B).

Sin embargo, si es posible y ventajoso admitir la copia arbitraria, considere tener dos botones para emplear el idioma Copiar y Pegar (agregue un tercer botón Cortar para admitir el movimiento). Si admite la copia arbitraria, vale la pena considerar también arrastrar y soltar como acceso directo experto para Copiar y Pegar.

1
Michael Zuschlag