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 DataGridConfiguraçã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:
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 QueryBuilderDataSource: 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:
{% 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