Skip to content

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 DataGrid

Configuración

DataGrid persiste su configuración mediante la entidad App\Entity\Platform\DataGrid, y DataGridService proporciona el soporte en el servidor:

php
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 QueryBuilder
  • DataSource: 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:

twig
{% 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

Código abierto bajo MIT | Copyright © 2026 Doggy