Giao diện
@digiforce-nc/plugin-action-bulk-update
Plugin cung cấp cập nhật hàng loạt (bulk update) - gán giá trị mới cho nhiều bản ghi cùng lúc theo bộ lọc, với xác nhận trước khi thực thi.
Plugin này làm gì?
Hãy phân biệt với bulk edit: nếu bulk edit mở form để sửa từng field, thì bulk update gán một bộ giá trị cố định cho tất cả bản ghi đã chọn. Ví dụ: chọn 100 đơn hàng → gán status = "completed" cho tất cả. Plugin đăng ký action customize:bulkUpdate, hiển thị dialog xác nhận rồi gọi API.
Ba nhiệm vụ chính
| # | Nhiệm vụ | Chi tiết |
|---|---|---|
| 1 | Cấu hình giá trị gán | Admin/designer thiết lập sẵn field + giá trị cần cập nhật trong action config |
| 2 | Xác nhận & thực thi | Hiển thị confirm modal trước khi gọi resource.update() với forceUpdate: true |
| 3 | Dynamic values | Hỗ trợ resolveRunJSObjectValues để tính toán giá trị động bằng JavaScript |
Kiến trúc
Tổng quan
Plugin hoạt động hoàn toàn ở client - server chỉ có stub. Luồng xử lý đi qua 3 bước: resolve giá trị → xác nhận → gọi API.
| Tầng | Vai trò | Thành phần |
|---|---|---|
| Action Widget | Nút trên toolbar, trigger confirm dialog | BulkUpdateActionWidget |
| Assign Form | Form cấu hình field + giá trị gán | AssignFormWidget |
| RunJS Resolver | Resolve dynamic values từ JS expression | resolveRunJSObjectValues |
| Core Update | API update với filter + forceUpdate | resource.update() |
So sánh Bulk Edit vs Bulk Update
| Tiêu chí | Bulk Edit | Bulk Update |
|---|---|---|
| Mục đích | Sửa nhiều field tùy chọn | Gán bộ giá trị cố định |
| UI | Form đầy đủ field | Confirm dialog |
| Cấu hình | User chọn tại runtime | Designer cấu hình trước |
| Dynamic values | Không | Có (RunJS) |
Luồng hoạt động
Dynamic values với RunJS
Plugin hỗ trợ tính toán giá trị động thông qua resolveRunJSObjectValues. Khi giá trị gán chứa JS expression, hệ thống sẽ evaluate expression trước khi gửi API.
| Biến có sẵn | Mô tả |
|---|---|
currentRecord | Bản ghi hiện tại (trong ngữ cảnh row action) |
currentUser | Thông tin user đang đăng nhập |
currentTime | Thời gian hiện tại |
ACL - Phân quyền
| Quyền | Mô tả |
|---|---|
update | Action yêu cầu quyền update trên collection |
updateMany | Nút hiển thị khi user có quyền cập nhật nhiều bản ghi |
Thành phần client
| Thành phần | Mô tả |
|---|---|
BulkUpdateActionWidget | Widget nút action + confirm dialog |
CustomizeActionInitializer | Đăng ký action vào schema initializer |
AssignFormWidget | Form cấu hình field và giá trị cập nhật trong designer |
BulkUpdateFieldsConfig | UI cấu hình danh sách field + giá trị trong designer mode |
BulkUpdatePluginProvider | Provider đăng ký toàn bộ component |
Dependencies
| Package | Vai trò |
|---|---|
@digiforce-nc/client | Client framework (peer) |
@digiforce-nc/server | Server framework - stub (peer) |