import { useEffect, useState } from 'react'; import { Link, useNavigate, useSearchParams } from 'react-router-dom'; import { Button, Table, ExpandableTile, TileAboveTheFoldContent, TileBelowTheFoldContent, TextInput, ClickableTile, // @ts-ignore } from '@carbon/react'; import ProcessBreadcrumb from '../components/ProcessBreadcrumb'; import PaginationForTable from '../components/PaginationForTable'; import HttpService from '../services/HttpService'; import { getPageInfoFromSearchParams } from '../helpers'; import { CarbonComboBoxSelection, ProcessGroup } from '../interfaces'; import ProcessModelSearch from '../components/ProcessModelSearch'; // Example process group json // {'process_group_id': 'sure', 'display_name': 'Test Workflows', 'id': 'test_process_group'} export default function ProcessGroupList() { const navigate = useNavigate(); const [searchParams] = useSearchParams(); const [processGroups, setProcessGroups] = useState([]); const [pagination, setPagination] = useState(null); const [processModelAvailableItems, setProcessModelAvailableItems] = useState( [] ); useEffect(() => { const setProcessGroupsFromResult = (result: any) => { setProcessGroups(result.results); setPagination(result.pagination); }; const processResultForProcessModels = (result: any) => { const selectionArray = result.results.map((item: any) => { const label = `${item.process_group_id}/${item.id}`; Object.assign(item, { label }); return item; }); setProcessModelAvailableItems(selectionArray); }; const { page, perPage } = getPageInfoFromSearchParams(searchParams); // for browsing HttpService.makeCallToBackend({ path: `/process-groups?per_page=${perPage}&page=${page}`, successCallback: setProcessGroupsFromResult, }); // for search box HttpService.makeCallToBackend({ path: `/process-models?per_page=1000`, successCallback: processResultForProcessModels, }); }, [searchParams]); const buildTable = () => { const rows = processGroups.map((row: ProcessGroup) => { return ( {(row as any).display_name} ); }); return ( {rows}
Process Group
); // const rows = processGroups.map((row: ProcessGroup) => { // return ( // // // {row.display_name} // // // ); // }); // // return
{rows}
; }; const processGroupsDisplayArea = () => { const { page, perPage } = getPageInfoFromSearchParams(searchParams); let displayText = null; if (processGroups?.length > 0) { displayText = ( <>

Browse

); } else { displayText =

No Groups To Display

; } return displayText; }; const processModelSearchArea = () => { const processModelSearchOnChange = (selection: CarbonComboBoxSelection) => { const processModel = selection.selectedItem; navigate( `/admin/process-models/${processModel.process_group_id}/${processModel.id}` ); }; return ( ); }; if (pagination) { return ( <>

{processModelSearchArea()}
{processGroupsDisplayArea()} ); } return null; }