alvaro-prieto
4/27/2017 - 7:12 AM

insertaTabla() fila row

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);
	}
});