From: Michal Klobukowski Date: Thu, 30 Aug 2018 14:03:48 +0000 (+0200) Subject: Update subprocess actions and selectors X-Git-Tag: 1.3.0~127^2 X-Git-Url: https://git.arvados.org/arvados-workbench2.git/commitdiff_plain/e602a1284fb49aa9f7e727e828e48638a657cebb Update subprocess actions and selectors Feature #14099 Arvados-DCO-1.1-Signed-off-by: Michal Klobukowski --- diff --git a/src/store/processes/process.ts b/src/store/processes/process.ts index 46d8a257..0f12b3fe 100644 --- a/src/store/processes/process.ts +++ b/src/store/processes/process.ts @@ -28,13 +28,17 @@ export const getProcess = (uuid: string) => (resources: ResourcesState): Process }; export const getSubprocesses = (uuid: string) => (resources: ResourcesState) => { - const containerRequests = filterResources(isSubprocess(uuid))(resources) as ContainerRequestResource[]; - return containerRequests.reduce((subprocesses, { uuid }) => { - const process = getProcess(uuid)(resources); - return process - ? [...subprocesses, process] - : subprocesses; - }, []); + const process = getProcess(uuid)(resources); + if (process && process.container) { + const containerRequests = filterResources(isSubprocess(process.container.uuid))(resources) as ContainerRequestResource[]; + return containerRequests.reduce((subprocesses, { uuid }) => { + const process = getProcess(uuid)(resources); + return process + ? [...subprocesses, process] + : subprocesses; + }, []); + } + return []; }; export const getProcessStatus = (process: Process) => @@ -42,6 +46,6 @@ export const getProcessStatus = (process: Process) => ? process.container.state : process.containerRequest.state; -const isSubprocess = (uuid: string) => (resource: Resource) => +const isSubprocess = (containerUuid: string) => (resource: Resource) => resource.kind === ResourceKind.CONTAINER_REQUEST - && (resource as ContainerRequestResource).requestingContainerUuid === uuid; + && (resource as ContainerRequestResource).requestingContainerUuid === containerUuid; diff --git a/src/store/processes/processes-actions.ts b/src/store/processes/processes-actions.ts index d6675171..be9266b6 100644 --- a/src/store/processes/processes-actions.ts +++ b/src/store/processes/processes-actions.ts @@ -9,20 +9,21 @@ import { updateResources } from '~/store/resources/resources-actions'; import { FilterBuilder } from '~/common/api/filter-builder'; import { ContainerRequestResource } from '../../models/container-request'; -export const loadProcess = (uuid: string) => +export const loadProcess = (containerRequestUuid: string) => async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => { - const containerRequest = await services.containerRequestService.get(uuid); + const containerRequest = await services.containerRequestService.get(containerRequestUuid); dispatch(updateResources([containerRequest])); if (containerRequest.containerUuid) { const container = await services.containerService.get(containerRequest.containerUuid); dispatch(updateResources([container])); + await dispatch(loadSubprocesses(containerRequest.containerUuid)); } }; -export const loadSubprocesses = (uuid: string) => +export const loadSubprocesses = (containerUuid: string) => async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => { const containerRequests = await dispatch(loadContainerRequests( - new FilterBuilder().addEqual('requestingContainerUuid', uuid).getFilters() + new FilterBuilder().addEqual('requestingContainerUuid', containerUuid).getFilters() )) as ContainerRequestResource[]; const containerUuids: string[] = containerRequests.reduce((uuids, { containerUuid }) =>