From 98037306750a2bf46ce9de63b6ea90957721ed1e Mon Sep 17 00:00:00 2001 From: Ethan Dalool Date: Sat, 22 Jul 2023 17:17:26 -0700 Subject: [PATCH] Add function common.seconds_to_hms. --- voussoirkitjs/common.js | 48 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/voussoirkitjs/common.js b/voussoirkitjs/common.js index 73f0b98..86957e0 100644 --- a/voussoirkitjs/common.js +++ b/voussoirkitjs/common.js @@ -71,6 +71,54 @@ function join_and_trail(list, separator) return list.join(separator) + separator } +common.hms_render_colons = +function hms_render_colons(hours, minutes, seconds) +{ + const parts = []; + if (hours !== null) + { + parts.push(hours.toLocaleString(undefined, {minimumIntegerDigits: 2})); + } + if (minutes !== null) + { + parts.push(minutes.toLocaleString(undefined, {minimumIntegerDigits: 2})); + } + parts.push(seconds.toLocaleString(undefined, {minimumIntegerDigits: 2})); + return parts.join(":") +} + +common.seconds_to_hms = +function seconds_to_hms(seconds, args) +{ + args = args || {}; + const renderer = args["renderer"] || common.hms_render_colons; + const force_minutes = args["force_minutes"] || false; + const force_hours = args["force_hours"] || false; + + if (seconds > 0 && seconds < 1) + { + seconds = 1; + } + else + { + seconds = Math.round(seconds); + } + let minutes = Math.floor(seconds / 60); + seconds = seconds % 60; + let hours = Math.floor(minutes / 60); + minutes = minutes % 60; + + if (hours == 0 && force_hours == false) + { + hours = null; + } + if (minutes == 0 && force_minutes == false) + { + minutes = null; + } + return renderer(hours, minutes, seconds); +} + //////////////////////////////////////////////////////////////////////////////////////////////////// // HTML & DOM ////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////