UNPKG

@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
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