Skip to content
Snippets Groups Projects
Commit c45d43d5 authored by EREBUS_DMN\jsz's avatar EREBUS_DMN\jsz Committed by Johanna Szepanski
Browse files

pulled everything related to job section into it's own component

parent d210c2e6
No related branches found
No related tags found
2 merge requests!612Release 5.0.0,!577CE-3395: Fix infinite loop
import { Button, Stack, Tooltip, Typography } from "@mui/material"; import { Button, Stack, Tooltip } from "@mui/material";
import { useState, useEffect, useContext, useCallback, useMemo } from "react"; import { useState, useEffect, useContext, useCallback, useMemo } from "react";
import { import {
userContext, userContext,
...@@ -6,13 +6,13 @@ import { ...@@ -6,13 +6,13 @@ import {
ExternalLink, ExternalLink,
InternalLink InternalLink
} from "@ess-ics/ce-ui-common"; } from "@ess-ics/ce-ui-common";
import { JobSection } from "./JobSection";
import { IOCDetails } from "../IOCDetails"; import { IOCDetails } from "../IOCDetails";
import { DeployIOC } from "../DeployIOC"; import { DeployIOC } from "../DeployIOC";
import { UndeployIOC } from "../UndeployIOC"; import { UndeployIOC } from "../UndeployIOC";
import { AccessControl } from "../../auth/AccessControl"; import { AccessControl } from "../../auth/AccessControl";
import { DeploymentStatus } from "../../../api/DataTypes"; import { DeploymentStatus } from "../../../api/DataTypes";
import { IOCService } from "../IOCService"; import { IOCService } from "../IOCService";
import { JobTable } from "../../Job";
import { apiContext } from "../../../api/DeployApi"; import { apiContext } from "../../../api/DeployApi";
import env from "../../../config/env"; import env from "../../../config/env";
...@@ -21,12 +21,9 @@ export function IOCManage({ ...@@ -21,12 +21,9 @@ export function IOCManage({
getIOC, getIOC,
buttonDisabled, buttonDisabled,
currentCommand, currentCommand,
jobs,
jobsLoading,
getJobs, getJobs,
setButtonDisabled, setButtonDisabled,
pagination, pagination
onPage
}) { }) {
const { user } = useContext(userContext); const { user } = useContext(userContext);
const client = useContext(apiContext); const client = useContext(apiContext);
...@@ -176,7 +173,7 @@ export function IOCManage({ ...@@ -176,7 +173,7 @@ export function IOCManage({
onClick={() => { onClick={() => {
setDeployDialogOpen(true); setDeployDialogOpen(true);
}} }}
disabled={buttonDisabled || ioc.operationInProgress} disabled={ioc.operationInProgress}
> >
{ioc.activeDeployment ? "Deploy revision" : "Deploy"} {ioc.activeDeployment ? "Deploy revision" : "Deploy"}
</Button> </Button>
...@@ -192,7 +189,7 @@ export function IOCManage({ ...@@ -192,7 +189,7 @@ export function IOCManage({
onClick={() => { onClick={() => {
setUndeployDialogOpen(true); setUndeployDialogOpen(true);
}} }}
disabled={buttonDisabled || ioc.operationInProgress} disabled={ioc.operationInProgress}
> >
Undeploy Undeploy
</Button> </Button>
...@@ -208,20 +205,7 @@ export function IOCManage({ ...@@ -208,20 +205,7 @@ export function IOCManage({
allowedRoles={["DeploymentToolAdmin", "DeploymentToolIntegrator"]} allowedRoles={["DeploymentToolAdmin", "DeploymentToolIntegrator"]}
renderNoAccess={() => <></>} renderNoAccess={() => <></>}
> >
<Stack gap={2}> <JobSection />
<Typography
component="h2"
variant="h3"
>
Operations
</Typography>
<JobTable
jobs={jobs}
pagination={pagination}
onPage={onPage}
loading={jobsLoading}
/>
</Stack>
<DeployIOC <DeployIOC
open={deployDialogOpen} open={deployDialogOpen}
setOpen={setDeployDialogOpen} setOpen={setDeployDialogOpen}
......
import { useEffect } from "react";
import { Stack, Typography } from "@mui/material";
import { usePagination } from "@ess-ics/ce-ui-common";
import { useListJobsQuery } from "../../../store/deployApi";
import { initRequestParams } from "../../common/Helper";
import { ROWS_PER_PAGE } from "../../../constants";
import { JobTable } from "../../Job";
export const JobSection = () => {
const { pagination, setPagination } = usePagination({
rowsPerPageOptions: ROWS_PER_PAGE,
initLimit: ROWS_PER_PAGE[0],
initPage: 0
});
const { data: jobs, isLoading } = useListJobsQuery(
initRequestParams(pagination),
{ pollingInterval: 30000 }
);
console.log(jobs); //eslint-disable-line
useEffect(() => {
setPagination({ totalCount: jobs?.totalCount ?? 0 });
}, [setPagination, jobs?.totalCount]);
return (
<Stack gap={2}>
<Typography
component="h2"
variant="h3"
>
Operations
</Typography>
<JobTable
jobs={jobs?.jobs}
pagination={pagination}
onPage={setPagination}
loading={isLoading}
/>
</Stack>
);
};
...@@ -53,7 +53,7 @@ const createTableRow = (job) => ({ ...@@ -53,7 +53,7 @@ const createTableRow = (job) => ({
export const JobTable = ({ export const JobTable = ({
jobs, jobs,
customColumns, customColumns = null,
pagination, pagination,
onPage, onPage,
loading loading
......
...@@ -13,10 +13,7 @@ import { ...@@ -13,10 +13,7 @@ import {
import { IOCLiveStatus } from "../../components/IOC/IOCLiveStatus"; import { IOCLiveStatus } from "../../components/IOC/IOCLiveStatus";
import { IOCManage } from "../../components/IOC/IOCManage"; import { IOCManage } from "../../components/IOC/IOCManage";
import { IOCAdmin } from "../../components/IOC/IOCAdmin"; import { IOCAdmin } from "../../components/IOC/IOCAdmin";
import { import { applicationTitle } from "../../components/common/Helper";
applicationTitle,
initRequestParams
} from "../../components/common/Helper";
import { apiContext } from "../../api/DeployApi"; import { apiContext } from "../../api/DeployApi";
import { ROWS_PER_PAGE } from "../../constants"; import { ROWS_PER_PAGE } from "../../constants";
...@@ -33,16 +30,6 @@ export function IOCDetailsView({ ioc, getIOC, abortGetIOC, loading }) { ...@@ -33,16 +30,6 @@ export function IOCDetailsView({ ioc, getIOC, abortGetIOC, loading }) {
const navigate = useNavigate(); const navigate = useNavigate();
const client = useContext(apiContext); const client = useContext(apiContext);
const {
value: jobs,
wrapper: getJobs,
loading: jobsLoading,
dataReady: jobsDataReady,
abort: abortGetJobs
} = useAPIMethod({
fcn: client.apis.Jobs.listJobs,
call: false
});
const ongoingCommandParams = useMemo( const ongoingCommandParams = useMemo(
() => ({ () => ({
...@@ -73,18 +60,12 @@ export function IOCDetailsView({ ioc, getIOC, abortGetIOC, loading }) { ...@@ -73,18 +60,12 @@ export function IOCDetailsView({ ioc, getIOC, abortGetIOC, loading }) {
}); });
const [tabIndex, setTabIndex] = useState(0); const [tabIndex, setTabIndex] = useState(0);
// update pagination whenever search result total pages change
useEffect(() => {
setJobPagination({ totalCount: jobs?.totalCount ?? 0 });
}, [setJobPagination, jobs?.totalCount]);
// Invoked by Table on change to pagination // Invoked by Table on change to pagination
const onPage = useCallback( const onPage = useCallback(
(params) => { (params) => {
setJobPagination(params); setJobPagination(params);
abortGetJobs();
}, },
[abortGetJobs, setJobPagination] [setJobPagination]
); );
usePolling(getIOC, loading, IOC_POLL_INTERVAL, abortGetIOC); usePolling(getIOC, loading, IOC_POLL_INTERVAL, abortGetIOC);
...@@ -99,23 +80,6 @@ export function IOCDetailsView({ ioc, getIOC, abortGetIOC, loading }) { ...@@ -99,23 +80,6 @@ export function IOCDetailsView({ ioc, getIOC, abortGetIOC, loading }) {
setButtonDisabled(Boolean(ioc?.operationInProgress)); setButtonDisabled(Boolean(ioc?.operationInProgress));
}, [ioc?.operationInProgress]); }, [ioc?.operationInProgress]);
const callGetJobs = useCallback(() => {
let requestParams = initRequestParams(jobPagination);
requestParams.ioc_id = ioc.id;
getJobs(requestParams);
}, [getJobs, ioc.id, jobPagination]);
// Submit new search whenever pagination or ioc changes
useEffect(() => {
callGetJobs();
return () => {
abortGetJobs();
};
}, [callGetJobs, abortGetJobs]);
usePolling(callGetJobs, jobsLoading, 30000, abortGetJobs);
const handleClick = () => { const handleClick = () => {
navigate(-1); navigate(-1);
}; };
...@@ -154,9 +118,6 @@ export function IOCDetailsView({ ioc, getIOC, abortGetIOC, loading }) { ...@@ -154,9 +118,6 @@ export function IOCDetailsView({ ioc, getIOC, abortGetIOC, loading }) {
currentCommand={ currentCommand={
ongoingCommand?.jobs?.length > 0 ? ongoingCommand.jobs[0] : null ongoingCommand?.jobs?.length > 0 ? ongoingCommand.jobs[0] : null
} }
jobs={jobs?.jobs}
jobsLoading={jobsLoading || !jobsDataReady}
getJobs={getJobs}
setButtonDisabled={setButtonDisabledAndUpdate} setButtonDisabled={setButtonDisabledAndUpdate}
pagination={jobPagination} pagination={jobPagination}
onPage={onPage} onPage={onPage}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment