Giao diện
@digiforce-nc/plugin-action-duplicate
Plugin cung cấp nhân bản bản ghi (duplicate) - tạo bản sao của một bản ghi với field mapping tùy chỉnh, hỗ trợ hai chế độ: nhân bản nhanh và copy vào form.
Plugin này làm gì?
Hãy hình dung bạn có một đơn hàng phức tạp với 20 field và muốn tạo đơn tương tự. Thay vì nhập lại từ đầu, plugin cho phép nhân bản bản ghi - sao chép toàn bộ (hoặc chọn lọc) field sang bản ghi mới. Plugin đăng ký table row action, đọc dữ liệu bản ghi gốc rồi gọi create API.
Ba nhiệm vụ chính
| # | Nhiệm vụ | Chi tiết |
|---|---|---|
| 1 | Đọc bản ghi gốc | Gọi resource.get() với isTemplate: true để lấy dữ liệu sạch (không có field hệ thống) |
| 2 | Nhân bản bản ghi | Hai chế độ: Quick duplicate (tạo ngay) hoặc Copy into form (mở form để sửa trước khi tạo) |
| 3 | Field mapping | Cho phép cấu hình field nào được sao chép, field nào bỏ qua |
Kiến trúc
Tổng quan
Plugin hoạt động hoàn toàn ở client - server chỉ có stub. Logic nhân bản sử dụng core API resource.get() và resource.create().
| Tầng | Vai trò | Thành phần |
|---|---|---|
| Action Widget | Nút trên row menu, trigger duplicate | DuplicateActionWidget |
| Action Logic | Xử lý đọc + tạo bản ghi mới | DuplicateAction |
| Plugin Provider | Đăng ký component vào system | DuplicatePluginProvider |
| Core API | API get/create bản ghi | resource.get(), resource.create() |
Hai chế độ nhân bản
| Chế độ | Mô tả | Khi nào dùng |
|---|---|---|
| Quick duplicate | Gọi resource.get() → resource.create() ngay lập tức | Nhân bản nhanh, không cần sửa |
| Copy into form | Gọi resource.get() → mở form pre-filled → user sửa → submit | Cần điều chỉnh trước khi tạo |
ACL - Phân quyền
| Quyền | Mô tả |
|---|---|
create | Action yêu cầu quyền create trên collection (vì tạo bản ghi mới) |
Luồng hoạt động
Quick duplicate
Copy into form
Field mapping
Khi cấu hình duplicate action trong designer, admin chọn field nào được sao chép:
| Loại field | Mặc định | Ghi chú |
|---|---|---|
| Field thường (text, number, ...) | Sao chép | Có thể bỏ qua |
| Field hệ thống (id, createdAt, updatedAt) | Bỏ qua | Luôn bị loại bỏ |
| Relation field | Tùy cấu hình | Sao chép FK hoặc bỏ qua |
| Auto-increment | Bỏ qua | Hệ thống tự gán giá trị mới |
Thành phần client
| Thành phần | Mô tả |
|---|---|
DuplicateAction | Component xử lý logic nhân bản bản ghi |
DuplicateActionWidget | Widget nút action trên row menu |
DuplicateActionInitializer | Đăng ký action vào schema initializer |
DuplicatePluginProvider | Provider đăng ký toàn bộ component vào plugin system |
DuplicateFieldsConfig | Cấu hình field được sao chép trong designer |
Dependencies
| Package | Vai trò |
|---|---|
@digiforce-nc/client | Client framework (peer) |
@digiforce-nc/server | Server framework - stub (peer) |