From d1d0585269131092ef80ad7fc36eb3303b8bce72 Mon Sep 17 00:00:00 2001 From: chiayin Date: Tue, 19 Sep 2023 17:53:24 +0800 Subject: [PATCH] Issue #117: Done. --- .../Conformance/ConformanceResults.vue | 5 +++-- src/module/shortScaleNumber.js | 19 +++++++++++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 src/module/shortScaleNumber.js diff --git a/src/components/Discover/Conformance/ConformanceResults.vue b/src/components/Discover/Conformance/ConformanceResults.vue index 52b8a41..6389431 100644 --- a/src/components/Discover/Conformance/ConformanceResults.vue +++ b/src/components/Discover/Conformance/ConformanceResults.vue @@ -178,6 +178,7 @@ import MoreModal from './MoreModal.vue'; import getNumberLabel from '@/module/numberLabel.js'; import { setLineChartData, setBarChartData, timeRange, yTimeRange, getXIndex, formatTime } from '@/module/setChartData.js'; import abbreviateNumber from '@/module/abbreviateNumber.js'; +import shortScaleNumber from '@/module/shortScaleNumber.js'; import getMoment from 'moment'; export default { @@ -563,8 +564,8 @@ export default { color: '#334155', align: 'inner', callback: function(value, index, values) { - if (index === 0) return abbreviateNumber(value); - else if (index === values.length - 1) return abbreviateNumber(value); + if (index === 0) return shortScaleNumber(value); + else if (index === values.length - 1) return shortScaleNumber(value); }, }, grid: { diff --git a/src/module/shortScaleNumber.js b/src/module/shortScaleNumber.js new file mode 100644 index 0000000..a080675 --- /dev/null +++ b/src/module/shortScaleNumber.js @@ -0,0 +1,19 @@ +/** + * 數量單位轉換,輸出 k m b t 數值。 + * @param {number} number + * @returns {string} + */ +export default function shortScaleNumber(number) { + const abbreviations = ["", "k", "m", "b", "t"]; + let index = 0; + let num = number; + + // 確保在轉換數字時,不會超出索引範圍。如果 index 已經達到了最後一個單位縮寫(t,兆),那麼我們就不再進行轉換,以免超出數組的範圍。 + while (num >= 1000 && index < abbreviations.length - 1) { + num /= 1000; + index++; + } + // 使用 Math.ceil 來無條件進位 + num = Math.ceil(num * 10) / 10; + return num + abbreviations[index] + " " ; +}