Actualmente estoy trabajando en un control que he denominado gridlookup, que esencialmente es un grid al que se le pueden ir agregando lineas, ya sea buscando un código específico, o con una búsqueda avanzada.
Me esta quedando muy bien, muy fácil de usar y ayuda a reducir una buena cantidad de codigo HTML y JavaScript que el programador tendría que escribir si no lo usara.
Pronto subire la versión con ese control incorporado.
Hace mucho tiempo que no escribo una entrada, pero les comento que tengo una nueva versión que es funcional y sobre la cual construí todo un sistema de trazabilidad de producción de café.
Le agregue varias cosas al framework, espero lo puedan usar. No he trabajado mucho en la documentación, no me queda mucho tiempo para dedicarle.
He estado trabajando en los controles, haciendo un par de ajustes y creando controles nuevos. Funcionalmente ya tengo los input, datepicker, textarea, checkbox y radio button. Esos controles básicos suplirán cualquier necesidad.
Ahora estoy creando un control que he denominado lookup. El lookup sera un input con un boton añadido que me levantará una ventana modal para hacer busquedas en la base de datos. Bastará con definir que taba, que campos y que filtros tendrá y hará todo el trabajo por nosotros.
Por otro lado estoy trabajando en algo que he denominado funciones en cache. En realidad es guardar funciones o comandos PHP en una variable de sesión para despues ejecutarlas mediante AJAX sin que el desarrollador tenga que volver a escribirlas. ¿En que me va a ayudar? Me ayudará por ejemplo en los combobox o select que se actualizan en cascada (el típico ejemplo de pais, provincia, ciudad), o en los mismos lookup que estoy haciendo para que la búsqueda en la base de datos desde los filtros no tenga que especificarse en una funcion o que el desarrollador tenga que escribir el código para generar los objetos y aparte el código para los callback desde AJAX. Quedará muy bien.
He seguido trabajando en el grid, pero por el momento llegaré hasta la la parte de los filtros, el ordenamiento de datos, celdas tipo link, y tipo barra de progreso. Quedo muy bien y fácil de usar. Se le puede especificar si se requiere que sea cargada mediante Ajax, o mediante la forma tradicional de parámetros por el método get.
El código para utilizar el grid queda como el siguiente:
class indexModel extends model{
public $dataGrid;
function getDataGrid($args=array()){
/*Extraemos los argumentos en variables*/
extract($args);
/*Si el argumento $page no viene declarado, dejamos por defecto que página a mostrar sea la primera*/
if(!isset($page)){
$page=1;
}
/*Declaramos el tipo del objeto*/
$this->dataGrid=new datagrid(array("id"=>"prueba","title"=>"Prueba de grid"));
/*Seteamos si permitiremos filtros o no en las columnas*/
$this->dataGrid->allowFilters(true);
/*Seteamos si el grid sera llenado por Ajax.
* Esto ejecutará una funcion dentro del modelo que se debe declarar y cuyo nombre
* debe ser el id que se definió anteriormente mas las palabras 'DataGridCallback'*/
$this->dataGrid->allowAjaxCall(true);
/*Setea los campos del grid*/
$this->dataGrid->setFields("id,txt_desc,fecha,numero,porcentaje");
/*Setea los tipos de cada campo en el orden que se declararon anteriormente*/
$this->dataGrid->setTypes("number,string,date,number,progressbar");
/*Vinculoa una accion a una de las columnas, en este caso un hipervinculo*/
$this->dataGrid->bindFieldTypeParameter("id", "link", "?c=admin/dhdh&other=#fecha#&other2=#porcentaje#");
/*Setea que el grid debe buscar los datos en la base de datos*/
$this->dataGrid->getFromTable("grid_test",$page,"","ID, Nombre, Fecha, Número,Porcentaje",$filter,$order);
}
/*Funcion que se ejecutará cuando haya un llamado Ajax*/
function pruebaDataGridCallback($args=array()){
extract($args);
/*Declaramos el tipo del objeto*/
$dataGrid=new datagrid(array("id"=>"prueba"));
/*Obtenemos los datos. El objeto detectará que el llamado actual es un llamado Ajax, y devolverá sólamente los datos,
* sin el resto del código DOM*/
$dataGrid->getFromTable("grid_test",$page,"","ID, Nombre, Fecha, Número,Porcentaje",$filter,$order);
}
}
Lo que nos renderiza es algo como esto:
Un grid sencillo, fácil de usar.
Por el momento hasta aquí llegaré con el grid, ahora debo seguir con otros controles como los radio button, los checkbox y voy a hacer un objeto para subir archivos que será super fácil de usar. Hasta pronto.
Te parecerá poco, pero llegar a esto me ha llevado un buen tiempo. Claro que cuando alguien utilice el framework, hacer estas sencillas páginas, sera cuestión de minutos.
He estado trabajando en el grid. Como sabrán hay muchos grid para PHP, uno de los mejores es phpGrid, pero decidí hacer uno propio, y me esta quedando muy bien.
A este grid se le puede definir si funcionará enviando parámetros a través de método GET o se le podrán hacer recargas de información por medio de AJAX. Por el momento sólo tengo la paginación y el re-ordenamiento de los datos, se ve así:
Sigo ahora con la parte de filtrado y re-dimensionamiento de las columnas. Después trabajare en la parte de crear, modificar o eliminar registros, y por último en la funcionalidad de definir los tipos de datos de cada columnas y que se puedan hacer links, o tal vez lo haga de primero, no lo se aun.