67 lines
2.1 KiB
JavaScript
67 lines
2.1 KiB
JavaScript
import React, { useState, useContext } from "react";
|
|
import StoreContext from "../../ctx/StoreContext.jsx";
|
|
import JobContext, { jobStatus } from "../../ctx/JobContext.jsx";
|
|
|
|
import Accordion from "@mui/material/Accordion";
|
|
import AccordionDetails from "@mui/material/AccordionDetails";
|
|
import AccordionSummary from "@mui/material/AccordionSummary";
|
|
import Typography from "@mui/material/Typography";
|
|
|
|
import IconButton from "@mui/material/IconButton";
|
|
import CheckIcon from "@mui/icons-material/Check";
|
|
import ClearIcon from "@mui/icons-material/Clear";
|
|
import ViewColumnIcon from "@mui/icons-material/ViewColumn";
|
|
import PendingIcon from "@mui/icons-material/Pending";
|
|
import VisibilityIcon from "@mui/icons-material/Visibility";
|
|
import DoNotDisturbIcon from "@mui/icons-material/DoNotDisturb";
|
|
|
|
import Box from "@mui/material/Box";
|
|
import Stack from "@mui/material/Stack";
|
|
|
|
export default function JobBox(props) {
|
|
const { job } = props;
|
|
|
|
const { name, status } = job;
|
|
|
|
function jobIcon() {
|
|
switch (status) {
|
|
case jobStatus.OK:
|
|
return <CheckIcon color="success" />;
|
|
case jobStatus.ERROR:
|
|
return <ClearIcon color="error" />;
|
|
case jobStatus.PENDING:
|
|
return <PendingIcon color="info" />;
|
|
case jobStatus.ACTIVE:
|
|
return <VisibilityIcon color="primary" />;
|
|
case jobStatus.CANCELED:
|
|
return <DoNotDisturbIcon color="warning" />;
|
|
case jobStatus.QUEUED:
|
|
return <ViewColumnIcon color="secondary" />;
|
|
default:
|
|
return <ReplayIcon />;
|
|
}
|
|
}
|
|
|
|
return (
|
|
<Accordion expanded={false} disableGutters={true} square>
|
|
<AccordionSummary
|
|
style={{
|
|
backgroundColor: "rgba(0, 0, 0, .03)",
|
|
flexWrap: "wrap",
|
|
}}
|
|
>
|
|
<Typography
|
|
component={"span"}
|
|
style={{ wordBreak: "break-word", margin: "auto 0" }}
|
|
>
|
|
{name}
|
|
</Typography>
|
|
<Stack sx={{ ml: "auto" }}>
|
|
<IconButton aria-label="retry" component="span">
|
|
{jobIcon()}
|
|
</IconButton>
|
|
</Stack>
|
|
</AccordionSummary>
|
|
</Accordion>
|
|
);
|
|
}
|