import React, { useContext } from "react";
import { useNavigate } from "react-router-dom";
import JobContext, { jobStatus } from "@qltr/jobs";
import {
selectedPipelineBranches,
pipelineJobs,
findPipelineJobByTestName,
useJobIconState,
} from "@qltr/util/JobTools";
import Box from "@mui/material/Box";
import AppBar from "@mui/material/AppBar";
import Toolbar from "@mui/material/Toolbar";
import Typography from "@mui/material/Typography";
import Accordion from "@mui/material/Accordion";
import AccordionSummary from "@mui/material/AccordionSummary";
import Stack from "@mui/material/Stack";
import ArrowBackIcon from "@mui/icons-material/ArrowBack";
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 Menu from "@mui/material/Menu";
import MenuItem from "@mui/material/MenuItem";
import ListItemText from "@mui/material/ListItemText";
import ListItemIcon from "@mui/material/ListItemIcon";
import MoreVertIcon from "@mui/icons-material/MoreVert";
import DeleteIcon from "@mui/icons-material/Delete";
function JobPipelineDisplay(props) {
const { pipeline } = props;
const {
state: jobState,
pipelineCancel,
pipelineDestroy,
} = useContext(JobContext);
const navigate = useNavigate();
const [anchorEl, setAnchorEl] = React.useState(null);
const open = Boolean(anchorEl);
const handleClick = (event) => {
setAnchorEl(event.currentTarget);
};
const handleClose = () => {
setAnchorEl(null);
};
const selectJob = (testName) => () => {
const job = findPipelineJobByTestName(pipeline, jobState.jobs, testName);
if (!job) return;
navigate(`/qualiteer/jobs#${job.jobId}`);
};
function navigateToJobs() {
navigate(`/qualiteer/jobs`);
}
function cancelPipeline() {
pipelineCancel(pipeline.id);
}
function deletePipeline() {
pipelineDestroy(pipeline.id);
}
const menuSelect = (cb) => () => {
handleClose();
cb();
};
function pipelineActive() {
return pipelineJobs(pipeline, jobState.jobs).find(
(j) => j.status === jobStatus.ACTIVE || j.status === jobStatus.PENDING
);
}
function jobIcon(name) {
if (pipeline.isCanceled) return ;
const job = findPipelineJobByTestName(pipeline, jobState.jobs, name);
if (!job) return ;
return useJobIconState(job);
}
return (
{pipeline.id}
{selectedPipelineBranches(pipeline).map((track, i) => (
{i + 1}
{track.map((test, j) => (
{test}
{jobIcon(test)}
))}
))}
);
}
export default JobPipelineDisplay;