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-formula. Plugin đăng ký field type formula và các hook tính toán tự động.
Thêm field Formula
- Mở Collection Manager → chọn collection.
- Thêm field mới → chọn interface Formula.
- Đặt tên field (ví dụ:
total,fullName,profit). - Viết biểu thức công thức trong Expression Editor.
- Chọn dataType phù hợp với kết quả (double, string, integer...).
- 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 * quantity | Tích hai field |
sqrt(a^2 + b^2) | Căn bậc hai |
(revenue - cost) / revenue * 100 | Tỷ 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 đích | Engine | Expression |
|---|---|---|
| Tổng tiền | mathjs | price * quantity |
| Họ tên đầy đủ | formula | CONCAT(lastName, " ", firstName) |
| Giá sau thuế | mathjs | price * (1 + taxRate) |
| Trạng thái | formula | IF(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ện | Hành vi |
|---|---|
| Tạo bản ghi mới | Tính ngay sau khi lưu |
| Cập nhật bản ghi | Tí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)
| dataType | Khi nào dùng | Ví dụ |
|---|---|---|
double | Kết quả là số thập phân | Tổng tiền, tỷ lệ |
integer | Kết quả là số nguyên | Số lượng, đếm |
string | Kết quả là chuỗi | Họ 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.