Este framework JavaScript llamado Prototype agiliza bastante el desarrollo de tareas comunes con el html dom, en este ejemplo mi objetivo es el pedir confirmación del usuario mostrándole los nombres de los registros que se van a borrar. Mediante checkboxes el usuario selecciona los registros a eliminar y luego presiona el botón 'Eliminar'. Usaremos como shortcut el id de cada checkbox, el cual contendrá el nombre del registro a mostrar en el mensaje de confirmación.
Los checkbox deben tener la forma general siguiente:
<input id="checkbox<NombreRegistro>" type="checkbox" />
Por ejemplo:
<input id="checkboxRamiro" type="checkbox" />
<input id="checkboxAlejandro" type="checkbox" />
<input id="checkboxRaul" type="checkbox" />
<input id="checkboxAlberto" type="checkbox" />
<input id="checkboxJuan" type="checkbox" />
Agregamos al final de la forma un botón que mande llamar a la función javascript.
<input onclick="javascript:alertDelete()" type="button" value="Eliminar" />
La función JavaScript es la siguiente:
function alertDelete(){
var users = ''; // la variable en la que acumularemos los nombres de registros
$$('input').each(function(e){ if(e.type == 'checkbox' && e.checked) users += $(e).id; });
users = users.gsub('checkbox',' ').replace(/^\s+|\s+$/g, '').gsub(' ',', ');
if(users != ''){ confirm("Estas seguro de que quieres borrar los siguientes registros: "+users); }
}
Como ven el framework nos permite encontrar de forma bastante ágil los checkboxes que se encuentran seleccionados y al mismo tiempo recuperar el nombre de los registros a borrar, en una sola línea:
$$('input').each(function(e){ if(e.type == 'checkbox' && e.checked) users += $(e).id; });
Después simplemente le damos formato agregando comas para separar cada nombre:
users = users.gsub('checkbox',' ').replace(/^\s+|\s+$/g, '').gsub(' ',', ');
Primero sustituyo la palabra checkbox por un espacio en blanco, de esta manera quedarán solo los nombres de los usuarios separados por dichos espacios. Para eliminar espacios al inicio y final de la cadena utilizo el método replace de Javascript con una expresión regular: /^\s+|\s+$/g donde el /g indica que lo hará en toda la cadena. Finalmente sustituyo los espacios restantes por comas.
Y lo mostramos como una ventana de confirmación al usuario:
confirm("Estas seguro de que quieres borrar los siguientes registros: "+users);
Si seleccionas los checkboxes 1, 3 y 5 deberá mostrar un mensaje como el siguiente:
Estas seguro de que quieres borrar los siguientes registros: Ramiro, Raul, Juan
lunes, junio 27, 2011
miércoles, junio 22, 2011
Convertir de String a Map con Groovy
La idea es poder evaluar Strings del tipo: "a1:b1,a2:b2,..." a Mapas en Groovy, donde ai, bi son Strings que no contengan ',' ni ':'.
Primero hay que agregar el método al operador leftShift de la metaclase del mapa, para que podamos usar el operador leftShift:
LinkedHashMap.metaClass.leftShift << {
String it -> def p = it.split(','); p.each { putAt(*it.split(':')) }
}
Ahora podremos usar el operador para generar mapas a partir de Strings:
String mapa = "a:b,number:123456,hello:good bye" // el string a convertir
def m = [:] // mapa vacío
m << mapa // agregamos el string al mapa
assert m == [a:'b',number:'123456',hello:'good bye'] // probamos que se generó bien
Así de simple es Groovy :)
Primero hay que agregar el método al operador leftShift de la metaclase del mapa, para que podamos usar el operador leftShift:
LinkedHashMap.metaClass.leftShift << {
String it -> def p = it.split(','); p.each { putAt(*it.split(':')) }
}
Ahora podremos usar el operador para generar mapas a partir de Strings:
String mapa = "a:b,number:123456,hello:good bye" // el string a convertir
def m = [:] // mapa vacío
m << mapa // agregamos el string al mapa
assert m == [a:'b',number:'123456',hello:'good bye'] // probamos que se generó bien
Así de simple es Groovy :)
Suscribirse a:
Entradas (Atom)