qualiteer/src/views/jobs/Jobs.jsx

41 lines
1.1 KiB
React
Raw Normal View History

2022-07-18 21:43:10 +00:00
import { useState, useContext, useEffect } from "react";
2022-08-05 13:03:48 +00:00
import { useLocation, useNavigate } from "react-router-dom";
2022-07-18 21:43:10 +00:00
import JobContext from "../../ctx/JobContext.jsx";
import JobBox from "./JobBox.jsx";
import JobView from "./JobView.jsx";
2022-08-01 14:58:11 +00:00
import JobBuilder from "./builder/JobBuilder.jsx";
2022-07-18 21:43:10 +00:00
export default function Jobs() {
2022-08-05 13:03:48 +00:00
const { state: jobState } = useContext(JobContext);
2022-07-18 21:43:10 +00:00
const location = useLocation();
2022-08-05 13:03:48 +00:00
const navigate = useNavigate();
useEffect(() => {
const jobName = location.hash.slice(1);
if (!jobName || jobState.jobs.find((job) => job.name === jobName)) return;
navigate("/qualiteer/jobs");
});
2022-07-18 21:43:10 +00:00
return (
<div className="jobs">
2022-08-01 14:58:11 +00:00
<JobBuilder />
2022-07-18 21:43:10 +00:00
{location.hash === "" &&
jobState.jobs.map((v, i) => (
<a
key={i}
href={`/qualiteer/jobs#${v.name}`}
style={{ textDecoration: "none" }}
>
<JobBox job={v} />
</a>
))}
{jobState.jobs.find((job) => job.name === location.hash.slice(1)) && (
<JobView
job={jobState.jobs.find((job) => job.name === location.hash.slice(1))}
/>
)}
</div>
);
}