Giao diện
@digiforce-nc/plugin-action-bulk-edit
Plugin cung cấp chỉnh sửa hàng loạt (bulk edit) - cho phép người dùng chọn nhiều bản ghi trên bảng/gantt/map và chỉnh sửa đồng thời qua một form duy nhất.
Plugin này làm gì?
Hãy hình dung bạn có 50 đơn hàng cần đổi trạng thái. Thay vì mở từng bản ghi một, plugin-action-bulk-edit cho phép chọn tất cả → mở một form → sửa một lần. Plugin đăng ký UI action customize:bulkEdit trên các block dạng table, gantt và map.
Ba nhiệm vụ chính
| # | Nhiệm vụ | Chi tiết |
|---|---|---|
| 1 | Hiển thị form chỉnh sửa | Mở popup với form cho phép chọn field cần sửa và nhập giá trị mới |
| 2 | Validate & gửi request | Validate dữ liệu qua Formily schema rồi gọi resource.update() với filter chứa danh sách ID đã chọn |
| 3 | Kiểm soát quyền | ACL map action sang update, hiển thị nút chỉ khi user có quyền updateMany |
Kiến trúc
Tổng quan
Plugin hoạt động hoàn toàn ở client - server chỉ có stub (không có logic riêng). Hai stack UI song song tồn tại: classic Formily schema và newer uiCore widgets.
| Tầng | Vai trò | Thành phần |
|---|---|---|
| Action Widget | Nút trên toolbar, mở popup bulk edit | BulkEditActionWidget |
| Form Widget | Form chỉnh sửa với field selector | BulkEditFormWidget |
| Field Component | Mỗi field có 3 chế độ: không đổi / thay thế / xóa | BulkEditField |
| Decorator | Wrap form logic, xử lý submit | BulkEditActionDecorator |
ACL - Phân quyền
| Quyền | Mô tả |
|---|---|
update | Action được map sang quyền update của collection |
updateMany | Nút chỉ hiển thị khi user có quyền updateMany |
Luồng hoạt động
Chi tiết chế độ field
BulkEditField hỗ trợ 3 chế độ cho mỗi field trong form:
| Chế độ | Giá trị | Hành vi |
|---|---|---|
| Không thay đổi | unchanged | Bỏ qua field này, giữ nguyên giá trị cũ |
| Thay thế | replace | Ghi đè bằng giá trị mới nhập trong form |
| Xóa | clear | Đặt giá trị field thành null |
Dual stack UI
Plugin hỗ trợ hai cách render form song song:
| Stack | Mô tả | Khi nào dùng |
|---|---|---|
| Formily schema | Classic schema-driven form | Collection dùng schema cũ |
| uiCore widgets | Widget-based form (mới) | Collection dùng uiCore mới |
Thành phần client
| Thành phần | Mô tả |
|---|---|
BulkEditFormWidget | Form chỉnh sửa hàng loạt - chọn field và nhập giá trị mới |
BulkEditActionWidget | Widget nút action trên toolbar bảng |
BulkEditActionInitializer | Đăng ký action vào schema initializer (table, gantt, map) |
BulkEditField | Field component hỗ trợ chế độ "không thay đổi / thay thế / xóa" |
BulkEditActionDecorator | Decorator wrap form logic và xử lý submit |
BulkEditPluginProvider | Provider đăng ký toàn bộ component vào plugin system |
Dependencies
| Package | Vai trò |
|---|---|
@digiforce-nc/client | Client framework (peer) |
@digiforce-nc/server | Server framework - stub (peer) |