diff --git a/package-lock.json b/package-lock.json index 4f3ab11c25053714c71bdba55aaf5a4d9e88a60a..6d2fdbfdca14abfe4830a60c62a2383f44de06ef 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,7 @@ "@ahooksjs/use-url-state": "^3.5.0", "@emotion/react": "^11.11.1", "@emotion/styled": "^11.11.0", - "@ess-ics/ce-ui-common": "^3.0.0", + "@ess-ics/ce-ui-common": "^3.2.0", "@fontsource/roboto": "^4.1.0", "@mui/icons-material": "^5.14.1", "@mui/material": "^5.14.1", @@ -2656,9 +2656,9 @@ } }, "node_modules/@ess-ics/ce-ui-common": { - "version": "3.0.0", - "resolved": "https://artifactory.esss.lu.se/artifactory/api/npm/ics-npm/@ess-ics/ce-ui-common/-/ce-ui-common-3.0.0.tgz", - "integrity": "sha1-lhKfUoe/ItHuObcjCvC6XF1WWl0=", + "version": "3.2.0", + "resolved": "https://artifactory.esss.lu.se/artifactory/api/npm/ics-npm/@ess-ics/ce-ui-common/-/ce-ui-common-3.2.0.tgz", + "integrity": "sha1-3RANHrN15+IfL+Z/J/W+M5YGk+8=", "dependencies": { "@fontsource/titillium-web": "^4.5.9", "@mui/x-data-grid-pro": "^6.5.0", @@ -2666,6 +2666,7 @@ "ajv": "^8.11.0", "ajv-formats": "^2.1.1", "json-source-map": "^0.6.1", + "moment": "^2.29.4", "prop-types": "^15.8.1", "react-ace": "^10.1.0", "react-cookie": "^4.1.1", @@ -41736,9 +41737,9 @@ "dev": true }, "@ess-ics/ce-ui-common": { - "version": "3.0.0", - "resolved": "https://artifactory.esss.lu.se/artifactory/api/npm/ics-npm/@ess-ics/ce-ui-common/-/ce-ui-common-3.0.0.tgz", - "integrity": "sha1-lhKfUoe/ItHuObcjCvC6XF1WWl0=", + "version": "3.2.0", + "resolved": "https://artifactory.esss.lu.se/artifactory/api/npm/ics-npm/@ess-ics/ce-ui-common/-/ce-ui-common-3.2.0.tgz", + "integrity": "sha1-3RANHrN15+IfL+Z/J/W+M5YGk+8=", "requires": { "@fontsource/titillium-web": "^4.5.9", "@mui/x-data-grid-pro": "^6.5.0", @@ -41746,6 +41747,7 @@ "ajv": "^8.11.0", "ajv-formats": "^2.1.1", "json-source-map": "^0.6.1", + "moment": "^2.29.4", "prop-types": "^15.8.1", "react-ace": "^10.1.0", "react-cookie": "^4.1.1", diff --git a/package.json b/package.json index bf38f7652507d8870cc891c8b029bd1196c74f1e..d7861dfe7ee597b63c12e3b71b308ff0ceef8c90 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "@ahooksjs/use-url-state": "^3.5.0", "@emotion/react": "^11.11.1", "@emotion/styled": "^11.11.0", - "@ess-ics/ce-ui-common": "^3.0.0", + "@ess-ics/ce-ui-common": "^3.2.0", "@fontsource/roboto": "^4.1.0", "@mui/icons-material": "^5.14.1", "@mui/material": "^5.14.1", diff --git a/src/components/IOC/IOCDeployDialog/IOCDeployDialog.js b/src/components/IOC/IOCDeployDialog/IOCDeployDialog.js index 8ba28e50a9965c484ec5316345fabccd06369239..c09e031ae0ab59455e6e8542cdaf08dab1bf97c7 100644 --- a/src/components/IOC/IOCDeployDialog/IOCDeployDialog.js +++ b/src/components/IOC/IOCDeployDialog/IOCDeployDialog.js @@ -10,9 +10,14 @@ import { Stack } from "@mui/material"; import { useTypingTimer } from "../../common/SearchBoxFilter/TypingTimer"; -import { formatDate, transformHostQuery } from "../../common/Helper"; +import { transformHostQuery } from "../../common/Helper"; import { apiContext } from "../../../api/DeployApi"; -import { useAPIMethod, Dialog, EllipsisText } from "@ess-ics/ce-ui-common"; +import { + useAPIMethod, + Dialog, + EllipsisText, + formatDateAndTime +} from "@ess-ics/ce-ui-common"; export function IOCDeployDialog({ open, @@ -125,7 +130,7 @@ export function IOCDeployDialog({ fontFamily="monospace" display="inline-block" > - {formatDate(option.commitDate)} + {formatDateAndTime(option.commitDate)} </Typography> </td> </tr> diff --git a/src/components/Job/JobDetails.js b/src/components/Job/JobDetails.js index 31132dd76f0707cdf12496228a27f10865c4bb60..c764d916e223176a389846b89b9bce43613b20c8 100644 --- a/src/components/Job/JobDetails.js +++ b/src/components/Job/JobDetails.js @@ -5,11 +5,11 @@ import { SimpleAccordion, AlertBannerList, ExternalLink, - InternalLink + InternalLink, + formatDateAndTime } from "@ess-ics/ce-ui-common"; import { JobBadge } from "./JobBadge"; import { DeploymentJobOutput } from "../deployments/DeploymentJobOutput"; -import { formatDate } from "../common/Helper"; import GitRefLink from "../IOC/GitRefLink"; import AccessControl from "../auth/AccessControl"; import { AWXJobDetails } from "../../api/DataTypes"; @@ -82,10 +82,10 @@ export function JobDetails({ operation, job }) { </ExternalLink> ), "created time": operation?.createdAt - ? formatDate(operation.createdAt) + ? formatDateAndTime(operation.createdAt) : "-", "AWX job start time": operation?.startTime - ? formatDate(operation.startTime) + ? formatDateAndTime(operation.startTime) : "-", duration: operation?.finishedAt ? ( <JobDuration diff --git a/src/components/Job/JobDuration.js b/src/components/Job/JobDuration.js index 784fdddf106423a13b3b75b52d3c046c00e70a4b..8bf71f8aef22fb97ef59dcffbc052f6d5bf32d1c 100644 --- a/src/components/Job/JobDuration.js +++ b/src/components/Job/JobDuration.js @@ -3,6 +3,7 @@ import AccessTimeIcon from "@mui/icons-material/AccessTime"; import { Tooltip } from "@mui/material"; import LabeledIcon from "../common/LabeledIcon"; import moment from "moment"; +import { formatDateAndTime } from "@ess-ics/ce-ui-common"; const formattedDuration = ({ startDate, finishDate }) => { if (startDate && finishDate) { @@ -36,8 +37,10 @@ export const JobDuration = ({ job, renderContents }) => { return ( <Tooltip - title={`Finished ${job.finishedAt}`} - aria-label={`Finshed ${job.finishedAt}, after ${duration}`} + title={`Finished ${formatDateAndTime(job.finishedAt)}`} + aria-label={`Finshed ${formatDateAndTime( + job.finishedAt + )}, after ${duration}`} > {contents} </Tooltip> diff --git a/src/components/Job/JobTable/JobStatusColumn.js b/src/components/Job/JobTable/JobStatusColumn.js index b4e570334a8e4fc1e4a2da920b3934e3c16464ea..dd03c4ea19d4e847d3a6c984058c88b6b4a9de4b 100644 --- a/src/components/Job/JobTable/JobStatusColumn.js +++ b/src/components/Job/JobTable/JobStatusColumn.js @@ -1,10 +1,11 @@ import React from "react"; import EventIcon from "@mui/icons-material/Event"; import { Stack, Tooltip } from "@mui/material"; -import { formatDate, timeAgo } from "../../common/Helper"; +import { timeAgo } from "../../common/Helper"; import LabeledIcon from "../../common/LabeledIcon"; import { JobStatusIcon } from "../JobStatus"; import { JobDuration } from "../JobDuration"; +import { formatDateAndTime } from "@ess-ics/ce-ui-common"; export const JobStatusColumn = ({ job }) => { const createOrStartDate = new Date(job?.startTime ?? job.createdAt); @@ -18,8 +19,8 @@ export const JobStatusColumn = ({ job }) => { <JobStatusIcon job={job} /> <Stack> <Tooltip - title={`${formatDate(createOrStartDate)}`} - aria-label={`${formattedCreateOrStartDate}, on ${formatDate( + title={`${formatDateAndTime(createOrStartDate)}`} + aria-label={`${formattedCreateOrStartDate}, on ${formatDateAndTime( createOrStartDate )}`} > diff --git a/src/components/common/Helper.js b/src/components/common/Helper.js index 8213e859c5dc5c2c325d72a9e5e6520233759de8..62a127f82c0a9582942a4e888deaa3f9ace13e6f 100644 --- a/src/components/common/Helper.js +++ b/src/components/common/Helper.js @@ -1,5 +1,4 @@ import React, { useState, useEffect } from "react"; -import moment from "moment"; import { alpha } from "@mui/material/styles"; import TimeAgo from "javascript-time-ago"; import en from "javascript-time-ago/locale/en"; @@ -33,24 +32,6 @@ export function searchInArray(array, searchText) { return false; } -export const formatDate = (value) => { - if (value) { - return moment(value).format("DD/MM/YYYY HH:mm:ss"); - } - return null; -}; - -export const formatDateOnly = (value) => { - if (value) { - return moment(value).format(dateFormat()); - } - return null; -}; - -export const dateFormat = () => { - return "DD/MM/YYYY"; -}; - function getWindowDimensions() { const { innerWidth: width, innerHeight: height } = window; return { diff --git a/src/components/common/Loki/LokiPanel.js b/src/components/common/Loki/LokiPanel.js index 4a4bfe0f4d8ca2ec5389a4b618db73e8f7862002..3c24dead26448529d6494acf91006394f31151ee 100644 --- a/src/components/common/Loki/LokiPanel.js +++ b/src/components/common/Loki/LokiPanel.js @@ -15,13 +15,12 @@ import { FormControl, LinearProgress } from "@mui/material"; -import { formatDate } from "../Helper.js"; import { Console } from "../Console/Console"; import { useSafePolling } from "../../../hooks/Polling"; import { useCustomSnackbar } from "../snackbar/Snackbar"; import { closeSnackbar } from "notistack"; import { apiContext } from "../../../api/DeployApi"; -import { useAPIMethod } from "@ess-ics/ce-ui-common"; +import { useAPIMethod, formatDateAndTime } from "@ess-ics/ce-ui-common"; const PREFIX = "LokiPanel"; @@ -329,7 +328,7 @@ function formatLogLine(logLine) { return ( "<span><span class=logdate>" + - formatDate(logLine.logDate) + + formatDateAndTime(logLine.logDate) + "</span> " + convert.toHtml(logLine.logMessage) + "<br/></span>" diff --git a/src/components/statistics/DeploymentLineChart/DeploymentLineChart.js b/src/components/statistics/DeploymentLineChart/DeploymentLineChart.js index b22de827dec8ddea7cbb0e00cd355be9031071ed..0e278c8bc62dfa75aee8513d3658f0c4e14cf737 100644 --- a/src/components/statistics/DeploymentLineChart/DeploymentLineChart.js +++ b/src/components/statistics/DeploymentLineChart/DeploymentLineChart.js @@ -1,6 +1,5 @@ import React from "react"; import { useEffect } from "react"; -import { formatDateOnly } from "../../common/Helper"; import { circularPalette } from "../../common/Helper"; import { LinearProgress, useTheme, Typography } from "@mui/material"; import { @@ -12,6 +11,7 @@ import { ResponsiveContainer, Tooltip } from "recharts"; +import { formatDateOnly } from "@ess-ics/ce-ui-common"; export default function DeploymentLineChart({ title, diff --git a/src/components/statistics/OperationChart/OperationChart.js b/src/components/statistics/OperationChart/OperationChart.js index 8a4236f6c4fd2a38136f335e228295edae14bd4e..9ab538eb5df4b96695b82890553798431853604f 100644 --- a/src/components/statistics/OperationChart/OperationChart.js +++ b/src/components/statistics/OperationChart/OperationChart.js @@ -1,6 +1,5 @@ import React from "react"; import { useEffect } from "react"; -import { formatDateOnly } from "../../common/Helper"; import { circularPalette } from "../../common/Helper"; import { LinearProgress, useTheme, Typography } from "@mui/material"; import { @@ -13,6 +12,7 @@ import { ResponsiveContainer, Tooltip } from "recharts"; +import { formatDateOnly } from "@ess-ics/ce-ui-common"; export default function OperationChart({ title, diff --git a/src/views/records/RecordDetailsView.js b/src/views/records/RecordDetailsView.js index 1ddba9e113d69ccd097efd3b87fff33b9cf13f32..d7b625a23de3ce1ffaf9b510163d0ebb1933cc1d 100644 --- a/src/views/records/RecordDetailsView.js +++ b/src/views/records/RecordDetailsView.js @@ -14,14 +14,14 @@ import { InternalLink } from "@ess-ics/ce-ui-common"; import { RecordBadge } from "../../components/records/RecordBadge"; -import { applicationTitle, formatDate } from "../../components/common/Helper"; +import { applicationTitle } from "../../components/common/Helper"; import { useParams } from "react-router-dom"; import { useNavigate } from "react-router-dom"; import { onFetchEntityError } from "../../components/common/Helper"; import NotFoundView from "../../components/navigation/NotFoundView/NotFoundView"; import { apiContext } from "../../api/DeployApi"; -import { useAPIMethod } from "@ess-ics/ce-ui-common"; +import { useAPIMethod, formatDateAndTime } from "@ess-ics/ce-ui-common"; export function RecordDetailsView() { const { name } = useParams(); @@ -112,7 +112,7 @@ export function RecordDetailsView() { for (const [key, value] of Object.entries(record.properties)) { if (key.toLowerCase().includes("time")) { - subset["Last updated"] = formatDate(value); + subset["Last updated"] = formatDateAndTime(value); } else if (key.toLowerCase().includes("recordtype")) { subset["Record type"] = value; } else if (key.toLowerCase().includes("recorddesc")) {