From 30756e27d4f4e5284e764bdfd523b2ab8e76de14 Mon Sep 17 00:00:00 2001 From: barredterra <14891507+barredterra@users.noreply.github.com> Date: Thu, 13 Jun 2024 18:58:14 +0200 Subject: [PATCH] fix: shorten_number Before, `shorten_number(1234.5678, "Germany", 5)` wrongly returned `"1 K"`. Now it correctly returns `"1235"`, which is less than five digits. --- frappe/public/js/frappe/utils/utils.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/frappe/public/js/frappe/utils/utils.js b/frappe/public/js/frappe/utils/utils.js index f015ad577f..69b42134e3 100644 --- a/frappe/public/js/frappe/utils/utils.js +++ b/frappe/public/js/frappe/utils/utils.js @@ -1339,10 +1339,19 @@ Object.assign(frappe.utils, { // return number if total digits is lesser than min_length const len = String(number).match(/\d/g).length; - if (len < min_length) return number.toString(); + if (len < min_length) { + return number.toString(); + } const number_system = this.get_number_system(country); let x = Math.abs(Math.round(number)); + + // if rounding was sufficient to get below min_length, return the rounded number + const x_string = x.toString(); + if (x_string.length < min_length) { + return x_string; + } + for (const map of number_system) { if (x >= map.divisor) { let result = number / map.divisor;