diff --git a/src/components/host/HostStatus/HostStatus.js b/src/components/host/HostStatus/HostStatus.js index 7948cadd65bc5c10bc1c1be49a01ac01694ed472..f4f88185c094a1758763998e62af2ee864c970ae 100644 --- a/src/components/host/HostStatus/HostStatus.js +++ b/src/components/host/HostStatus/HostStatus.js @@ -1,8 +1,8 @@ -import { useContext, useMemo } from "react"; -import { Grid, Skeleton } from "@mui/material"; +import { useContext, useMemo, useEffect } from "react"; import { apiContext } from "../../../api/DeployApi"; import { useAPIMethod } from "@ess-ics/ce-ui-common"; -import { HostStatusIcon } from "./HostStatusIcon"; +import { getHostStatus } from "./HostStatusData"; +import { Status } from "../../common/Status"; function createRequest(hostId) { return { @@ -10,36 +10,41 @@ function createRequest(hostId) { }; } -export const HostStatus = ({ hostId }) => { +export const HostStatus = ({ hostId, hideAlerts }) => { const client = useContext(apiContext); - const params = useMemo(() => createRequest(hostId), [hostId]); const { - value: hostStatus, - loading, - dataReady + wrapper: callFetchHostAlerts, + value: hostAlert, + abort: abortCallFetchHostAlerts } = useAPIMethod({ + fcn: client.apis.Hosts.findHostAlerts, + params, + call: false + }); + + const { value: hostStateStatus } = useAPIMethod({ fcn: client.apis.Hosts.findHostStatus, params }); + useEffect(() => { + if (!hideAlerts) { + callFetchHostAlerts(); + } + + return () => { + abortCallFetchHostAlerts(); + }; + }, [hostStateStatus, hideAlerts]); + return ( - <Grid - container - direction="column" - justifyContent="center" - alignItems="center" - > - {loading || !dataReady ? ( - <Skeleton - variant="circular" - height={20} - width={20} - /> - ) : ( - <HostStatusIcon hostStatus={hostStatus} /> - )} - </Grid> + <Status + state={hostStateStatus} + alert={hostAlert} + hideAlerts={hideAlerts} + getStatusFcn={getHostStatus} + /> ); }; diff --git a/src/components/host/HostStatus/HostStatusIcon.js b/src/components/host/HostStatus/HostStatusIcon.js index 6cd41fd9f35674069aa7de10133f9be0c523c876..9fdee3d96b2607fdf8f4b4fb5f68aadc46de3c4f 100644 --- a/src/components/host/HostStatus/HostStatusIcon.js +++ b/src/components/host/HostStatus/HostStatusIcon.js @@ -7,13 +7,13 @@ import { StatusPopoverContent, statusConfig } from "../../common/Status"; -import { getHostStatusInfo } from "./HostStatusData"; +import { getHostStatus } from "./HostStatusData"; export function HostStatusIcon({ hostStatus, hideAlerts = false }) { const theme = useTheme(); let { alerts } = hostStatus; - let hostStatusStatus = getHostStatusInfo(hostStatus); + let hostStatusStatus = getHostStatus(hostStatus); const displayBadge = !hideAlerts &&