diff --git a/src/components/ProcessInstanceRun.tsx b/src/components/ProcessInstanceRun.tsx index 3494ea0..c5d79ab 100644 --- a/src/components/ProcessInstanceRun.tsx +++ b/src/components/ProcessInstanceRun.tsx @@ -4,10 +4,16 @@ import { Button, // @ts-ignore } from '@carbon/react'; -import { ProcessModel, RecentProcessModel } from '../interfaces'; +import { Can } from '@casl/react'; +import { + PermissionsToCheck, + ProcessModel, + RecentProcessModel, +} from '../interfaces'; import HttpService from '../services/HttpService'; import ErrorContext from '../contexts/ErrorContext'; import { modifyProcessIdentifierForPathParam } from '../helpers'; +import { usePermissionFetcher } from '../hooks/PermissionService'; const storeRecentProcessModelInLocalStorage = ( processModelForStorage: ProcessModel @@ -75,6 +81,12 @@ export default function ProcessInstanceRun({ processModel.id ); + const processInstanceActionPath = `/v1.0/process-models/${modifiedProcessModelId}/process-instances`; + const permissionRequestData: PermissionsToCheck = { + [processInstanceActionPath]: ['POST'], + }; + const { ability } = usePermissionFetcher(permissionRequestData); + const onProcessInstanceRun = (processInstance: any) => { // FIXME: ensure that the task is actually for the current user as well const processInstanceId = (processInstance as any).id; @@ -98,15 +110,17 @@ export default function ProcessInstanceRun({ const processInstanceCreateAndRun = () => { HttpService.makeCallToBackend({ - path: `/process-models/${modifiedProcessModelId}/process-instances`, + path: processInstanceActionPath, successCallback: processModelRun, httpMethod: 'POST', }); }; return ( - + + + ); } diff --git a/src/components/ProcessModelListTiles.tsx b/src/components/ProcessModelListTiles.tsx index be5185a..3b0292b 100644 --- a/src/components/ProcessModelListTiles.tsx +++ b/src/components/ProcessModelListTiles.tsx @@ -33,11 +33,11 @@ export default function ProcessModelListTiles({ setProcessModels(result.results); }; // only allow 10 for now until we get the backend only returning certain models for user execution - let queryParams = '?per_page=1000'; + let queryParams = '?per_page=20'; if (processGroup) { queryParams = `${queryParams}&process_group_identifier=${processGroup.id}`; } else { - queryParams = `${queryParams}&recursive=true`; + queryParams = `${queryParams}&recursive=true&filter_runnable_by_user=true`; } HttpService.makeCallToBackend({ path: `/process-models${queryParams}`, diff --git a/src/index.css b/src/index.css index 8d389ad..00f9476 100644 --- a/src/index.css +++ b/src/index.css @@ -256,3 +256,7 @@ in on this with the react-jsonschema-form repo. This is just a patch fix to allo .clear-left { clear: left; } + +td.actions-cell { + width: 1em; +} diff --git a/src/routes/MyTasks.tsx b/src/routes/MyTasks.tsx index b33e459..34ca7e9 100644 --- a/src/routes/MyTasks.tsx +++ b/src/routes/MyTasks.tsx @@ -18,7 +18,7 @@ import { import ProcessInstanceRun from '../components/ProcessInstanceRun'; const PER_PAGE_FOR_TASKS_ON_HOME_PAGE = 5; -const REFRESH_INTERVAL = 10; +const REFRESH_INTERVAL = 5; const REFRESH_TIMEOUT = 600; export default function MyTasks() { @@ -158,7 +158,7 @@ export default function MyTasks() { {row.processModelDisplayName} - + (null); - const [processModels, setProcessModels] = useState([]); + // const [processModels, setProcessModels] = useState([]); const [modelPagination, setModelPagination] = useState(null); @@ -55,7 +54,7 @@ export default function ProcessGroupShow() { const { page, perPage } = getPageInfoFromSearchParams(searchParams); const setProcessModelFromResult = (result: any) => { - setProcessModels(result.results); + // setProcessModels(result.results); setModelPagination(result.pagination); }; const processResult = (result: any) => { @@ -74,42 +73,42 @@ export default function ProcessGroupShow() { }); }, [params, searchParams]); - const buildModelTable = () => { - if (processGroup === null) { - return null; - } - const rows = processModels.map((row: ProcessModel) => { - const modifiedProcessModelId: String = - modifyProcessIdentifierForPathParam((row as any).id); - return ( - - - - {row.id} - - - {row.display_name} - - ); - }); - return ( -
-

Process Models

- - - - - - - - {rows} -
Process Model IdDisplay Name
-
- ); - }; + // const buildModelTable = () => { + // if (processGroup === null) { + // return null; + // } + // const rows = processModels.map((row: ProcessModel) => { + // const modifiedProcessModelId: String = + // modifyProcessIdentifierForPathParam((row as any).id); + // return ( + // + // + // + // {row.id} + // + // + // {row.display_name} + // + // ); + // }); + // return ( + //
+ //

Process Models

+ // + // + // + // + // + // + // + // {rows} + //
Process Model IdDisplay Name
+ //
+ // ); + // }; const navigateToProcessGroups = (_result: any) => { navigate(`/admin/process-groups`); @@ -128,7 +127,7 @@ export default function ProcessGroupShow() { }; if (processGroup && modelPagination) { - const { page, perPage } = getPageInfoFromSearchParams(searchParams); + // const { page, perPage } = getPageInfoFromSearchParams(searchParams); const modifiedProcessGroupId = modifyProcessIdentifierForPathParam( processGroup.id ); diff --git a/src/services/HttpService.ts b/src/services/HttpService.ts index 72a92a9..119765a 100644 --- a/src/services/HttpService.ts +++ b/src/services/HttpService.ts @@ -66,9 +66,11 @@ backendCallProps) => { method: httpMethod, }); + const updatedPath = path.replace(/^\/v1\.0/, ''); + let isSuccessful = true; let is403 = false; - fetch(`${BACKEND_BASE_URL}${path}`, httpArgs) + fetch(`${BACKEND_BASE_URL}${updatedPath}`, httpArgs) .then((response) => { if (response.status === 401) { UserService.doLogin();