import { makeStyles } from "@material-ui/core/styles" import TableCell from "@material-ui/core/TableCell" import TableRow from "@material-ui/core/TableRow" import { WorkspaceBuild } from "api/typesGenerated" import { Stack } from "components/Stack/Stack" import { useClickable } from "hooks/useClickable" import { useTranslation } from "react-i18next" import { useNavigate } from "react-router-dom" import { MONOSPACE_FONT_FAMILY } from "theme/constants" import { displayWorkspaceBuildDuration, getDisplayWorkspaceBuildInitiatedBy, } from "util/workspace" import { BuildAvatar } from "./BuildAvatar" export interface BuildRowProps { build: WorkspaceBuild } export const BuildRow: React.FC = ({ build }) => { const styles = useStyles() const { t } = useTranslation("workspacePage") const initiatedBy = getDisplayWorkspaceBuildInitiatedBy(build) const navigate = useNavigate() const clickableProps = useClickable(() => navigate(`builds/${build.build_number}`), ) return (
{initiatedBy}{" "} {build.reason !== "initiator" ? t("buildMessage.automatically") : ""} {t(`buildMessage.${build.transition}`)}{" "} {t("buildMessage.theWorkspace")} {new Date(build.created_at).toLocaleTimeString()} {t("buildData.reason")}: {build.reason} {t("buildData.duration")}:{" "} {displayWorkspaceBuildDuration(build)}
) } const useStyles = makeStyles((theme) => ({ buildRow: { cursor: "pointer", "&:focus": { outlineStyle: "solid", outlineOffset: -1, outlineWidth: 2, outlineColor: theme.palette.secondary.dark, }, "&:not(:last-child) td:before": { position: "absolute", top: 20, left: 50, display: "block", content: "''", height: "100%", width: 2, background: theme.palette.divider, }, }, buildWrapper: { padding: theme.spacing(2, 4), }, buildCell: { padding: "0 !important", position: "relative", borderBottom: 0, }, buildResume: { ...theme.typography.body1, fontFamily: "inherit", }, buildInfo: { ...theme.typography.body2, fontSize: 12, fontFamily: "inherit", color: theme.palette.text.secondary, display: "block", }, buildTime: { color: theme.palette.text.secondary, fontSize: 12, }, buildRight: { width: "auto", }, buildExtraInfo: { ...theme.typography.body2, fontFamily: MONOSPACE_FONT_FAMILY, color: theme.palette.text.secondary, whiteSpace: "nowrap", }, }))