refs #master Merge branch 'origin/master' into 13828-trash-view
[arvados-workbench2.git] / src / store / processes / process.ts
index 17ad695ef0f15f6a3be6103967132f8a71ecf7a8..46d8a257172ec011e3fd163a61d96309cf3f7b37 100644 (file)
@@ -5,6 +5,8 @@
 import { ContainerRequestResource } from '../../models/container-request';
 import { ContainerResource } from '../../models/container';
 import { ResourcesState, getResource } from '~/store/resources/resources';
+import { filterResources } from '../resources/resources';
+import { ResourceKind, Resource } from '~/models/resource';
 
 export interface Process {
     containerRequest: ContainerRequestResource;
@@ -24,3 +26,22 @@ export const getProcess = (uuid: string) => (resources: ResourcesState): Process
     }
     return;
 };
+
+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;
+    }, []);
+};
+
+export const getProcessStatus = (process: Process) =>
+    process.container
+        ? process.container.state
+        : process.containerRequest.state;
+
+const isSubprocess = (uuid: string) => (resource: Resource) =>
+    resource.kind === ResourceKind.CONTAINER_REQUEST
+    && (resource as ContainerRequestResource).requestingContainerUuid === uuid;