diff options
author | Steve Klebanoff <steve.klebanoff@gmail.com> | 2018-11-03 04:28:52 +0800 |
---|---|---|
committer | Steve Klebanoff <steve.klebanoff@gmail.com> | 2018-11-03 04:28:52 +0800 |
commit | d160792923c76c5bd0f61e7af2580c158dddc3d4 (patch) | |
tree | 422a523890fd1243795890d51d6b2917ec6fdc69 /packages/instant/src/util/time.ts | |
parent | b0f2ab45e9761cc760b94d8567df8ba66956388c (diff) | |
parent | 6a57a7b5be151114bb06c171560976b09a8c4aa1 (diff) | |
download | dexon-sol-tools-d160792923c76c5bd0f61e7af2580c158dddc3d4.tar dexon-sol-tools-d160792923c76c5bd0f61e7af2580c158dddc3d4.tar.gz dexon-sol-tools-d160792923c76c5bd0f61e7af2580c158dddc3d4.tar.bz2 dexon-sol-tools-d160792923c76c5bd0f61e7af2580c158dddc3d4.tar.lz dexon-sol-tools-d160792923c76c5bd0f61e7af2580c158dddc3d4.tar.xz dexon-sol-tools-d160792923c76c5bd0f61e7af2580c158dddc3d4.tar.zst dexon-sol-tools-d160792923c76c5bd0f61e7af2580c158dddc3d4.zip |
Merge branch 'development' into fix/instant/decimal-fields-scaling-amount-input-bn
Diffstat (limited to 'packages/instant/src/util/time.ts')
-rw-r--r-- | packages/instant/src/util/time.ts | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/packages/instant/src/util/time.ts b/packages/instant/src/util/time.ts new file mode 100644 index 000000000..bfe69cad5 --- /dev/null +++ b/packages/instant/src/util/time.ts @@ -0,0 +1,39 @@ +const secondsToMinutesAndRemainingSeconds = (seconds: number): { minutes: number; remainingSeconds: number } => { + const minutes = Math.floor(seconds / 60); + const remainingSeconds = seconds - minutes * 60; + + return { + minutes, + remainingSeconds, + }; +}; + +const padZero = (aNumber: number): string => { + return aNumber < 10 ? `0${aNumber}` : aNumber.toString(); +}; + +export const timeUtil = { + // converts seconds to human readable version of seconds or minutes + secondsToHumanDescription: (seconds: number): string => { + const { minutes, remainingSeconds } = secondsToMinutesAndRemainingSeconds(seconds); + + if (minutes === 0) { + const suffix = seconds > 1 ? 's' : ''; + return `${seconds} second${suffix}`; + } + + const minuteSuffix = minutes > 1 ? 's' : ''; + const minuteText = `${minutes} minute${minuteSuffix}`; + + const secondsSuffix = remainingSeconds > 1 ? 's' : ''; + const secondsText = remainingSeconds === 0 ? '' : ` ${remainingSeconds} second${secondsSuffix}`; + + return `${minuteText}${secondsText}`; + }, + // converts seconds to stopwatch time (i.e. 05:30 and 00:30) + // only goes up to minutes, not hours + secondsToStopwatchTime: (seconds: number): string => { + const { minutes, remainingSeconds } = secondsToMinutesAndRemainingSeconds(seconds); + return `${padZero(minutes)}:${padZero(remainingSeconds)}`; + }, +}; |