insertaTabla() inserta tabla row, boton, accion
//INSERTA TABLA
/*-------------------------------------------------------------------------
InsertaTabla con listado en variable:
cuando la tabla se tiene que hacer a partir de una variable, y no del listado de $this->
-------------------------------------------------------------------------*/
$usuariosAplicaciones = $this->SoporteUsuariosAplicaciones->SoporteColaboradores->lista("apellidos, nombre ");
$s .= $this->insertaTabla(array(
"_escritura" => false,
"lista"=>$usuariosAplicaciones, //si fuera un insertaTabla de la instancia actual no haría falta
"campos"=> 'nombre, apellidos, nombreApp',
"permiteInsertar"=> false ,
"permiteEditar"=> false ,
"permiteBorrar"=> false
));
/*-------------------------------------------------------------------------
InsertaTabla EXPANDIDA:
Cuando queremos mostrar algun campo ascendente, al que podemos llegar a través
de relaciones entre las entidades. Si es descendente creo que se tendrian que
aplanar y concatenar con , (Confirmar)
-------------------------------------------------------------------------*/
$s.$MisProvincias->insertaTabla([
"expandida"=>true,
"campos"=>[
"provincia"=>["campo"=>"provincia"],
"pais"=>["campo"=>"MisPaises.pais","rotulo"=>"Pais"],
"capitulos"=>["campo"=>"MisAutores.MisLibros.titulo","rotulo"=>"libros"]
]
]);
/* Creo que los campos que soporta una columna son los siguientes */
"ordenable"=> ,
"soloLectura"=> ,
"anchura"=> ,
"resaltado"=> ,
"class"=> ,
"visible"=> ,
"rotulo"=> ,
"tipo"=> ,
"editor"=> ,
"parametros"=>
//Para forzar un editor específico
$usuario = new Usuario();
$usuario->añadeFiltro("qinnova = 1");
$usuario->añadeFiltro("activo = 1");
$s .= $usuario->insertaTabla([
"expandida"=>true,
"campos"=>[
"nombre"=>["campo"=>"nombre"],
"apellidos"=>["campo"=>"apellidos"],
"alta"=>[
"campo"=>"alta",
"tipo"=> "FechaA2" //existe un quontrol llamado editorFechaA2, así sustituimos el editor por defecto por el que nos interesa
],
]
]);
//Supongamos que tenemos un listado, quizás construido a mano, que queremos dibujar en forma de tabla
$listado = [...]; //un array con registros
//definimos los campos de la tabla (columnas)
$campos = [
"anio"=>["campo"=>"anio","rotulo"=>"Año","totales"=>"suma","tipo"=>"numero"],
"total"=> ["campo"=> "total", "rotulo"=> "Total", "totales"=>"suma", "tipo"=>"numero"],
"tudela"=>["campo"=>"tudela","rotulo"=> "Tudelanos", "tipo"=>"numero"]
];
//dibujamos la tabla pasándole el listado como parámetro
$s .= $this->insertaTabla(
[
"_escritura" => false,
"_class" => "tablaNoveles",
"expandida" => false,
"exportar" => true,
"totales" => true,
"lista" => $listado,
"campos" => $campos,
]);
botones y acceso a rows:
//PHP
//definimos los campos de la tabla (columnas)
$campos = [
"nombre"=>["campo"=>"nombre","rotulo"=>"Ponente" ,"tipo"=>"texto"],
"archivos"=>["campo"=>"archivos","rotulo"=> "Archivos", "tipo"=>"texto"],
//"id" => ["visible"=> false, "campo"=>"id", "rotulo"=> "id", "tipo"=>"texto"] (el array lo tiene, pero no hace falta mostrarlo como columna)
];
$s .= $webex->insertaTabla([
"_escritura" => false,
"_class" => "tablaArchivosPonentes",
"expandida" => false,
"exportar" => false,
"totales" => false,
"lista" => $tabla, //dataset. La lista tiene que tener un campo id para identificar a la fila
"campos" => $campos, //definición de columnas
"botones"=>[
"ficha"=>[
"rotulo"=>"ficha",
"tipo" => "icono",
"color" => "#369",
"icono"=> "user",
//"ayuda"=>"Ver ficha del ponente"
],
]
]);
//JS
//cuando se hace click en un botón de una fila, se dispara un accion con el identificador del botón (acción) y el campo id de la row (el dataset tiene que tener un id)
var tablaArchivos = $(".tablaArchivosPonentes");
tablaArchivos.on("accion", function(e,accion, id){
if(accion=="ficha"){
var fila = tablaArchivos.accion("valor", id);
}
});