diff --git a/src/ctx/JobContext.jsx b/src/ctx/JobContext.jsx
index 7b70a81..d303b67 100644
--- a/src/ctx/JobContext.jsx
+++ b/src/ctx/JobContext.jsx
@@ -114,6 +114,7 @@ export const JobProvider = ({ children }) => {
const jobReq = {
...request,
pipeline: {
+ ...p,
triggers: triggers[t],
__test: t,
},
@@ -229,7 +230,6 @@ export const JobProvider = ({ children }) => {
type: "single",
name: jobId,
};
- console.log(request);
jobCreate(job);
diff --git a/src/views/Navbar.jsx b/src/views/Navbar.jsx
index 15808b8..7fc2db3 100644
--- a/src/views/Navbar.jsx
+++ b/src/views/Navbar.jsx
@@ -42,7 +42,13 @@ export default function Navbar(props) {
)}
,
,
-
+ !j.isPipeline).length +
+ jobState.pipelines.length
+ }
+ color="primary"
+ >
,
,
diff --git a/src/views/jobs/JobPipelineDisplay.jsx b/src/views/jobs/JobPipelineDisplay.jsx
index 00600a2..7a652e0 100644
--- a/src/views/jobs/JobPipelineDisplay.jsx
+++ b/src/views/jobs/JobPipelineDisplay.jsx
@@ -1,26 +1,49 @@
import React, { useContext } from "react";
import { useNavigate } from "react-router-dom";
-import JobContext from "../../ctx/JobContext.jsx";
+import JobContext, { jobStatus } from "../../ctx/JobContext.jsx";
import Box from "@mui/material/Box";
import AppBar from "@mui/material/AppBar";
import Toolbar from "@mui/material/Toolbar";
-import IconButton from "@mui/material/IconButton";
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 { back, pipeline } = 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 pipelineJobs = jobState.jobs.filter(
(j) => j.isPipeline && j.pipelineId === pipeline.id
);
@@ -30,8 +53,11 @@ function JobPipelineDisplay(props) {
});
};
+ const findJob = (testName) =>
+ pipelineJobs.find((j) => j.branchId === testName);
+
const selectJob = (testName) => () => {
- const job = pipelineJobs.find((j) => j.branchId === testName);
+ const job = findJob(testName);
if (!job) return;
navigate(`/qualiteer/jobs#${job.jobId}`);
};
@@ -48,6 +74,38 @@ function JobPipelineDisplay(props) {
pipelineDestroy(pipeline.id);
}
+ const menuSelect = (cb) => () => {
+ handleClose();
+ cb();
+ };
+
+ function pipelineActive() {
+ return pipelineJobs.find(
+ (j) => j.status === jobStatus.ACTIVE || j.status === jobStatus.PENDING
+ );
+ }
+
+ function jobIcon(name) {
+ const job = findJob(name);
+ const status = job ? job.status : null;
+ switch (status) {
+ case jobStatus.OK:
+ return ;
+ case jobStatus.ERROR:
+ return ;
+ case jobStatus.PENDING:
+ return ;
+ case jobStatus.ACTIVE:
+ return ;
+ case jobStatus.CANCELED:
+ return ;
+ case jobStatus.QUEUED:
+ return ;
+ default:
+ return ;
+ }
+ }
+
return (
{pipeline.id}
-
-
-
-
-
+
+
@@ -101,13 +156,34 @@ function JobPipelineDisplay(props) {
>
{test}
- I
+
+
+ {jobIcon(test)}
+
+
))}
))}
+
+
);
}
diff --git a/src/views/jobs/JobView.jsx b/src/views/jobs/JobView.jsx
index 94e95ef..8af2554 100644
--- a/src/views/jobs/JobView.jsx
+++ b/src/views/jobs/JobView.jsx
@@ -111,19 +111,20 @@ export default function JobView(props) {
Download Log
-
+ {!job.isPipeline && (
+
+ )}
{job.status === jobStatus.OK ||
job.status === jobStatus.ERROR ||
job.status === jobStatus.CANCELED ? null : (
@@ -134,12 +135,14 @@ export default function JobView(props) {
Cancel
)}
-
+ {!job.isPipeline && (
+
+ )}
);
diff --git a/src/views/jobs/Jobs.jsx b/src/views/jobs/Jobs.jsx
index fd6d2f5..3be29b0 100644
--- a/src/views/jobs/Jobs.jsx
+++ b/src/views/jobs/Jobs.jsx
@@ -43,7 +43,6 @@ export default function Jobs() {
justifyContent="center"
sx={{ flexFlow: "wrap" }}
>
- {" "}
Click the '+' to start a new one!
diff --git a/tests/assets/suite/runner.js b/tests/assets/suite/runner.js
index 481d9e1..61973b2 100644
--- a/tests/assets/suite/runner.js
+++ b/tests/assets/suite/runner.js
@@ -31,6 +31,7 @@ const liveIndicator = () => {
};
const runTests = () => {
+ console.log(pipeline);
switch (test) {
case "primary":
return primary();
diff --git a/tests/assets/suite/secondary2.js b/tests/assets/suite/secondary2.js
index a95bde9..1f2f2db 100644
--- a/tests/assets/suite/secondary2.js
+++ b/tests/assets/suite/secondary2.js
@@ -1,5 +1,6 @@
export default function secondaryTest(pipelineData) {
console.log("This came from a secondary2 test!");
+ console.log(pipelineData, "SomeData");
return {
status: +(pipelineData !== "SomeData"),
pipelineData: "SomeOtherOtherData",
diff --git a/tests/assets/suite/tertiary3.js b/tests/assets/suite/tertiary3.js
index f2627ea..b2bbc55 100644
--- a/tests/assets/suite/tertiary3.js
+++ b/tests/assets/suite/tertiary3.js
@@ -1,4 +1,4 @@
export default function secondaryTest(pipelineData) {
console.log("This came from a tertiary3!");
- return { status: +(pipelineData !== "SomeOtherData") };
+ return { status: +(pipelineData !== "SomeOtherOtherData") };
}