DataGrid
DataGrid هو مكوّن الجداول البياناتية في Doggy، ويعتمد على كيان DataGrid لتكوين البيانات + خدمة DataGridService من جهة الخادم، ويدعم مزايا متقدمة مثل الترقيم الصفحي والفرز والتصفية والتصدير.
نظرة عامة
يتكون نظام DataGrid من الأجزاء التالية (src/Component/Database/):
Component/Database/
├── Bridge/
│ ├── DataSetInterface.php # 数据集接口
│ ├── DataSource.php # 数据源抽象
│ ├── DoctrineDataSet.php # Doctrine 数据集实现
│ ├── FilterCondition.php # 筛选条件
│ └── FilterGroup.php # 筛选条件组
└── View/
└── DataGrid.php # DataGrid 视图组件التكوين
يتم حفظ تكوين DataGrid بشكل دائم عبر كيان App\Entity\Platform\DataGrid، بينما توفر DataGridService الدعم من جهة الخادم:
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,
]);
}
}عوامل التصفية
يستخدم DataGrid FilterCondition وFilterGroup لبناء شروط التصفية، مع تكامل عميق مع وكيل الاستعلام باللغة الطبيعية المدعوم بالذكاء الاصطناعي:
- تصفية النصوص (تقريبية/دقيقة)
- تصفية النطاقات الرقمية
- تصفية النطاقات الزمنية
- تصفية القوائم المنسدلة
- تصفية الكيانات المرتبطة (تدعم الصيغة النقطية dot notation)
مصادر البيانات
يتم تجريد مصادر البيانات عبر DataSetInterface، ويدعم حاليًا:
DoctrineDataSet: استنادًا إلى Doctrine QueryBuilderDataSource: الفئة الأساسية لمصدر البيانات- دعم تنفيذ مجموعات بيانات مخصصة
المكوّنات الأمامية
يتم عرض الواجهة الأمامية عبر ماكرو Twig الخاص بـ sunui_datagrid:
twig
{% include 'components/datagrid.html.twig' with {
columns: columns,
data: paginator,
config: gridConfig
} %}المزايا
- الترقيم الصفحي والفرز من جهة الخادم
- تصفية متعددة الأعمدة (دمج AND/OR)
- تصدير البيانات
- التكامل مع وكيل الاستعلام باللغة الطبيعية الخاص بـ AI
- حفظ التكوين في قاعدة البيانات بشكل دائم