Bỏ qua, đến nội dung

Câu hỏi thường gặp — Number Format Field

Sử dụng chung

Định dạng có ảnh hưởng đến tính toán không?

Không. Giá trị lưu trong Database luôn là raw number (số thô). Định dạng chỉ áp dụng khi hiển thị trên UI. Mọi phép tính, filter, sort đều thao tác trên giá trị gốc.

Có thể thay đổi định dạng sau khi tạo field không?

Có. Vào Collection Manager → chọn field → thay đổi Precision hoặc bật/tắt pretty format. Dữ liệu đã lưu không bị ảnh hưởng vì DB lưu raw number.

Sự khác biệt giữa Number và Percent là gì?

Đặc điểmNumberPercent
Hiển thịSố với dấu phân cáchSố kèm ký hiệu %
Lưu trữGiá trị gốcGiá trị decimal (chia 100)
Ví dụ: nhập 50DB lưu 50DB lưu 0.5
Database type mặc địnhdoublefloat
Validationmin/max, integer/odd/even, regexmin/max (decimal), integer

Tại sao số hiển thị khác nhau giữa các người dùng?

Plugin sử dụng locale từ localStorage (DIGIFORCE_LOCALE). Nếu người dùng A đặt vi-VN và người dùng B đặt en-US, cùng một giá trị sẽ hiển thị khác:

LocaleGiá trị 1234567.89Hiển thị
vi-VN1234567.891.234.567,89
en-US1234567.891,234,567.89
de-DE1234567.891.234.567,89

Đây là hành vi đúng — mỗi locale có quy ước riêng.

Cấu hình

Precision "step" hoạt động thế nào?

Step quyết định độ chính xác thập phân:

StepPrecisionVí dụ (en-US)
10 chữ số thập phân1,234,568
0.11 chữ số1,234,567.9
0.012 chữ số1,234,567.89
0.0013 chữ số1,234,567.890
0.00014 chữ số1,234,567.8900
0.000015 chữ số1,234,567.89000

Pretty format là gì?

Khi bật "Use pretty format", plugin tự động:

  • Thêm dấu phân cách hàng nghìn theo locale
  • Cắt/padding thập phân theo precision
  • Hiển thị đẹp trong cả input mode và read-only mode

Khi tắt, input hiển thị số thô không có dấu phân cách.

Có hỗ trợ prefix/suffix (VD: "$" hoặc "VND") không?

Plugin hiện tại không có tùy chọn prefix/suffix tùy chỉnh trong UI cấu hình. Tuy nhiên:

  • Field Percent tự động thêm suffix %
  • Nếu cần prefix/suffix tùy chỉnh, bạn có thể mở rộng component hoặc sử dụng Schema customization

Lỗi thường gặp

Số hiển thị sai sau khi nhập

Kiểm tra:

  1. Precision phù hợp chưa? — Nếu step là 1 (integer), số 1234.56 sẽ bị làm tròn
  2. Locale đúng chưa? — Dấu phẩy và dấu chấm có ý nghĩa khác nhau giữa en-US và vi-VN
  3. Database type phù hợp?float có thể mất precision với số lớn, dùng decimal nếu cần chính xác cao

Validation "Maximum must greater than minimum" hiện ra liên tục

Lỗi này xảy ra khi bạn đặt giá trị Maximum nhỏ hơn Minimum trong cấu hình field. Đảm bảo Maximum > Minimum.

Percent field hiển thị giá trị lạ (VD: nhập 50 nhưng thấy 5000%)

Kiểm tra xem bạn có đang ghi dữ liệu trực tiếp vào DB (qua API hoặc import) không. Nhớ rằng Percent field lưu dạng decimal:

  • Nhập 50 trên UI → DB lưu 0.5
  • Nếu bạn ghi 50 trực tiếp vào DB → UI hiển thị 5000%

Giải pháp: Khi ghi dữ liệu qua API, chia cho 100 trước khi lưu.

Dấu phân cách không đúng theo locale

Plugin đọc locale từ localStorage.getItem('DIGIFORCE_LOCALE'). Nếu giá trị này không được set hoặc set sai, plugin sẽ dùng mặc định en-US. Kiểm tra:

javascript
// Trong browser console
localStorage.getItem('DIGIFORCE_LOCALE');
// Nên trả về "vi-VN" hoặc locale mong muốn