DataGrid
DataGrid es el componente de tabla de datos de Doggy. Se controla mediante la configuración de la entidad DataGrid + DataGridService en el servidor y admite características avanzadas como paginación, ordenación, filtrado y exportación.
Descripción general
El sistema DataGrid se compone de las siguientes partes (src/Component/Database/):
Component/Database/
├── Bridge/
│ ├── DataSetInterface.php # Interfaz de conjunto de datos
│ ├── DataSource.php # Abstracción de fuente de datos
│ ├── DoctrineDataSet.php # Implementación de conjunto de datos Doctrine
│ ├── FilterCondition.php # Condición de filtrado
│ └── FilterGroup.php # Grupo de condiciones de filtrado
└── View/
└── DataGrid.php # Componente de vista DataGridConfiguración
DataGrid persiste su configuración mediante la entidad App\Entity\Platform\DataGrid, y DataGridService proporciona el soporte en el servidor:
use App\Service\Platform\DataGridService;
class DataGridController
{
public function index(DataGridService $service): Response
{
$dataGrid = $service->findDataGridByEntityClass(Department::class);
$config = $dataGrid->getDefaultConfigData();
return $this->render('admin/index.html.twig', [
'gridConfig' => $config,
]);
}
}Filtros
DataGrid utiliza FilterCondition y FilterGroup para construir las condiciones de filtrado, con integración profunda con el Agente de consulta en lenguaje natural de la IA:
- Filtrado de texto (difuso/exacto)
- Filtrado por rango numérico
- Filtrado por rango de fechas
- Filtrado por selección desplegable
- Filtrado por entidades relacionadas (compatible con dot notation)
Fuente de datos
Las fuentes de datos se abstraen mediante DataSetInterface; actualmente se admite:
DoctrineDataSet: basado en Doctrine QueryBuilderDataSource: clase base de fuentes de datos- Soporte para implementaciones de conjuntos de datos personalizados
Componente frontend
El frontend se renderiza mediante la macro Twig sunui_datagrid:
{% include 'components/datagrid.html.twig' with {
columns: columns,
data: paginator,
config: gridConfig
} %}Características
- Paginación y ordenación en el servidor
- Filtrado de varias columnas (combinación AND/OR)
- Exportación de datos
- Integración con la consulta en lenguaje natural del Agente de IA
- Configuración persistida en la base de datos