Skip to content

DataGrid

O DataGrid é o componente de tabela de dados do Doggy, dirigido pelo servidor através da entidade de configuração DataGrid + DataGridService, com suporte para paginação, ordenação, filtragem, exportação e outras funcionalidades avançadas.

Visão geral

O sistema DataGrid é composto pelas seguintes partes (src/Component/Database/):

Component/Database/
├── Bridge/
│   ├── DataSetInterface.php   # Interface de conjuntos de dados
│   ├── DataSource.php         # Abstração de fonte de dados
│   ├── DoctrineDataSet.php    # Implementação de conjunto de dados Doctrine
│   ├── FilterCondition.php    # Condição de filtro
│   └── FilterGroup.php        # Grupo de condições de filtro
└── View/
    └── DataGrid.php           # Componente de vista DataGrid

Configuração

O DataGrid persiste a configuração através da entidade App\Entity\Platform\DataGrid, e o DataGridService fornece o suporte do lado do 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

O DataGrid usa FilterCondition e FilterGroup para construir condições de filtro, profundamente integrado com o Agent de consulta em linguagem natural:

  • Filtro de texto (difuso/preciso)
  • Filtro de intervalo numérico
  • Filtro de intervalo de datas
  • Filtro de seleção em lista pendente
  • Filtro de entidades relacionadas (suporta dot notation)

Fontes de dados

As fontes de dados são abstraídas através de DataSetInterface; atualmente suporta:

  • DoctrineDataSet: baseado em Doctrine QueryBuilder
  • DataSource: classe base de fontes de dados
  • Suporte para implementações de conjuntos de dados personalizados

Componente frontend

O frontend renderiza através do macro Twig sunui_datagrid:

twig
{% include 'components/datagrid.html.twig' with {
    columns: columns,
    data: paginator,
    config: gridConfig
} %}

Funcionalidades

  • Paginação e ordenação no lado do servidor
  • Filtragem por múltiplas colunas (combinação AND/OR)
  • Exportação de dados
  • Integração com a consulta em linguagem natural do Agent de IA
  • Persistência da configuração na base de dados

Código aberto sob MIT | Copyright © 2026 Doggy