DataGrid
DataGrid ist die Datentabellen-Komponente von Doggy. Über die DataGrid-Entitätskonfiguration + DataGridService serverseitig angetrieben, unterstützt sie erweiterte Funktionen wie Paginierung, Sortierung, Filterung und Export.
Übersicht
Das DataGrid-System besteht aus folgenden Teilen (src/Component/Database/):
Component/Database/
├── Bridge/
│ ├── DataSetInterface.php # 数据集接口
│ ├── DataSource.php # 数据源抽象
│ ├── DoctrineDataSet.php # Doctrine 数据集实现
│ ├── FilterCondition.php # 筛选条件
│ └── FilterGroup.php # 筛选条件组
└── View/
└── DataGrid.php # DataGrid 视图组件Konfiguration
DataGrid persistiert seine Konfiguration über die Entität App\Entity\Platform\DataGrid, DataGridService bietet die serverseitige Unterstützung:
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,
]);
}
}Filter
DataGrid verwendet FilterCondition und FilterGroup zum Aufbau von Filterbedingungen und ist eng mit dem KI-Natural-Language-Query-Agent integriert:
- Textfilter (unscharf/exakt)
- Zahlenbereichs-Filter
- Datumsbereichs-Filter
- Dropdown-Auswahlfilter
- Filter über zugehörige Entitäten (mit Dot-Notation)
Datenquellen
Über DataSetInterface werden Datenquellen abstrahiert, aktuell unterstützt:
DoctrineDataSet: basiert auf dem Doctrine QueryBuilderDataSource: Basisklasse für Datenquellen- Benutzerdefinierte DataSet-Implementierungen
Frontend-Komponente
Das Frontend rendert über das Twig-Macro sunui_datagrid:
twig
{% include 'components/datagrid.html.twig' with {
columns: columns,
data: paginator,
config: gridConfig
} %}Funktionen
- Serverseitige Paginierung und Sortierung
- Mehrspaltenfilter (AND/OR-Kombination)
- Datencxport
- Integration mit der Natural-Language-Query des KI-Agents
- Persistente Konfiguration in der Datenbank