Bỏ qua, đến nội dung

@digiforce-nc/plugin-kanban

Plugin hiển thị dữ liệu collection dưới dạng bảng Kanban - phân nhóm bản ghi thành các cột theo field select/radio, hỗ trợ kéo thả card giữa các cột.

Plugin này làm gì?

Kanban board là công cụ quản lý trực quan: mỗi cột đại diện một trạng thái (To Do, In Progress, Done), mỗi thẻ là một bản ghi. Người dùng kéo thả thẻ giữa các cột để thay đổi trạng thái - lý tưởng cho quản lý task, pipeline bán hàng, theo dõi tiến độ.

Ba nhiệm vụ chính

#Nhiệm vụChi tiết
1Phân nhóm theo cộtNhóm bản ghi theo field select/radio thành các cột
2Drag & dropKéo thả card giữa các cột để cập nhật trạng thái
3Card designerTùy chỉnh nội dung hiển thị trên mỗi card

Kiến trúc

Tổng quan

Plugin hoạt động hoàn toàn ở client - nhóm dữ liệu client-side theo field giá trị, render bằng react-beautiful-dnd.

Cơ chế phân nhóm

Plugin yêu cầu chọn một group field - field kiểu select hoặc radioGroup - để chia bản ghi thành cột:

BướcMô tả
1Lấy danh sách options từ group field (ví dụ: To Do, In Progress, Done)
2Mỗi option tạo thành một cột trên board
3Bản ghi được phân vào cột tương ứng với giá trị field
4Khi kéo card sang cột khác → cập nhật field value

Drag & drop flow

Tính năng

Tính năngMô tả
Column groupingPhân cột theo field select/radio
Card DnDKéo thả card giữa các cột (react-beautiful-dnd)
Card designerTùy chỉnh layout card: fields, avatar, tags
Card viewerClick card mở popup chi tiết (edit/view)
Card adderNút "+" trên mỗi cột để tạo nhanh record
Association kanbanKanban cho association data trong popup
Custom groupĐăng ký group field interface tùy chỉnh
Lazy loadIntersection observer tải thêm card khi scroll
Column collapseThu gọn/mở rộng cột

registerGroupFieldInterface

Plugin cung cấp API cho plugin khác đăng ký field interface mới làm group field:

typescript
kanbanPlugin.registerGroupFieldInterface('customSelect', {
  getOptions: (field) => field.options,
  getValue: (record, field) => record[field.name],
});

Thành phần client

Thành phầnMô tả
KanbanBlockWidgetWidget chính đăng ký Kanban block
KanbanComponent board chính quản lý columns và DnD
Kanban.CardComponent card hiển thị bản ghi
CardAdderComponent tạo nhanh record trên mỗi cột
CardViewerPopup chi tiết khi click card
KanbanBlockInitializerĐăng ký vào menu "Add block"
KanbanDesignerDesigner: chọn group field, card template
KanbanCardDesignerDesigner cho nội dung card

Cấu hình block

SettingMô tảMặc định
Group fieldField select/radio để phân cộtBắt buộc chọn
Sort fieldField sắp xếp card trong cộtsort hoặc createdAt
Card templateLayout hiển thị trên cardMặc định: title + description
Show card adderHiển thị nút tạo nhanhtrue
Page sizeSố card mỗi lần tải20

Dependencies

PackageVai trò
@digiforce-nc/clientClient framework (peer)
@digiforce-nc/serverServer framework - chỉ dùng khi build (peer)
react-beautiful-dndThư viện drag & drop cho card và column
react-intersection-observerLazy load card khi scroll

Mục lục chi tiết