import { useEffect, useState } from 'react'; import { Link, useSearchParams, useParams } from 'react-router-dom'; // @ts-ignore import { Button, Table, Stack } from '@carbon/react'; import { Can } from '@casl/react'; import ProcessBreadcrumb from '../components/ProcessBreadcrumb'; import PaginationForTable from '../components/PaginationForTable'; import HttpService from '../services/HttpService'; import { getPageInfoFromSearchParams, modifyProcessModelPath, unModifyProcessModelPath, } from '../helpers'; import { PaginationObject, PermissionsToCheck, ProcessGroup, ProcessModel, } from '../interfaces'; import { useUriListForPermissions } from '../hooks/UriListForPermissions'; import { usePermissionFetcher } from '../hooks/PermissionService'; import ProcessGroupListTiles from '../components/ProcessGroupListTiles'; export default function ProcessGroupShow() { const params = useParams(); const [searchParams] = useSearchParams(); const [processGroup, setProcessGroup] = useState(null); const [processModels, setProcessModels] = useState([]); const [processGroups, setProcessGroups] = useState([]); const [modelPagination, setModelPagination] = useState(null); const [groupPagination, setGroupPagination] = useState(null); const { targetUris } = useUriListForPermissions(); const permissionRequestData: PermissionsToCheck = { [targetUris.processGroupListPath]: ['POST'], [targetUris.processGroupShowPath]: ['PUT'], [targetUris.processModelCreatePath]: ['POST'], }; const { ability } = usePermissionFetcher(permissionRequestData); useEffect(() => { const { page, perPage } = getPageInfoFromSearchParams(searchParams); const setProcessModelFromResult = (result: any) => { setProcessModels(result.results); setModelPagination(result.pagination); }; const setProcessGroupFromResult = (result: any) => { setProcessGroups(result.results); setGroupPagination(result.pagination); }; const processResult = (result: any) => { setProcessGroup(result); const unmodifiedProcessGroupId = unModifyProcessModelPath( (params as any).process_group_id ); HttpService.makeCallToBackend({ path: `/process-models?process_group_identifier=${unmodifiedProcessGroupId}&per_page=${perPage}&page=${page}`, successCallback: setProcessModelFromResult, }); HttpService.makeCallToBackend({ path: `/process-groups?process_group_identifier=${unmodifiedProcessGroupId}&per_page=${perPage}&page=${page}`, successCallback: setProcessGroupFromResult, }); }; HttpService.makeCallToBackend({ path: `/process-groups/${params.process_group_id}`, successCallback: processResult, }); }, [params, searchParams]); const buildModelTable = () => { if (processGroup === null) { return null; } const rows = processModels.map((row: ProcessModel) => { const modifiedProcessModelId: String = modifyProcessModelPath( (row as any).id ); return ( {row.id} {row.display_name} ); }); return (

Process Models

{rows}
Process Model Id Display Name
); }; const buildGroupTable = () => { if (processGroup === null) { return null; } const rows = processGroups.map((row: ProcessGroup) => { const modifiedProcessGroupId: String = modifyProcessModelPath(row.id); return ( {row.id} {row.display_name} ); }); return (

Process Groups

{rows}
Process Group Id Display Name
); }; if (processGroup && groupPagination && modelPagination) { const { page, perPage } = getPageInfoFromSearchParams(searchParams); const modifiedProcessGroupId = modifyProcessModelPath(processGroup.id); return ( <>

Process Group: {processGroup.display_name}



    {/* eslint-disable-next-line sonarjs/no-gratuitous-expressions */} {modelPagination && modelPagination.total > 0 && ( )}

    Process Groups} />
); } return null; }