From dc3b2ce26aeff25f4ae61d94fb641d68a394108e Mon Sep 17 00:00:00 2001 From: Daniil Isakov <12859907+oplexz@users.noreply.github.com> Date: Sat, 13 Jan 2024 00:28:51 +0300 Subject: [PATCH] Icons and components; move functions to methods; dateTime and timeago --- webui/src/composables/useTimeAgo.js | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 webui/src/composables/useTimeAgo.js diff --git a/webui/src/composables/useTimeAgo.js b/webui/src/composables/useTimeAgo.js new file mode 100644 index 00000000..fec74a27 --- /dev/null +++ b/webui/src/composables/useTimeAgo.js @@ -0,0 +1,29 @@ +export function useTimeAgo() { + const timeago = (date) => { + const now = new Date(); + const diff = now - date; + + if (diff < 1000) { + return "just now"; + } else if (diff < 60000) { + const seconds = Math.floor(diff / 1000); + return `${seconds} ${plural("second", seconds)} ago`; + } else if (diff < 3600000) { + const minutes = Math.floor(diff / 60000); + return `${minutes} ${plural("minute", minutes)} ago`; + } else if (diff < 86400000) { + const hours = Math.floor(diff / 3600000); + return `${hours} ${plural("hour", hours)} ago`; + } else { + const days = Math.floor(diff / 86400000); + return `${days} ${plural("day", days)} ago`; + } + }; + + // #278 -- this function might need to be rewritten to support l18n + const plural = (word, count) => { + return count !== 1 ? `${word}s` : word; + }; + + return { timeago }; +}