mirror of
https://github.com/TheAnachronism/docspell.git
synced 2025-01-26 00:18:26 +00:00
67 lines
1.0 KiB
Elm
67 lines
1.0 KiB
Elm
module Util.Duration exposing (Duration, toHuman)
|
|
|
|
-- 486ms -> 12s -> 1:05 -> 59:45 -> 1:02:12
|
|
|
|
|
|
type alias Duration =
|
|
Int
|
|
|
|
|
|
toHuman : Duration -> String
|
|
toHuman dur =
|
|
fromMillis dur
|
|
|
|
|
|
|
|
-- implementation
|
|
|
|
|
|
fromMillis : Int -> String
|
|
fromMillis ms =
|
|
case ms // 1000 of
|
|
0 ->
|
|
String.fromInt ms ++ "ms"
|
|
|
|
n ->
|
|
fromSeconds n
|
|
|
|
|
|
fromSeconds : Int -> String
|
|
fromSeconds sec =
|
|
case sec // 60 of
|
|
0 ->
|
|
String.fromInt sec ++ "s"
|
|
|
|
n ->
|
|
let
|
|
s =
|
|
sec - (n * 60)
|
|
in
|
|
fromMinutes n ++ ":" ++ num s
|
|
|
|
|
|
fromMinutes : Int -> String
|
|
fromMinutes min =
|
|
case min // 60 of
|
|
0 ->
|
|
num min
|
|
|
|
n ->
|
|
let
|
|
m =
|
|
min - (n * 60)
|
|
in
|
|
num n ++ ":" ++ num m
|
|
|
|
|
|
num : Int -> String
|
|
num n =
|
|
String.fromInt n
|
|
|> (++)
|
|
(if n < 10 then
|
|
"0"
|
|
|
|
else
|
|
""
|
|
)
|