(DateTime.now());
useEffect(() => {
- setDateSelected(
- calculateNewTime(
- initialDate,
- selectedDays,
- selectedHours,
- selectedMinutes
- )
- );
+ if (
+ !isNaN(selectedHours) &&
+ !isNaN(selectedDays) &&
+ !isNaN(selectedMinutes)
+ ) {
+ setDateSelected(
+ calculateNewTime(
+ initialDate,
+ selectedDays,
+ selectedHours,
+ selectedMinutes
+ )
+ );
+ }
}, [initialDate, selectedDays, selectedHours, selectedMinutes]);
useEffect(() => {
if (validDate) {
- onChange(dateSelected.format("YYYY-MM-DDTHH:mm:ss"), true);
+ const formattedDate = dateSelected.toFormat("yyyy-MM-dd HH:mm:ss");
+ onChange(formattedDate.split(" ").join("T"), true);
} else {
onChange("0000-00-00", false);
}
@@ -275,7 +279,7 @@ const DaysSelector = ({
{entity} will be available until:
{" "}
- {dateSelected.format("MM/DD/YYYY HH:mm:ss")}
+ {dateSelected.toFormat("MM/dd/yyyy HH:mm:ss")}
) : (
diff --git a/portal-ui/src/screens/Console/Common/TLSCertificate/TLSCertificate.tsx b/portal-ui/src/screens/Console/Common/TLSCertificate/TLSCertificate.tsx
index 943bdba93..979e2b8a0 100644
--- a/portal-ui/src/screens/Console/Common/TLSCertificate/TLSCertificate.tsx
+++ b/portal-ui/src/screens/Console/Common/TLSCertificate/TLSCertificate.tsx
@@ -15,6 +15,7 @@
// along with this program. If not, see .
import React from "react";
+import { DateTime } from "luxon";
import { Theme } from "@mui/material/styles";
import createStyles from "@mui/styles/createStyles";
import withStyles from "@mui/styles/withStyles";
@@ -33,7 +34,6 @@ import {
Typography,
} from "@mui/material";
import EventBusyIcon from "@mui/icons-material/EventBusy";
-import Moment from "react-moment";
import CertificateIcon from "../../../../icons/CertificateIcon";
const styles = (theme: Theme) =>
@@ -111,6 +111,9 @@ const TLSCertificate = ({
onDelete = () => {},
}: ITLSCertificate) => {
const certificates = certificateInfo.domains || [];
+
+ const expiry = DateTime.fromISO(certificateInfo.expiry);
+
return (
Expiry:
-
- {certificateInfo.expiry}
-
+ {expiry.toFormat("yyyy/MM/dd")}
diff --git a/portal-ui/src/screens/Console/Logs/ErrorLogs/ErrorLogs.tsx b/portal-ui/src/screens/Console/Logs/ErrorLogs/ErrorLogs.tsx
index 18d2b28b1..64647b4fa 100644
--- a/portal-ui/src/screens/Console/Logs/ErrorLogs/ErrorLogs.tsx
+++ b/portal-ui/src/screens/Console/Logs/ErrorLogs/ErrorLogs.tsx
@@ -21,13 +21,12 @@ import createStyles from "@mui/styles/createStyles";
import withStyles from "@mui/styles/withStyles";
import { useSelector } from "react-redux";
import { FormControl, Grid, InputBase, MenuItem, Select } from "@mui/material";
+import { DateTime } from "luxon";
-import moment from "moment/moment";
import { ErrorResponseHandler } from "../../../../../src/common/types";
import api from "../../../../../src/common/api";
import { AppState, useAppDispatch } from "../../../../store";
-import { LogMessage } from "../types";
import { wsProtocol } from "../../../../utils/wsUtils";
import {
actionsTray,
@@ -149,7 +148,7 @@ const ErrorLogs = () => {
// console.log(message.data.toString())
// FORMAT: 00:35:17 UTC 01/01/2021
- let m: LogMessage = JSON.parse(message.data.toString());
+ let m: any = JSON.parse(message.data.toString());
let isValidEntry = true;
if (
m.level === "" &&
@@ -161,7 +160,11 @@ const ErrorLogs = () => {
) {
isValidEntry = false;
}
- const logTime = moment(m.time, "HH:mm:s UTC MM/DD/YYYY").toDate();
+
+ const logTime = DateTime.fromFormat(
+ m.time,
+ "HH:mm:ss UTC MM/dd/yyyy"
+ ).toJSDate();
m.time = logTime;
m.key = Math.random();
@@ -401,5 +404,4 @@ const ErrorLogs = () => {
);
};
-//export default withStyles(styles)(connector(ErrorLogs));
export default ErrorLogs;
diff --git a/portal-ui/src/screens/Console/Logs/ErrorLogs/LogLine.tsx b/portal-ui/src/screens/Console/Logs/ErrorLogs/LogLine.tsx
index d1a89c830..0a1b2210d 100644
--- a/portal-ui/src/screens/Console/Logs/ErrorLogs/LogLine.tsx
+++ b/portal-ui/src/screens/Console/Logs/ErrorLogs/LogLine.tsx
@@ -14,13 +14,13 @@
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see .
import React, { Fragment, useState } from "react";
-import { LogMessage } from "../types";
+import { DateTime } from "luxon";
import TableRow from "@mui/material/TableRow";
import TableCell from "@mui/material/TableCell";
import Collapse from "@mui/material/Collapse";
import Box from "@mui/material/Box";
import Typography from "@mui/material/Typography";
-import Moment from "react-moment";
+import { LogMessage } from "../types";
import BoxArrowUp from "../../../../icons/BoxArrowUp";
import BoxArrowDown from "../../../../icons/BoxArrowDown";
import WarnFilledIcon from "../../../../icons/WarnFilledIcon";
@@ -159,7 +159,12 @@ const LogLine = (props: { log: LogMessage }) => {
titleLogMessage = (titleLogMessage || "").replace(tColorRegex, "");
- let dateStr = {log.time};
+ const logTime = DateTime.fromJSDate(log.time);
+
+ let dateStr = (
+ {logTime.toFormat("yyyy/MM/dd HH:mm:ss (ZZZZ)")}
+ );
+
if (log.time.getFullYear() === 1) {
dateStr = n/a;
}
diff --git a/portal-ui/src/screens/Console/Speedtest/Speedtest.tsx b/portal-ui/src/screens/Console/Speedtest/Speedtest.tsx
index f5c478b70..77d931b7f 100644
--- a/portal-ui/src/screens/Console/Speedtest/Speedtest.tsx
+++ b/portal-ui/src/screens/Console/Speedtest/Speedtest.tsx
@@ -22,8 +22,8 @@ import { Theme } from "@mui/material/styles";
import { useNavigate } from "react-router-dom";
import { AppState } from "../../../store";
import { Button } from "mds";
+import { DateTime } from "luxon";
import createStyles from "@mui/styles/createStyles";
-import moment from "moment/moment";
import PageHeader from "../Common/PageHeader/PageHeader";
import {
actionsTray,
@@ -123,14 +123,12 @@ const Speedtest = () => {
`${wsProt}://${url.hostname}:${port}${baseUrl}ws/speedtest?&size=${size}${sizeUnit}&duration=${duration}s`
);
- const baseDate = moment();
+ const baseDate = DateTime.now();
- const currentTime = baseDate.unix() / 1000;
+ const currentTime = baseDate.toUnixInteger() / 1000;
const incrementDate =
- baseDate
- .add(parseInt("10") * 2, "s" as moment.unitOfTime.DurationConstructor)
- .unix() / 1000;
+ baseDate.plus({ seconds: parseInt("10") * 2 }).toUnixInteger() / 1000;
const totalSeconds = (incrementDate - currentTime) / 1000;
@@ -160,7 +158,7 @@ const Speedtest = () => {
return [...prSt, ...insertData];
});
- const currTime = moment().unix() / 1000;
+ const currTime = DateTime.now().toUnixInteger() / 1000;
setCurrentValue(currTime);
};
c.onclose = () => {
diff --git a/portal-ui/src/screens/Console/Tenants/TenantDetails/SubnetLicenseTenant.tsx b/portal-ui/src/screens/Console/Tenants/TenantDetails/SubnetLicenseTenant.tsx
index c8357be78..fae6f36b6 100644
--- a/portal-ui/src/screens/Console/Tenants/TenantDetails/SubnetLicenseTenant.tsx
+++ b/portal-ui/src/screens/Console/Tenants/TenantDetails/SubnetLicenseTenant.tsx
@@ -22,7 +22,7 @@ import Grid from "@mui/material/Grid";
import { containerForHeader } from "../../Common/FormComponents/common/styleLibrary";
import { Typography } from "@mui/material";
import { niceBytes } from "../../../../common/utils";
-import Moment from "react-moment";
+import { DateTime } from "luxon";
import { Link } from "react-router-dom";
import Paper from "@mui/material/Paper";
import { ITenant } from "../ListTenants/types";
@@ -99,6 +99,10 @@ const SubnetLicenseTenant = ({
licenseInfo,
activateProduct,
}: ISubnetLicenseTenant) => {
+ const expiryTime = tenant
+ ? DateTime.fromISO(tenant.subnet_license.expires_at)
+ : DateTime.now();
+
return (
-
- {tenant.subnet_license.expires_at}
-
+ {expiryTime.toFormat("yyyy-MM-dd")}