Update subprocess actions and selectors
authorMichal Klobukowski <michal.klobukowski@contractors.roche.com>
Thu, 30 Aug 2018 14:03:48 +0000 (16:03 +0200)
committerMichal Klobukowski <michal.klobukowski@contractors.roche.com>
Thu, 30 Aug 2018 14:03:48 +0000 (16:03 +0200)
Feature #14099

Arvados-DCO-1.1-Signed-off-by: Michal Klobukowski <michal.klobukowski@contractors.roche.com>

src/store/processes/process.ts
src/store/processes/processes-actions.ts

index 46d8a257172ec011e3fd163a61d96309cf3f7b37..0f12b3fe2f30c3f9821292b946ee0fbe2c74509b 100644 (file)
@@ -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;
index d667517191179cca2c020df3b0507934d76e5d78..be9266b64ec2cb9058ec5c23f8bea6fae2aa3af6 100644 (file)
@@ -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<any>(updateResources([containerRequest]));
         if (containerRequest.containerUuid) {
             const container = await services.containerService.get(containerRequest.containerUuid);
             dispatch<any>(updateResources([container]));
+            await dispatch<any>(loadSubprocesses(containerRequest.containerUuid));
         }
     };
 
-export const loadSubprocesses = (uuid: string) =>
+export const loadSubprocesses = (containerUuid: string) =>
     async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => {
         const containerRequests = await dispatch<any>(loadContainerRequests(
-            new FilterBuilder().addEqual('requestingContainerUuid', uuid).getFilters()
+            new FilterBuilder().addEqual('requestingContainerUuid', containerUuid).getFilters()
         )) as ContainerRequestResource[];
 
         const containerUuids: string[] = containerRequests.reduce((uuids, { containerUuid }) =>