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-formula. Plugin đăng ký field type formula và các hook tính toán tự động.

Thêm field Formula

  1. Mở Collection Manager → chọn collection.
  2. Thêm field mới → chọn interface Formula.
  3. Đặt tên field (ví dụ: total, fullName, profit).
  4. Viết biểu thức công thức trong Expression Editor.
  5. Chọn dataType phù hợp với kết quả (double, string, integer...).
  6. Lưu — giá trị sẽ tự động tính khi bản ghi được tạo hoặc cập nhật.
typescript
const totalField = {
  name: 'total',
  type: 'formula',
  interface: 'formula',
  dataType: 'double',
  expression: 'price * quantity',
  engine: 'mathjs',
};

Chọn Evaluator Engine

Plugin hỗ trợ hai engine tính toán:

mathjs

Cú pháp toán học tiêu chuẩn, phù hợp cho phép tính số:

Ví dụKết quả
price * quantityTích hai field
sqrt(a^2 + b^2)Căn bậc hai
(revenue - cost) / revenue * 100Tỷ lệ lợi nhuận (%)

excel-like (formula)

Cú pháp dạng hàm Excel, hỗ trợ logic và chuỗi:

Ví dụKết quả
IF(status == "paid", total, 0)Điều kiện
CONCAT(firstName, " ", lastName)Nối chuỗi
SUM(item1, item2, item3)Tổng nhiều field

Viết công thức

Trong Expression Editor:

  • Tham chiếu field bằng tên field (ví dụ: price, quantity).
  • Editor hỗ trợ autocomplete tên field trong collection.
  • Công thức được lưu dưới dạng expression string.

Ví dụ thực tế

Mục đíchEngineExpression
Tổng tiềnmathjsprice * quantity
Họ tên đầy đủformulaCONCAT(lastName, " ", firstName)
Giá sau thuếmathjsprice * (1 + taxRate)
Trạng tháiformulaIF(balance > 0, "Còn nợ", "Đã thanh toán")

Tự động tính lại

Giá trị formula được tính lại trong các trường hợp:

Sự kiệnHành vi
Tạo bản ghi mớiTính ngay sau khi lưu
Cập nhật bản ghiTính lại với giá trị mới
Tạo hàng loạt (bulk create)Tính cho tất cả bản ghi mới
Sửa công thức (field definition)Recompute toàn bộ bản ghi trong collection

Chọn kiểu dữ liệu (dataType)

dataTypeKhi nào dùngVí dụ
doubleKết quả là số thập phânTổng tiền, tỷ lệ
integerKết quả là số nguyênSố lượng, đếm
stringKết quả là chuỗiHọ tên, mô tả

Lưu ý

  • Formula field là read-only trên giao diện — người dùng không nhập giá trị trực tiếp.
  • Công thức chỉ tham chiếu field trong cùng bản ghi, không hỗ trợ tham chiếu cross-record hay relation.
  • Thay đổi công thức sẽ recompute toàn bộ bản ghi — với collection lớn, quá trình này có thể mất thời gian.