From b050093fa02c5fc1d1ed70b6a6aafb44a86a2d36 Mon Sep 17 00:00:00 2001 From: tdro Date: Sat, 19 Nov 2022 10:21:21 -0500 Subject: static/js/timeago: Resolve relative format for future dates --- assets/js/index.js | 36 ++++++++++++++++++++++++++---------- static/js/timeago.ts | 17 +++++++++++++---- 2 files changed, 39 insertions(+), 14 deletions(-) diff --git a/assets/js/index.js b/assets/js/index.js index 7deaee1..b26ece2 100644 --- a/assets/js/index.js +++ b/assets/js/index.js @@ -503,17 +503,33 @@ const minutes = Math.floor(seconds / 60); const hours = Math.floor(minutes / 60); const days = Math.floor(hours / 24); - if (seconds <= 60) { - return element.textContent = relative.format(-1 * seconds, "second"); - } - if (minutes <= 120) { - return element.textContent = relative.format(-1 * minutes, "minute"); - } - if (hours <= 48) { - return element.textContent = relative.format(-1 * hours, "hour"); + if (Math.sign(seconds) === 1) { + if (seconds <= 60) { + return element.textContent = relative.format(-1 * seconds, "second"); + } + if (minutes <= 120) { + return element.textContent = relative.format(-1 * minutes, "minute"); + } + if (hours <= 48) { + return element.textContent = relative.format(-1 * hours, "hour"); + } + if (days <= 60) { + return element.textContent = relative.format(-1 * days, "day"); + } } - if (days <= 60) { - return element.textContent = relative.format(-1 * days, "day"); + if (Math.sign(seconds) === -1) { + if (-1 * days >= 60) { + return element.textContent = relative.format(-1 * days, "day"); + } + if (-1 * hours >= 48) { + return element.textContent = relative.format(-1 * hours, "hour"); + } + if (-1 * minutes >= 120) { + return element.textContent = relative.format(-1 * minutes, "minute"); + } + if (-1 * seconds >= 0) { + return element.textContent = relative.format(-1 * seconds, "second"); + } } } catch (error) { console.error("Error: Unable to resolve relative time format!", error); diff --git a/static/js/timeago.ts b/static/js/timeago.ts index 6e56063..af974fc 100644 --- a/static/js/timeago.ts +++ b/static/js/timeago.ts @@ -21,10 +21,19 @@ const hours: number = Math.floor(minutes / 60); const days: number = Math.floor(hours / 24); - if (seconds <= 60) { return element.textContent = relative.format(-1 * seconds, "second",); } - if (minutes <= 120) { return element.textContent = relative.format(-1 * minutes, "minute",); } - if (hours <= 48) { return element.textContent = relative.format(-1 * hours, "hour",); } - if (days <= 60) { return element.textContent = relative.format(-1 * days, "day",); } + if (Math.sign(seconds) === 1) { + if (seconds <= 60) { return element.textContent = relative.format(-1 * seconds, "second",); } + if (minutes <= 120) { return element.textContent = relative.format(-1 * minutes, "minute",); } + if (hours <= 48) { return element.textContent = relative.format(-1 * hours, "hour",); } + if (days <= 60) { return element.textContent = relative.format(-1 * days, "day",); } + } + + if (Math.sign(seconds) === -1) { + if (-1 * days >= 60) { return element.textContent = relative.format(-1 * days, "day",); } + if (-1 * hours >= 48) { return element.textContent = relative.format(-1 * hours, "hour",); } + if (-1 * minutes >= 120) { return element.textContent = relative.format(-1 * minutes, "minute",); } + if (-1 * seconds >= 0) { return element.textContent = relative.format(-1 * seconds, "second",); } + } } catch (error) { console.error( -- cgit v1.2.3