DataGrid
DataGrid est le composant de table de données de Doggy, piloté côté serveur par une entité de configuration DataGrid + DataGridService, avec prise en charge de la pagination, du tri, du filtrage, de l'export et d'autres fonctionnalités avancées.
Aperçu
Le système DataGrid est composé des éléments suivants (src/Component/Database/) :
Component/Database/
├── Bridge/
│ ├── DataSetInterface.php # 数据集接口
│ ├── DataSource.php # 数据源抽象
│ ├── DoctrineDataSet.php # Doctrine 数据集实现
│ ├── FilterCondition.php # 筛选条件
│ └── FilterGroup.php # 筛选条件组
└── View/
└── DataGrid.php # DataGrid 视图组件Configuration
DataGrid persiste sa configuration via l'entité App\Entity\Platform\DataGrid, et DataGridService fournit le support côté serveur :
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,
]);
}
}Filtres
DataGrid construit les conditions de filtre avec FilterCondition et FilterGroup, profondément intégré à l'agent de requête en langage naturel IA :
- Filtre texte (flou/exact)
- Filtre par plage numérique
- Filtre par plage de dates
- Filtre par liste déroulante
- Filtre par entité liée (prise en charge de la notation pointée)
Sources de données
Les sources de données sont abstraites via DataSetInterface, avec prise en charge actuelle de :
DoctrineDataSet: basé sur Doctrine QueryBuilderDataSource: classe de base des sources de données- Prise en charge d'implémentations de sources de données personnalisées
Composant frontend
Le frontend effectue le rendu via la macro Twig sunui_datagrid :
{% include 'components/datagrid.html.twig' with {
columns: columns,
data: paginator,
config: gridConfig
} %}Fonctionnalités
- Pagination et tri côté serveur
- Filtrage multi-colonnes (combinaison AND/OR)
- Export des données
- Intégration avec la requête en langage naturel de l'agent IA
- Persistance de la configuration en base de données