Rails: Plugin para selecciones múltiples

7
Agosto
2006

Si sigo así esto se va a convertir en un “plugin de la semana para Rails”… (sí, ya se que son más allá de las 12, doy opciones: a - mis semanas empiezan en Domingo o b - lo hice la semana pasada pero las fechas de entrega nunca se cumplen). De cualquier forma está bien que pueda extraer código del proyecto que quizá sea útil para más personas.

El plugin esta vez es para facilitar las selecciones múltiples en las vistas. Cuando tenemos una relación muchos a muchos hay dos posibilidades: una interfaz con añadir y borrar o una lista de selección múltiple.

Lo malo de las segundas es que tienes que jugar con el teclado y el ratón para seleccionar múltiples elementos y es tremendamente fácil perder una selección pinchando sin querer. Por eso implementé una solución que evita el problema de la necesidad del uso del teclado y de los “pinchazos” sin querer.

Captura de pantalla de Multiple Select Helper

La lista tiene checkboxes en un lateral del forma que es posible seleccionar los elementos pinchando en ellos de uno en uno (en Firefox funciona incluso pinchando sobre el texto, en Explorer también, en Safari no… :(). Las listas se pueden generar desde arrays y desde colecciones de clases (su uso es similar a los métodos de FormOptionsHelper).

Además (como se puede ver en la parte de abajo de la captura) he implementado un método adicional que recorre estructuras arbóreas generando unas listas similares (la indentación de los subnodos está conseguida mediante CSS).

Como desventaja está que la selección con el teclado exclusivamente ya no funciona como en las listas normales. Aún se puede utilizar el tabulador y el espacio, pero no se pueden utilizar las teclas de dirección y la tecla de mayúsculas, por ejemplo. Otra cosa que me fastidia es que si la selección no está en la parte visualizada parece que la lista está “sin seleccionar”. Estaría bien que se moviera hasta el primer elemento seleccionado (seguro que alguién con JavaScript sabe hacer eso).

Mucha más información en la página del plugin.

PD: Entre hacer las pruebas, escribir la documentación, montar el repositorio, escribir las páginas del plugin, esta entrada,… casi vuelvo a perder el fin de semana… por suerte mañana no tengo reunión de progreso.


Deja un comentario

Puedes enterarte de las respuestas a tus comentarios de esta entrada mediante myComments.

XHTML: Puedes utilizar las siguientes etiquetas: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Tu servidor sin límites: 20GB de espacio, 1TB de transferencia, 1 dominio gratuito. Por 1.5€ al mes utilizando el código "RUIDOBLANCO" en DreamHost. Más información.