2022-10-12 10:21:49 -04:00
|
|
|
import { useEffect, useState } from 'react';
|
|
|
|
import { Link, useSearchParams, useParams } from 'react-router-dom';
|
2022-10-31 15:09:21 -04:00
|
|
|
// @ts-ignore
|
|
|
|
import { Button, Table, Stack } from '@carbon/react';
|
2022-10-12 10:21:49 -04:00
|
|
|
import ProcessBreadcrumb from '../components/ProcessBreadcrumb';
|
|
|
|
import PaginationForTable from '../components/PaginationForTable';
|
|
|
|
import HttpService from '../services/HttpService';
|
2022-11-09 17:48:50 -05:00
|
|
|
import {
|
|
|
|
getPageInfoFromSearchParams,
|
|
|
|
modifyProcessModelPath,
|
|
|
|
unModifyProcessModelPath,
|
|
|
|
} from '../helpers';
|
2022-10-12 10:21:49 -04:00
|
|
|
import { ProcessGroup } from '../interfaces';
|
|
|
|
|
|
|
|
export default function ProcessGroupShow() {
|
|
|
|
const params = useParams();
|
|
|
|
const [searchParams] = useSearchParams();
|
|
|
|
|
|
|
|
const [processGroup, setProcessGroup] = useState<ProcessGroup | null>(null);
|
|
|
|
const [processModels, setProcessModels] = useState([]);
|
2022-11-09 15:45:45 -05:00
|
|
|
const [processGroups, setProcessGroups] = useState([]);
|
2022-10-12 10:21:49 -04:00
|
|
|
const [pagination, setPagination] = useState(null);
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
const { page, perPage } = getPageInfoFromSearchParams(searchParams);
|
|
|
|
|
|
|
|
const setProcessModelFromResult = (result: any) => {
|
|
|
|
setProcessModels(result.results);
|
|
|
|
setPagination(result.pagination);
|
|
|
|
};
|
|
|
|
const processResult = (result: any) => {
|
|
|
|
setProcessGroup(result);
|
2022-11-09 15:45:45 -05:00
|
|
|
const unmodifiedProcessGroupId = unModifyProcessModelPath(
|
|
|
|
(params as any).process_group_id
|
|
|
|
);
|
2022-10-12 10:21:49 -04:00
|
|
|
HttpService.makeCallToBackend({
|
2022-11-09 15:45:45 -05:00
|
|
|
path: `/process-models?process_group_identifier=${unmodifiedProcessGroupId}&per_page=${perPage}&page=${page}`,
|
2022-10-12 10:21:49 -04:00
|
|
|
successCallback: setProcessModelFromResult,
|
|
|
|
});
|
2022-11-09 15:45:45 -05:00
|
|
|
setProcessGroups(result.process_groups);
|
2022-10-12 10:21:49 -04:00
|
|
|
};
|
|
|
|
HttpService.makeCallToBackend({
|
|
|
|
path: `/process-groups/${params.process_group_id}`,
|
|
|
|
successCallback: processResult,
|
|
|
|
});
|
|
|
|
}, [params, searchParams]);
|
|
|
|
|
2022-11-09 15:45:45 -05:00
|
|
|
const buildModelTable = () => {
|
2022-10-12 10:21:49 -04:00
|
|
|
if (processGroup === null) {
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
const rows = processModels.map((row) => {
|
2022-11-07 17:22:46 -05:00
|
|
|
const modifiedProcessModelId: String = (row as any).id.replace('/', ':');
|
2022-10-12 10:21:49 -04:00
|
|
|
return (
|
|
|
|
<tr key={(row as any).id}>
|
|
|
|
<td>
|
|
|
|
<Link
|
2022-11-07 17:22:46 -05:00
|
|
|
to={`/admin/process-models/${modifiedProcessModelId}`}
|
2022-10-12 10:21:49 -04:00
|
|
|
data-qa="process-model-show-link"
|
|
|
|
>
|
|
|
|
{(row as any).id}
|
|
|
|
</Link>
|
|
|
|
</td>
|
|
|
|
<td>{(row as any).display_name}</td>
|
|
|
|
</tr>
|
|
|
|
);
|
|
|
|
});
|
|
|
|
return (
|
|
|
|
<div>
|
|
|
|
<h3>Process Models</h3>
|
|
|
|
<Table striped bordered>
|
|
|
|
<thead>
|
|
|
|
<tr>
|
|
|
|
<th>Process Model Id</th>
|
|
|
|
<th>Display Name</th>
|
|
|
|
</tr>
|
|
|
|
</thead>
|
|
|
|
<tbody>{rows}</tbody>
|
|
|
|
</Table>
|
|
|
|
</div>
|
|
|
|
);
|
|
|
|
};
|
|
|
|
|
2022-11-09 15:45:45 -05:00
|
|
|
const buildGroupTable = () => {
|
|
|
|
if (processGroup === null) {
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
const rows = processGroups.map((row) => {
|
2022-11-09 17:48:50 -05:00
|
|
|
const modifiedProcessGroupId: String = modifyProcessModelPath(
|
|
|
|
(row as any).id
|
|
|
|
);
|
2022-11-09 15:45:45 -05:00
|
|
|
return (
|
|
|
|
<tr key={(row as any).id}>
|
|
|
|
<td>
|
|
|
|
<Link
|
|
|
|
to={`/admin/process-groups/${modifiedProcessGroupId}`}
|
|
|
|
data-qa="process-model-show-link"
|
|
|
|
>
|
|
|
|
{(row as any).id}
|
|
|
|
</Link>
|
|
|
|
</td>
|
|
|
|
<td>{(row as any).display_name}</td>
|
|
|
|
</tr>
|
|
|
|
);
|
|
|
|
});
|
|
|
|
return (
|
|
|
|
<div>
|
|
|
|
<h3>Process Groups</h3>
|
|
|
|
<Table striped bordered>
|
|
|
|
<thead>
|
|
|
|
<tr>
|
|
|
|
<th>Process Group Id</th>
|
|
|
|
<th>Display Name</th>
|
|
|
|
</tr>
|
|
|
|
</thead>
|
|
|
|
<tbody>{rows}</tbody>
|
|
|
|
</Table>
|
|
|
|
</div>
|
|
|
|
);
|
|
|
|
};
|
|
|
|
|
2022-10-12 10:21:49 -04:00
|
|
|
if (processGroup && pagination) {
|
|
|
|
const { page, perPage } = getPageInfoFromSearchParams(searchParams);
|
2022-11-09 17:48:50 -05:00
|
|
|
const modifiedProcessGroupId = modifyProcessModelPath(
|
|
|
|
(processGroup as any).id
|
|
|
|
);
|
2022-10-12 10:21:49 -04:00
|
|
|
return (
|
|
|
|
<>
|
|
|
|
<ProcessBreadcrumb
|
|
|
|
hotCrumbs={[
|
|
|
|
['Process Groups', '/admin'],
|
|
|
|
[`Process Group: ${processGroup.display_name}`],
|
|
|
|
]}
|
|
|
|
/>
|
|
|
|
<ul>
|
2022-11-04 18:27:10 -04:00
|
|
|
<Stack orientation="horizontal" gap={3}>
|
2022-10-12 10:21:49 -04:00
|
|
|
<Button
|
2022-11-09 15:45:45 -05:00
|
|
|
kind="secondary"
|
|
|
|
href={`/admin/process-groups/new?parentGroupId=${processGroup.id}`}
|
|
|
|
>
|
|
|
|
Add a process group
|
|
|
|
</Button>
|
|
|
|
<Button
|
|
|
|
href={`/admin/process-models/${modifiedProcessGroupId}/new`}
|
2022-10-12 10:21:49 -04:00
|
|
|
>
|
|
|
|
Add a process model
|
|
|
|
</Button>
|
|
|
|
<Button
|
2022-11-09 15:45:45 -05:00
|
|
|
href={`/admin/process-groups/${modifiedProcessGroupId}/edit`}
|
2022-10-12 10:21:49 -04:00
|
|
|
variant="secondary"
|
|
|
|
>
|
|
|
|
Edit process group
|
|
|
|
</Button>
|
|
|
|
</Stack>
|
|
|
|
<br />
|
|
|
|
<br />
|
|
|
|
<PaginationForTable
|
|
|
|
page={page}
|
|
|
|
perPage={perPage}
|
|
|
|
pagination={pagination}
|
2022-11-09 15:45:45 -05:00
|
|
|
tableToDisplay={buildModelTable()}
|
|
|
|
path={`/admin/process-groups/${(processGroup as any).id}`}
|
|
|
|
/>
|
|
|
|
<br />
|
|
|
|
<br />
|
|
|
|
<PaginationForTable
|
|
|
|
page={page}
|
|
|
|
perPage={perPage}
|
|
|
|
pagination={pagination}
|
|
|
|
tableToDisplay={buildGroupTable()}
|
2022-10-12 10:21:49 -04:00
|
|
|
path={`/admin/process-groups/${(processGroup as any).id}`}
|
|
|
|
/>
|
|
|
|
</ul>
|
|
|
|
</>
|
|
|
|
);
|
|
|
|
}
|
|
|
|
return null;
|
|
|
|
}
|