Ejemplo de Permisos para sistema

En relación al post anterior, ahora explico cómo obtuve dicho JSON.

Primero, una imagen.Selección_002

El JSON se genera automáticamente al guardar los permisos, tomando como base las columnas “Activo”, “Reservas”, “Administrador”

En un sistema web usando el framework de Twitter, el famoso Bootstrap.

Una fila la completo así

        <tr>
            <td><%= m.get("nombre")%></td>
            <td><%= m.get("nombre_completo")%></td>
            <td><%= m.get("rut_usuario")%></td>
            <td><%= m.get("rut_asociado")%></td>
            <td><%= m.get("email")%></td>
            <td><%= m.get("fono_contacto")%></td>
            <td>
                <button type="button" class="btn activo
                        <%= ((Boolean)m.get("activo")) ? "active" : "" %>" data-id="<%=m.get("PK_Usuario")%>"
                    data-toggle="button" name="btnActivo"><%= ((Boolean)m.get("activo")) ? "SI" : "NO" %></button>
            </td>
            <td>
                <button type="button" class="btn reserva
                        <%= ((Boolean)m.get("puede_reservar")) ? "active" : "" %>" data-id="<%=m.get("PK_Usuario")%>"
                    data-toggle="button" name="btnReserva"><%= ((Boolean)m.get("puede_reservar")) ? "SI" : "NO" %></button>
            </td>
            <td>
                <button type="button" class="btn supervisa
                        <%= ((Boolean)m.get("es_supervisor")) ? "active" : "" %>" data-id="<%=m.get("PK_Usuario")%>"
                    data-toggle="button" name="btnSupervisa"><%= ((Boolean)m.get("es_supervisor")) ? "SI" : "NO" %></button>
            </td>
            <td><button type="button" class="btn btn-danger EliminarUsuario"
                data-id="<%=m.get("PK_Usuario")%>" >Eliminar</button></td>
        </tr>

Las últimas 4 filas son los botones. Sin considerar el último, los 3 son los botones de permisos. Los cuales marco dependiendo de si la persona tiene o no el permiso correspondiente. Recuerden que TODO corre en base a Bootstrap, por eso genero las clases “active” si es que el usuario tiene el permiso.

En el evento click del botón para guardar, tengo esto (repetido 3 veces, para los otros 2 tipos de acceso.

//ACTIVOS
var idsActivos = new Array();
var idsInActivos = new Array();
for(i = 0; i < $(':button[name="btnActivo"].active').length; i++){
    idsActivos.push($($(':button[name="btnActivo"].active')[i]).attr("data-id"));
}
for(i = 0; i < $(':button[name="btnActivo"]').length; i++){
    idsInActivos.push($($(':button[name="btnActivo"]')[i]).attr("data-id"));
}
idsInActivos= $.grep(idsInActivos, function(n, x){
    return $.inArray(n, idsActivos) == -1;
});

El primer for agrega al array idsActivos todos los “data-id” de los botones que se llamen “btnActivo”

El segundo hace lo mismo, para TODOS los botones que se llamen “btnActivo” y los guarda en el array idsInActivos

Y en la 3º parte, elimino los idsActivos que se encuentren en el array con todos los ids y luego lo reemplazo.

Una vez que tengo eso listo, con los 3 tipos de permisos, los agrego en 2 objetos distintos

var validar = new Object();
validar.Activos = idsActivos;
validar.Reservas = idsReserva;
validar.Supervisores = idsSupervisores;
var Novalidar = new Object();
Novalidar.NoActivos = idsInActivos;
Novalidar.NoReservas = idsInReserva;
Novalidar.NoSupervisores = idsInSupervisores; 

Ahora, guardo en notación JSON el contenido en una variable hidden y posteriormente envío el formulario.

$("#permisos").val(JSON.stringify({validar: validar, invalidar: Novalidar}));
$("#formPermisos").submit();

Y eso es todo😀

Espero les pueda servir, especialmente la parte de obtener los botones que estén activos, y la parte de eliminar elementos de un array, contenido en otro😀

Acerca de MaritoCares

Ingeniero Informático. Con tendencias a la programación en [C#, VB].NET, Java(Web principalmente...), PHP, JavaScript, algo mínimo de [ruby, python], y el clásico C.
Esta entrada fue publicada en JavaScript, Tips, Tutoriales. Guarda el enlace permanente.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s