Giao diện
Cài đặt và sử dụng
Kích hoạt plugin
Vào Settings → Plugin Manager, bật @digiforce-nc/plugin-field-sort. Plugin đăng ký field type sort và action handler move.
Thêm field Sort
- Mở Collection Manager → chọn collection.
- Thêm field mới → chọn interface Sort.
- Đặt tên field (ví dụ:
sort,order,position). - (Tùy chọn) Cấu hình scope field nếu cần sắp xếp theo nhóm.
- Lưu — mỗi bản ghi mới tự động nhận giá trị
max + 1.
typescript
const sortField = {
name: 'sort',
type: 'sort',
interface: 'sort',
scopeKey: 'categoryId',
};Drag-drop reorder trong table
Sau khi thêm field sort, bảng dữ liệu hỗ trợ kéo thả để sắp xếp lại:
- Mở trang danh sách (table view) của collection.
- Bật chế độ drag & drop (thường hiển thị icon kéo ở đầu mỗi hàng).
- Kéo bản ghi đến vị trí mong muốn.
- Thả — hệ thống gọi action
moveđể cập nhật thứ tự.
Gọi action move qua API
typescript
await api.resource('tasks').move({
sourceId: 10,
targetId: 3,
method: 'insertBefore',
});| Tham số | Kiểu | Mô tả |
|---|---|---|
sourceId | number/string | ID bản ghi cần di chuyển |
targetId | number/string | ID bản ghi đích |
method | string | insertBefore hoặc insertAfter |
Scope field — Sắp xếp theo nhóm
Khi cấu hình scopeKey, mỗi nhóm có chuỗi sort riêng biệt:
| Ví dụ | Scope | Sort values |
|---|---|---|
| Task A (Dev) | categoryId = 1 | sort = 1 |
| Task B (Dev) | categoryId = 1 | sort = 2 |
| Task C (QA) | categoryId = 2 | sort = 1 |
| Task D (QA) | categoryId = 2 | sort = 2 |
Task trong nhóm "Dev" có sort 1,2 độc lập với nhóm "QA".
Auto-assign khi tạo bản ghi
Khi tạo bản ghi mới:
- Hệ thống tìm
MAX(sort)trong scope (hoặc toàn bảng nếu không có scope). - Gán
sort = MAX + 1cho bản ghi mới. - Quá trình này sử dụng LockManager để đảm bảo an toàn đồng thời.
Lưu ý
- Field sort thường ẩn trên form — người dùng không cần nhập/sửa giá trị sort trực tiếp.
- Giá trị sort là BIGINT — hỗ trợ số lượng bản ghi rất lớn.
- Khi di chuyển bản ghi, các bản ghi xung quanh cũng bị cập nhật sort value (shift).
- Xóa bản ghi không reindex — có thể xuất hiện khoảng trống trong chuỗi sort.