diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-02-28 15:09:05 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-02-28 15:09:05 +0300 |
commit | 5426ca9908085087d465fa52800335f408eb965a (patch) | |
tree | 6b442cff02fda9402fc7bb9cf9986e363dd5aaa6 /app/assets/javascripts/lib/utils/unit_format/formatter_factory.js | |
parent | 67cdfd2683b89bce260600fa8925eefdcdf9e3e5 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/assets/javascripts/lib/utils/unit_format/formatter_factory.js')
-rw-r--r-- | app/assets/javascripts/lib/utils/unit_format/formatter_factory.js | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/app/assets/javascripts/lib/utils/unit_format/formatter_factory.js b/app/assets/javascripts/lib/utils/unit_format/formatter_factory.js index 432a9254558..98bcb8348e2 100644 --- a/app/assets/javascripts/lib/utils/unit_format/formatter_factory.js +++ b/app/assets/javascripts/lib/utils/unit_format/formatter_factory.js @@ -117,3 +117,23 @@ export const scaledSIFormatter = (unit = '', prefixOffset = 0) => { return scaledFormatter(units); }; + +/** + * Returns a function that formats a number scaled using SI units notation. + */ +export const scaledBinaryFormatter = (unit = '', prefixOffset = 0) => { + // eslint-disable-next-line @gitlab/i18n/no-non-i18n-strings + const multiplicative = ['Ki', 'Mi', 'Gi', 'Ti', 'Pi', 'Ei', 'Zi', 'Yi']; + const symbols = ['', ...multiplicative]; + + const units = symbols.slice(prefixOffset).map(prefix => { + return `${prefix}${unit}`; + }); + + if (!units.length) { + // eslint-disable-next-line @gitlab/i18n/no-non-i18n-strings + throw new RangeError('The unit cannot be converted, please try a different scale'); + } + + return scaledFormatter(units, 1024); +}; |