Si está buscando una descripción más completa del proyecto, consulte el sitio de documentación: https://www.uddocs.com/
Esta demostración muestra las características principales de la biblioteca.
Escribí este código para evitar escribir una y otra vez las mismas cosas. He estado escribiendo aplicaciones web durante muchos años. ¿Qué estaban haciendo esas aplicaciones? Estaban hablando de datos de un formulario, guardando esos datos en una base de datos y luego editando esos datos en otro formulario y mostrando que los datos en una tabla o en un anuncio de diagrama a veces estaban eliminando esos datos (a menudo no son justos).
Bueno, lo he hecho una y otra vez, forma tras forma, Orm después de Orm, MVC después de MVC.
Me sentí perdido y aburrido. Estaba trabajando muy duro y estaba logrando muy poco.
He aprendido muchos marco para acelerar mi proceso, leí muchos libros: ¡lo nuevo, ¡así que salir!
Luego comencé a notar que mi trabajo era repetible y esos marcos me estaban ralentizando.
Con un enfoque de MVC, cada cambio que le gusta hacer a su aplicación requiere que abra al menos 3 archivos.
Así que comencé a preguntarme: ¿qué necesito realmente para hacer, por ejemplo, una tabla de datos de cotining tomados de una base de datos? La respuesta fue: necesito hacer una consulta SQL, necesito definir la estructura de la tabla y necesito poner los resultados de la consulta en la tabla. Eso es todo. Necesito estas tres cosas, nada más que eso.
Puse toda esta información en un archivo JSON y esto salió:
{
"query" : {
"sql" : " select id, name, amount, duedate FROM requestv1; "
},
"table" : {
"title" : " My table " ,
"fields" : [
{ "headline" : " Name " , "sqlfield" : " name " },
{ "headline" : " Amount " , "sqlfield" : " amount " },
{ "headline" : " Due date " , "sqlfield" : " duedate " }
]
}
}Sin Orm, sin MVC y un marco que se mantenga fuera de mi camino.
Sé que usé SQL y no un ORM, ¡pero me gusta SQL! SQL no ha cambiado en edades, ¡y esto significa que funciona! ¡No es triste ser viejo!
Di un título a la mesa y en la matriz de campos definí los titulares y los campos SQL que fueron tomados de la consulta para llenar las celdas de esa tabla. ¿Cuántas veces has resuelto este mismo problema simple? ¿Alguna vez lo has hecho escribiendo menos código? Si eso es cierto, ¡hágamelo saber!
Sé en qué estás pensando: esto no es lo suficientemente general, ¿qué pasa si necesito hacer cálculos o generalizar algo de lógica o hacer algo más complicado? Bueno, siempre puedes volver a tu antiguo camino, y programar una vista del controlador, tal vez hecha de parciales, conectar y Orm, escribir tu modelo y ... así que adelante, etc., y así sucesivamente ...
Pero, seamos heterosexuales, ¿realmente lo necesitas? ¿Con qué frecuencia haces eso? A menudo encontré que Mysel llenaba una mesa con los resultados de una sola consulta, tal vez con pocas mesas unidas.
¿Qué pasa si necesito agregar un enlace a alguna acción compatible a la tabla? También lo definí en el formato JSON.
{
"query" : {
"sql" : " select id, name, amount, duedate FROM requestv1; "
},
"table" : {
"title" : " My table " ,
"fields" : [
{ "headline" : " Name " , "sqlfield" : " name " },
{ "headline" : " Amount " , "sqlfield" : " amount " },
{ "headline" : " Due date " , "sqlfield" : " duedate " }
],
"actions" : [
{ "label" : " Info " , "resource" : " inforequest " , "parameters" :[{ "name" : " id " , "sqlfield" : " id " }] },
{ "label" : " Edit " , "resource" : " formrequest " , "parameters" :[{ "name" : " id " , "sqlfield" : " id " }] },
{ "label" : " Delete " , "resource" : " deletereport " , "parameters" :[{ "name" : " id " , "sqlfield" : " id " }] }
]
}
}Se define un enlace de una etiqueta (el usuario necesita ver qué está haciendo clic) una acción y pocos parámetros pueden provenir de la consulta SQL.
Si se pregunta qué es un recurso, es un índice para encontrar un archivo de configuración JSON específico, como este, en el sistema. Hay recursos para formularios, para las exportaciones de PDF, para los gráficos de datos, para lo que necesite. Y si necesita más, siempre puede definir una nueva plantilla, este es un proyecto de código abierto después de todo.
Hay pocas cosas que hacer para completar el archivo. Ninimos darle un nombre para que podamos encontrarlo entre los recursos. Necesitamos agregar algunos metadatos, en caso de que en el futuro necesitemos agregar más funciones.
El sistema admite el concepto de grupos permitidos acceder a un recurso específico, esto explica la matriz de "grupos permitidos".
Hay una sección GET en este archivo, está ahí porque todas estas configuraciones son para una solicitud GET.
{
"name" : " requesttablev1 " ,
"metadata" : { "type" : " table " , "version" : " 1 " },
"allowedgroups" : [ " administrationgroup " , " teachergroup " , " managergroup " ],
"get" : {
"request" : {
"parameters" : []
},
"query" : {
"sql" : " select id, name, amount, duedate FROM requestv1; "
},
"table" : {
"title" : " My table " ,
"fields" : [
{ "headline" : " Name " , "sqlfield" : " name " },
{ "headline" : " Amount " , "sqlfield" : " amount " },
{ "headline" : " Due date " , "sqlfield" : " duedate " }
],
"actions" : [
{ "label" : " Info " , "resource" : " inforequest " , "parameters" :[{ "name" : " id " , "sqlfield" : " id " }] },
{ "label" : " Edit " , "resource" : " formrequest " , "parameters" :[{ "name" : " id " , "sqlfield" : " id " }] },
{ "label" : " Delete " , "resource" : " deletereport " , "parameters" :[{ "name" : " id " , "sqlfield" : " id " }] }
]
}
}
}Si puede usar las plantillas estándar, puede hacer una aplicación completa solo llenando la carpeta SRC/Custom con todos los recursos que necesita. Abra esa carpeta y eche un vistazo para que pueda ver cómo se definen los otros recursos.