Files
docspell/modules/webapp/src/main/elm/Util/Size.elm
2021-09-21 22:35:38 +02:00

68 lines
1.0 KiB
Elm

{-
Copyright 2020 Eike K. & Contributors
SPDX-License-Identifier: AGPL-3.0-or-later
-}
module Util.Size exposing
( SizeUnit(..)
, bytesReadable
)
type SizeUnit
= G
| M
| K
| B
prettyNumber : Float -> String
prettyNumber n =
let
parts =
String.split "." (String.fromFloat n)
in
case parts of
n0 :: d :: [] ->
n0 ++ "." ++ String.left 2 d
_ ->
String.join "." parts
bytesReadable : SizeUnit -> Float -> String
bytesReadable unit n =
let
k =
n / 1024
num =
prettyNumber n
in
case unit of
G ->
num ++ "G"
M ->
if k > 1 then
bytesReadable G k
else
num ++ "M"
K ->
if k > 1 then
bytesReadable M k
else
num ++ "K"
B ->
if k > 1 then
bytesReadable K k
else
num ++ "B"