import React, { useMemo } from "react";
import type { Agent } from "@migration-planner-ui/api-client/models";
import {
Button,
Icon,
Popover,
Spinner,
Split,
SplitItem,
TextContent,
Text,
} from "@patternfly/react-core";
import {
DisconnectedIcon,
ExclamationCircleIcon,
CheckCircleIcon,
InfoCircleIcon,
} from "@patternfly/react-icons";
import globalDangerColor200 from "@patternfly/react-tokens/dist/esm/global_danger_color_200";
import globalInfoColor100 from "@patternfly/react-tokens/dist/esm/global_info_color_100";
import globalSuccessColor100 from "@patternfly/react-tokens/dist/esm/global_success_color_100";
import { Link } from "react-router-dom";
// eslint-disable-next-line @typescript-eslint/no-namespace
export namespace AgentStatusView {
export type Props = {
status: Agent["status"];
statusInfo?: Agent["statusInfo"];
credentialUrl?: Agent["credentialUrl"];
};
}
const StatusInfoWaitingForCredentials: React.FC<{
credentialUrl?: Agent["credentialUrl"];
}> = ({ credentialUrl }) => {
return (
<>
Click the link below to connect the Discovery Environment to your VMware
environment.
{credentialUrl && (
{credentialUrl}
)}
>
);
};
export const AgentStatusView: React.FC = (props) => {
const { status, statusInfo, credentialUrl } = props;
const statusView = useMemo(() => {
// eslint-disable-next-line prefer-const
let fake: Agent["status"] | null = null;
// fake = "not-connected";
// fake = "waiting-for-credentials";
// fake = "gathering-initial-inventory";
// fake = "up-to-date";
// fake = "error";
switch (fake ?? status) {
case "not-connected":
return {
icon: (
),
text: "Not connected",
};
case "waiting-for-credentials":
return {
icon: (
),
text: "Waiting for credentials",
};
case "gathering-initial-inventory":
return {
icon: (
),
text: "Gathering inventory",
};
case "error":
return {
icon: (
),
text: "Error",
};
case "up-to-date":
return {
icon: (
),
text: "Ready",
};
}
}, [status]);
return (
{statusView && statusView.icon}
{statusInfo || statusView && statusView.text==='Waiting for credentials' ? (
{statusInfo}
) : (
)
}
>
) : (
statusView && statusView.text
)}
);
};
AgentStatusView.displayName = "AgentStatusView";