Bỏ qua, đến nội dung

@digiforce-nc/plugin-action-export

Plugin cung cấp xuất dữ liệu ra file Excel (XLSX) - đăng ký action export trên data source, tạo file XLSX từ dữ liệu collection với mutex đảm bảo không xuất đồng thời.

Plugin này làm gì?

Hãy hình dung bạn cần xuất danh sách khách hàng để gửi cho đối tác. Plugin đăng ký action export trên server - khi nhận request, nó query dữ liệu theo filter hiện tại, dùng XlsxExporter tạo file Excel rồi trả binary stream về client. Mutex đảm bảo chỉ một request export chạy tại một thời điểm, tránh quá tải server.

Ba nhiệm vụ chính

#Nhiệm vụChi tiết
1Đăng ký export actionGắn handler export lên mỗi data source khi plugin load
2Tạo file XLSXXlsxExporter query dữ liệu, format theo cấu hình columns, tạo binary XLSX
3Mutex & ACLMutex toàn cục ngăn export đồng thời; quyền export riêng biệt có cấu hình field-level

Kiến trúc

Tổng quan

Plugin có cả server (export handler, XlsxExporter) và client (nút export, designer cấu hình). Khi install, plugin tự động thêm quyền export vào admin role strategy.

TầngVai tròThành phần
Client UINút Export + cấu hình field xuấtExportActionWidget, ExportDesigner
Server HandlerNhận request, điều phối exportExport action handler
XlsxExporterQuery dữ liệu, tạo file XLSXXlsxExporter class
MutexNgăn nhiều export chạy cùng lúcGlobal async-mutex

API endpoints

EndpointMethodMô tả
{collection}:exportPOSTXuất dữ liệu collection ra file XLSX (binary response)

Request parameters

Tham sốKiểuMô tả
columnsarrayDanh sách cột cần xuất (tên field + tiêu đề)
filterobjectBộ lọc dữ liệu (giống list filter)
sortarrayThứ tự sắp xếp
fieldsstring[]Danh sách field kèm theo
appendsstring[]Relation fields cần kèm theo

ACL - Phân quyền

QuyềnMô tả
exportQuyền riêng biệt, allowConfigureFields: true cho phép cấu hình field-level
On installTự động thêm export vào admin role strategy

Luồng hoạt động

XlsxExporter - Chi tiết xử lý

BướcMô tả
1. QueryĐọc dữ liệu từ DB theo filter, sort, appends
2. FormatMap dữ liệu theo cấu hình columns (tên cột, format number/date)
3. RelationsResolve relation fields (belongsTo, hasMany) thành giá trị hiển thị
4. Build XLSXSử dụng xlsx / node-xlsx để tạo file Excel binary
5. StreamTrả binary stream về client qua HTTP response

Thành phần client

Thành phầnMô tả
ExportPluginProviderProvider đăng ký toàn bộ component vào plugin system
ExportActionInitializerĐăng ký nút Export vào toolbar bảng
ExportDesignerCấu hình field xuất trong designer mode
ExportActionWidgetWidget nút action kèm loading state và confirm dialog

Dependencies

PackageVai trò
@digiforce-nc/actionsAction context types (peer)
@digiforce-nc/databaseDatabase ORM (peer)
@digiforce-nc/serverServer framework (peer)
@digiforce-nc/clientClient framework (peer)
xlsxThư viện tạo file Excel (dev)
node-xlsxParser/builder XLSX (dev)
async-mutexMutex để serialize export requests (dev)
file-saverLưu file tại client (dev)

Mục lục chi tiết