2009-10-16 11 views
6

¿Qué es una buena interfaz de usuario basada en web para capturar una duración de tiempo del usuario. Digamos que queremos capturar una duración de tiempo en minutos. Pero me gustaría presentarlo de manera que el usuario pueda ingresar horas y minutos.Interfaz de usuario para capturar un intervalo de tiempo o duración

¿Solo usar 2 cuadros de texto para hrs \ min? ¿O un solo cuadro de texto y dejarlos escribir "1hr 31min" o "91 min"?

¿O hay algo mejor?

Respuesta

1

Gracias por todo el comentario.

Lo que finalmente terminó haciendo era, que tiene un único cuadro de texto que muestra la duración de tiempo en el formato "xxhrs yymin"

El usuario puede editar y cuando el foco se aleja del cuadro de texto, vuelve a calcular la duración y reformatea el texto en la forma canónica.

El analizador para interpretar el texto introducido es bastante liberal.

Es un conjunto de expresiones regulares para hacer coincidir cualquier número seguido de 'h' o 'm' o 'd' para representar horas, minutos y días. Si no encuentra ninguna 'unidad' con un número delante, supone que ha escrito un número puro en minutos y lo interpretará como tal.

lo tanto, si el usuario escribe:

"1,5 h", que van a cambiar el formato de "30 minutos 1 hora" a la salida de la caja de texto.

"90 minutos" también será formateado como "30 minutos 1 hora"

El analizador sólo se ve en el primer carácter que sigue al número, lo que significa que puede introducir "1 día, 7 horas y 19 minutos" y se lo reconocerá correctamente

Por supuesto, también reconocería "2 agujeros y 19 ratones" como "2 horas y 19 minutos".

Creo que puedo vivir con eso.

1

Simplemente déjelos escribir los números solo en un formato de tiempo predefinido.

Coloque 2 cuadros de texto para la hora y el minuto sin la hora o el mínimo.

También debe definir si es un sistema de 24 horas o 12 horas.

+0

Bueno, es una duración de tiempo. Entonces no hay un concepto de 12 horas de 24 horas ¿verdad? En teoría, podrían ingresar "32 horas 30 minutos" –

+0

Ok. ¿Qué sucede cuando ingresa un minuto mayor a 60? – rahul

2

Si tiene dos cuadros de texto etiquetados como horas y minutos, deberá ocuparse del caso en que el usuario escribe en ambos.

3 into h and 35 into m => pretty clear. 3 hours 35 mins 

nothing into h and 95 into m => 1 hour 35 mins (probably update the display to show that) 

pero ¿qué pasa

2 into h and then 95 into m => does that mean 3 h 35 or 1 hour 35 

He usado muchas interfaces de usuario molestos, donde el cambio de un campo zapping otras entradas para confiar en que puedo diseñar un conjunto de comportamientos unastonishing.

Por lo tanto, me gustaría ir a una sola caja en la que podemos escribir 3h o 1h 35m o 95m y tener una pantalla de solo lectura separada de la interpretación.

Parece haber una oportunidad para que un widget agradable permita una entrada manejada por el mouse, de la misma manera que un widget de calendario permite la entrada de fecha. Un pequeño reloj con las manos dragable?

1

Bueno, separar los campos de horas y minutos es el más seguro pero más lento de usar que un solo campo. Puede establecer las horas predeterminadas en 0 si no espera muchas duraciones de más de 1 hora.

Tal vez depende de su población, pero espero que los usuarios serán capaces de manejar las horas y minutos en el mismo cuadro de texto si se proporciona un indicador, tales como “tiempo de duración (horas: minutos):”

Con ese aviso, acepte cualquier cadena inicial ininterrumpida de números como las horas y cualquier cadena de números ininterrumpida posterior como minutos, de modo que todas las siguientes entradas se consideren equivalentes.

  • 2:30

  • 02:30

  • 02:30:05

  • 2,30 (o tal vez no: mientras grande para teclado de entrada, pero es posible que desee haga una excepción para el punto decimal para permitir al usuario ingresar horas fraccionarias, como 2.75 por 2 horas y 45 minutos.)

  • 2 hrs 30 min

  • 2 horas, 30 minutos

  • 2jaQp 30 !!!!

veo ninguna razón para exigir que las actas sean menos de 60. El usuario también debe ser capaz de expresar la fecha en que:

  • : 150

Cuando el foco abandona el campo, corrige automáticamente lo que los usuarios ingresen al formato especificado (hrs: min) para retroalimentar la interpretación que hizo.

Si todo lo que necesita para su propósito es una aproximación aproximada de tiempo (o sus usuarios solo estiman de todos modos), considere botones de opción o una lista desplegable con intervalos de duración (por ejemplo, 0 a 5 minutos, 5 a 15 minutos, 15 minutos a 1 hora, más de una hora). O si hay límites definidos en las duraciones y los intervalos son funcionalmente lineales, puede usar un control deslizante etiquetado.

Cualquiera que sea el formato de entrada o control que use, debe ser compatible con la fuente de información. ¿Dónde obtienen los usuarios esta duración? ¿Qué unidades, formato, intervalos y grado de precisión se usan allí? ¿Cómo piensan y hablan los usuarios sobre el tiempo entre ellos?

+0

Su ejemplo de: 150 no funcionará con el resto de la respuesta, ya que se interpretará como 150 horas. De todos modos, no creo que esta libertad sea buena para el usuario, ya que es algo que no espera y generalmente no sabrá cómo usarlo. –

+0

Por "cadena inicial de números" quise decir la cadena inicial cuando comienza con un numeral, así que: 150 no tiene una cadena inicial de números, por lo que las horas son 0 y los minutos son 150. No puedo ver cómo la libertad inesperada será un problema. La mayoría de los usuarios nunca lo descubrirán (nunca pensarán en escribir "2 30"), pero a los que lo hagan les puede resultar útil (escribir dos puntos es relativamente incómodo en muchos teclados). Limitaciones inesperadas. Ahora es un problema. –

0

Creo que no debería haber ninguna corrección del lado del cliente para los minutos superiores a 60 como alguien sugirió. Solo sería confuso y generaría problemas innecesarios.

El usuario ingresó los datos por lo que debe entender lo que escribió y no hay necesidad de corregirlo.

Dejaría estos campos tan completos como usuario. En el lado del servidor simplemente calcularía el total de minutos como:

$total_minutes = 60 * $_POST['hours'] + $_POST['minutes']; 
0

Estaba pensando en esto y me di cuenta de que una interfaz de usuario conocida para este tipo de cosas es un horno de microondas. Para usos similares a los de un iPhone, un teclado puede ser mejor que el scroll scroll que a menudo veo.

En mi caso, creo que voy a ir con un campo de texto para "número" y una casilla de selección para "unidad" (años, meses, semanas, días, horas).

Los controles deslizantes (jqueryui, html5) también pueden ser una opción, dependiendo del tipo de rango del que se trate.

Cuestiones relacionadas