From 853cc3eb99ca671142b27562fd91e6dff0ffaa21 Mon Sep 17 00:00:00 2001 From: Araozu Date: Wed, 22 Nov 2023 12:00:24 -0500 Subject: [PATCH] [FE][Classroom] Add a warning if the expiration date is in less than a month --- .../ClassroomUserInfo/AccountExpiration.tsx | 53 ++++++++++++++----- 1 file changed, 40 insertions(+), 13 deletions(-) diff --git a/frontend/src/OnlineClassroom/ClassroomUserInfo/AccountExpiration.tsx b/frontend/src/OnlineClassroom/ClassroomUserInfo/AccountExpiration.tsx index be6414c..bdd6db8 100644 --- a/frontend/src/OnlineClassroom/ClassroomUserInfo/AccountExpiration.tsx +++ b/frontend/src/OnlineClassroom/ClassroomUserInfo/AccountExpiration.tsx @@ -8,6 +8,12 @@ import { AxiosError } from "axios"; import { WarningIcon } from "../../icons/WarningIcon"; import { PlusIcon } from "../../icons/PlusIcon"; +enum ExpiryStatus { + Ok, + Soon, + Expired, +} + export function AccountExpiration(props: {userId: number}) { const [expirationDate, setExpirationDate] = createSignal(null); // YYYY-MM-DD const [localExpirationDate, setLocalExpirationDate] = createSignal(null); // YYYY-MM-DD @@ -15,17 +21,38 @@ export function AccountExpiration(props: {userId: number}) { const loading = createMemo(() => status() === LoadingStatus.Loading); - const expired = createMemo(() => { + const expired = createMemo(() => { if (expirationDate() === null) { - return false; + return ExpiryStatus.Ok; } - const date = new Date(`${expirationDate()}T00:00:00`); - const today = new Date(); + const expiryDate = new Date(`${expirationDate()}T00:00:00`); - return date < today; + const today = new Date(); + const aMonthFromNow = new Date(); + aMonthFromNow.setDate(aMonthFromNow.getDate() + 30); + + if (expiryDate < today) { + return ExpiryStatus.Expired; + } else if (expiryDate < aMonthFromNow) { + return ExpiryStatus.Soon; + } else { + return ExpiryStatus.Ok; + } }); + const dateColor = createMemo(() => { + switch (expired()) { + case ExpiryStatus.Ok: + return "var(--c-success)"; + case ExpiryStatus.Soon: + return "#9e4300"; + case ExpiryStatus.Expired: + return "var(--c-error)"; + } + }); + + const loadExpiration = () => { setError(""); setStatus(LoadingStatus.Loading); @@ -98,8 +125,8 @@ export function AccountExpiration(props: {userId: number}) { - {formatDate(expirationDate() ?? "")} + {formatDate(expirationDate() ?? "0-0-0")} - +
-

Ampliar por preset:

+

Establecer expiracion:

-

Ampliar manualmente:

+

Establecer expiracion:

- Actualizar + Establecer