@janus-idp/shared-react
Version:
Shared code for utils, types, and React components for the Janus frontend plugins.
221 lines (215 loc) • 7.85 kB
JavaScript
'use strict';
var React = require('react');
var coreComponents = require('@backstage/core-components');
var core = require('@material-ui/core');
var OffIcon = require('@mui/icons-material/DoNotDisturbOnOutlined');
var UnknownIcon = require('@mui/icons-material/HelpOutline');
var AngleDoubleRightIcon = require('@mui/icons-material/KeyboardDoubleArrowRight');
var BanIcon = require('@mui/icons-material/NotInterestedOutlined');
var PauseIcon = require('@mui/icons-material/PauseCircleOutlineOutlined');
var cx = require('classnames');
var StatusIconAndText = require('./StatusIconAndText.cjs.js');
function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
var React__default = /*#__PURE__*/_interopDefaultCompat(React);
var OffIcon__default = /*#__PURE__*/_interopDefaultCompat(OffIcon);
var UnknownIcon__default = /*#__PURE__*/_interopDefaultCompat(UnknownIcon);
var AngleDoubleRightIcon__default = /*#__PURE__*/_interopDefaultCompat(AngleDoubleRightIcon);
var BanIcon__default = /*#__PURE__*/_interopDefaultCompat(BanIcon);
var PauseIcon__default = /*#__PURE__*/_interopDefaultCompat(PauseIcon);
var cx__default = /*#__PURE__*/_interopDefaultCompat(cx);
const useStyles = core.makeStyles(
(theme) => core.createStyles({
iconStyles: {
height: "0.8em",
width: "0.8em",
top: "0.125em",
position: "relative",
flexShrink: 0,
marginRight: theme.spacing(0.6)
}
})
);
const DASH = "-";
const useStatusStyles = core.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__default.default.createElement("g", { className: cx__default.default(statusStyles.success, className) }, /* @__PURE__ */ React__default.default.createElement(coreComponents.StatusOK, null), " ");
case "pending":
return /* @__PURE__ */ React__default.default.createElement("g", { className: cx__default.default(statusStyles.pending, className) }, /* @__PURE__ */ React__default.default.createElement(coreComponents.StatusPending, null), " ");
case "running":
return /* @__PURE__ */ React__default.default.createElement("g", { className: cx__default.default(statusStyles.running, className) }, /* @__PURE__ */ React__default.default.createElement(coreComponents.StatusRunning, null), " ");
case "warning":
return /* @__PURE__ */ React__default.default.createElement("g", { className: cx__default.default(statusStyles.warning, className) }, /* @__PURE__ */ React__default.default.createElement(coreComponents.StatusWarning, null), " ");
case "error":
return /* @__PURE__ */ React__default.default.createElement("g", { className: cx__default.default(statusStyles.error, className) }, /* @__PURE__ */ React__default.default.createElement(coreComponents.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__default.default.createElement(
StatusIconAndText.StatusIconAndText,
{
...statusProps,
icon: /* @__PURE__ */ React__default.default.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__default.default.createElement(
StatusIconAndText.StatusIconAndText,
{
...statusProps,
icon: /* @__PURE__ */ React__default.default.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__default.default.createElement(
StatusIconAndText.StatusIconAndText,
{
...statusProps,
icon: /* @__PURE__ */ React__default.default.createElement(BanIcon__default.default, { className: classes.iconStyles, style: iconStyles })
}
);
case "Warning":
case "RequiresApproval":
return /* @__PURE__ */ React__default.default.createElement(
StatusIconAndText.StatusIconAndText,
{
...statusProps,
icon: /* @__PURE__ */ React__default.default.createElement(StatusIcon, { statusKey: "warning", className: iconClassName })
}
);
case "ImagePullBackOff":
case "Error":
case "Failed":
case "Failure":
case "CrashLoopBackOff":
case "ErrImagePull":
return /* @__PURE__ */ React__default.default.createElement(
StatusIconAndText.StatusIconAndText,
{
...statusProps,
icon: /* @__PURE__ */ React__default.default.createElement(StatusIcon, { statusKey: "error", className: iconClassName })
}
);
case "Completed":
case "Succeeded":
case "Synced":
return /* @__PURE__ */ React__default.default.createElement(
StatusIconAndText.StatusIconAndText,
{
...statusProps,
icon: /* @__PURE__ */ React__default.default.createElement(StatusIcon, { statusKey: "ok", className: iconClassName })
}
);
case "Skipped":
return /* @__PURE__ */ React__default.default.createElement(
StatusIconAndText.StatusIconAndText,
{
...statusProps,
icon: /* @__PURE__ */ React__default.default.createElement(
AngleDoubleRightIcon__default.default,
{
className: classes.iconStyles,
style: iconStyles
}
)
}
);
case "Paused":
return /* @__PURE__ */ React__default.default.createElement(
StatusIconAndText.StatusIconAndText,
{
...statusProps,
icon: /* @__PURE__ */ React__default.default.createElement(PauseIcon__default.default, { className: classes.iconStyles, style: iconStyles })
}
);
case "Stopped":
return /* @__PURE__ */ React__default.default.createElement(
StatusIconAndText.StatusIconAndText,
{
...statusProps,
icon: /* @__PURE__ */ React__default.default.createElement(OffIcon__default.default, { className: classes.iconStyles, style: iconStyles })
}
);
case "Unknown":
return /* @__PURE__ */ React__default.default.createElement(
StatusIconAndText.StatusIconAndText,
{
...statusProps,
icon: /* @__PURE__ */ React__default.default.createElement(UnknownIcon__default.default, { className: classes.iconStyles, style: iconStyles })
}
);
default:
return /* @__PURE__ */ React__default.default.createElement(React__default.default.Fragment, null, status || DASH);
}
};
exports.Status = Status;
//# sourceMappingURL=Status.cjs.js.map