@janus-idp/shared-react
Version:
Shared code for utils, types, and React components for the Janus frontend plugins.
209 lines (206 loc) • 6.29 kB
JavaScript
import React from 'react';
import { StatusError, StatusWarning, StatusRunning, StatusPending, StatusOK } from '@backstage/core-components';
import { makeStyles, createStyles } from '@material-ui/core';
import OffIcon from '@mui/icons-material/DoNotDisturbOnOutlined';
import UnknownIcon from '@mui/icons-material/HelpOutline';
import AngleDoubleRightIcon from '@mui/icons-material/KeyboardDoubleArrowRight';
import BanIcon from '@mui/icons-material/NotInterestedOutlined';
import PauseIcon from '@mui/icons-material/PauseCircleOutlineOutlined';
import cx from 'classnames';
import { StatusIconAndText } from './StatusIconAndText.esm.js';
const useStyles = makeStyles(
(theme) => createStyles({
iconStyles: {
height: "0.8em",
width: "0.8em",
top: "0.125em",
position: "relative",
flexShrink: 0,
marginRight: theme.spacing(0.6)
}
})
);
const DASH = "-";
const useStatusStyles = makeStyles((theme) => ({
success: {
"& svg": {
fill: theme.palette.status.ok
}
},
running: {
"& svg": {
fill: theme.palette.status.running
}
},
pending: {
"& svg": {
fill: theme.palette.status.pending
}
},
warning: {
"& svg": {
fill: theme.palette.status.warning
}
},
error: {
"& svg": {
fill: theme.palette.status.error
}
}
}));
const StatusIcon = ({
statusKey,
className
}) => {
const statusStyles = useStatusStyles();
switch (statusKey) {
case "ok":
return /* @__PURE__ */ React.createElement("g", { className: cx(statusStyles.success, className) }, /* @__PURE__ */ React.createElement(StatusOK, null), " ");
case "pending":
return /* @__PURE__ */ React.createElement("g", { className: cx(statusStyles.pending, className) }, /* @__PURE__ */ React.createElement(StatusPending, null), " ");
case "running":
return /* @__PURE__ */ React.createElement("g", { className: cx(statusStyles.running, className) }, /* @__PURE__ */ React.createElement(StatusRunning, null), " ");
case "warning":
return /* @__PURE__ */ React.createElement("g", { className: cx(statusStyles.warning, className) }, /* @__PURE__ */ React.createElement(StatusWarning, null), " ");
case "error":
return /* @__PURE__ */ React.createElement("g", { className: cx(statusStyles.error, className) }, /* @__PURE__ */ React.createElement(StatusError, null), " ");
default:
return null;
}
};
const Status = ({
status,
iconOnly,
className,
displayStatusText,
dataTestId,
iconStyles,
iconClassName
}) => {
const classes = useStyles();
const statusProps = {
title: displayStatusText || status || "",
iconOnly,
className,
dataTestId
};
switch (status) {
case "New":
case "Idle":
case "Pending":
case "PipelineNotStarted":
return /* @__PURE__ */ React.createElement(
StatusIconAndText,
{
...statusProps,
icon: /* @__PURE__ */ React.createElement(StatusIcon, { statusKey: "pending", className: iconClassName })
}
);
case "In Progress":
case "Progress":
case "Progressing":
case "Installing":
case "InstallReady":
case "Replacing":
case "Running":
case "Updating":
case "Upgrading":
case "PendingInstall":
return /* @__PURE__ */ React.createElement(
StatusIconAndText,
{
...statusProps,
icon: /* @__PURE__ */ React.createElement(StatusIcon, { statusKey: "running", className: iconClassName })
}
);
case "Cancelled":
case "Deleting":
case "Expired":
case "Not Ready":
case "Cancelling":
case "Terminating":
case "Superseded":
case "Uninstalling":
return /* @__PURE__ */ React.createElement(
StatusIconAndText,
{
...statusProps,
icon: /* @__PURE__ */ React.createElement(BanIcon, { className: classes.iconStyles, style: iconStyles })
}
);
case "Warning":
case "RequiresApproval":
return /* @__PURE__ */ React.createElement(
StatusIconAndText,
{
...statusProps,
icon: /* @__PURE__ */ React.createElement(StatusIcon, { statusKey: "warning", className: iconClassName })
}
);
case "ImagePullBackOff":
case "Error":
case "Failed":
case "Failure":
case "CrashLoopBackOff":
case "ErrImagePull":
return /* @__PURE__ */ React.createElement(
StatusIconAndText,
{
...statusProps,
icon: /* @__PURE__ */ React.createElement(StatusIcon, { statusKey: "error", className: iconClassName })
}
);
case "Completed":
case "Succeeded":
case "Synced":
return /* @__PURE__ */ React.createElement(
StatusIconAndText,
{
...statusProps,
icon: /* @__PURE__ */ React.createElement(StatusIcon, { statusKey: "ok", className: iconClassName })
}
);
case "Skipped":
return /* @__PURE__ */ React.createElement(
StatusIconAndText,
{
...statusProps,
icon: /* @__PURE__ */ React.createElement(
AngleDoubleRightIcon,
{
className: classes.iconStyles,
style: iconStyles
}
)
}
);
case "Paused":
return /* @__PURE__ */ React.createElement(
StatusIconAndText,
{
...statusProps,
icon: /* @__PURE__ */ React.createElement(PauseIcon, { className: classes.iconStyles, style: iconStyles })
}
);
case "Stopped":
return /* @__PURE__ */ React.createElement(
StatusIconAndText,
{
...statusProps,
icon: /* @__PURE__ */ React.createElement(OffIcon, { className: classes.iconStyles, style: iconStyles })
}
);
case "Unknown":
return /* @__PURE__ */ React.createElement(
StatusIconAndText,
{
...statusProps,
icon: /* @__PURE__ */ React.createElement(UnknownIcon, { className: classes.iconStyles, style: iconStyles })
}
);
default:
return /* @__PURE__ */ React.createElement(React.Fragment, null, status || DASH);
}
};
export { Status };
//# sourceMappingURL=Status.esm.js.map