Bỏ qua, đến nội dung

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

  1. Mở Collection Manager → chọn collection.
  2. Thêm field mới → chọn interface Sort.
  3. Đặt tên field (ví dụ: sort, order, position).
  4. (Tùy chọn) Cấu hình scope field nếu cần sắp xếp theo nhóm.
  5. 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:

  1. Mở trang danh sách (table view) của collection.
  2. Bật chế độ drag & drop (thường hiển thị icon kéo ở đầu mỗi hàng).
  3. Kéo bản ghi đến vị trí mong muốn.
  4. 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ểuMô tả
sourceIdnumber/stringID bản ghi cần di chuyển
targetIdnumber/stringID bản ghi đích
methodstringinsertBefore 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ụScopeSort values
Task A (Dev)categoryId = 1sort = 1
Task B (Dev)categoryId = 1sort = 2
Task C (QA)categoryId = 2sort = 1
Task D (QA)categoryId = 2sort = 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 + 1 cho 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.