Bỏ qua, đến nội dung

@digiforce-nc/plugin-collection-tree

Plugin collection dạng cây — tổ chức dữ liệu collection theo cấu trúc phân cấp (cha-con) sử dụng mô hình adjacency list.

Plugin này làm gì?

Nhiều loại dữ liệu có tính phân cấp: danh mục sản phẩm, cơ cấu tổ chức, menu đa cấp, thư mục tài liệu. Plugin bổ sung field parentId vào collection, cho phép hiển thị và thao tác dữ liệu dạng cây với khả năng mở rộng/thu gọn, kéo-thả sắp xếp và lọc theo nhánh.

Cơ chế hoạt động

Tính năng chính

#Tính năngMô tả
1Adjacency listMô hình parent-child (field parentId)
2Lazy loadingChỉ load children khi expand node
3Drag & dropKéo-thả để di chuyển node giữa các nhánh
4Path fieldTự sinh đường dẫn (path) cho breadcrumb
5Filter by branchLọc dữ liệu theo nhánh cây
6Sort orderSắp xếp thứ tự node con trong cùng cha
7Tree tableHiển thị kết hợp cây + bảng

API endpoints

EndpointMô tả
collection:treeLấy dữ liệu cấu trúc cây (root → children)
collection:moveDi chuyển node sang parent mới
collection:reorderĐổi thứ tự node con

Cấu hình collection

Tham sốMô tả
tree'adjacency-list' — bật chế độ cây
parentForeignKeyField liên kết cha (mặc định parentId)
pathFieldField lưu path (VD: 1/2/5)
sortFieldField sắp xếp thứ tự

Thành phần client

Thành phầnMô tả
TreeBlockBlock hiển thị collection dạng cây
TreeTableBảng kết hợp cây (tree column + data columns)
TreeSelectDropdown chọn node trong cây
DragDropTreeCây kéo-thả sắp xếp
BreadcrumbPathBreadcrumb dựa trên path field

Dependencies

PackageVai trò
@digiforce-nc/serverServer framework
@digiforce-nc/databaseDatabase ORM — tree query
@digiforce-nc/clientClient UI framework
@digiforce-nc/collection-managerQuản lý collection schema

Lưu ý triển khai

  • Adjacency list đơn giản nhưng query cây sâu cần recursive CTE
  • Dữ liệu lớn (hàng ngàn node) nên dùng lazy loading
  • Tránh tạo circular reference (A → B → C → A)

Mục lục chi tiết