Merge branch 'main' of git.arvados.org:arvados-workbench2 into 20251-subprocess-panel...
authorStephen Smith <stephen@curii.com>
Wed, 22 Mar 2023 01:25:13 +0000 (21:25 -0400)
committerStephen Smith <stephen@curii.com>
Wed, 22 Mar 2023 01:25:13 +0000 (21:25 -0400)
Arvados-DCO-1.1-Signed-off-by: Stephen Smith <stephen@curii.com>

src/store/processes/processes-actions.ts
src/store/project-panel/project-panel-middleware-service.ts

index 0b2de8373ca83769f9ee0d548e95530cba053ea2..b26c2017f7552fa54c4d6e44f57ad398ff1b45ce 100644 (file)
@@ -23,6 +23,7 @@ import { UserResource } from "models/user";
 import { CommandOutputParameter } from "cwlts/mappings/v1.0/CommandOutputParameter";
 import { ContainerResource } from "models/container";
 import { ContainerRequestResource, ContainerRequestState } from "models/container-request";
+import { FilterBuilder } from "services/api/filter-builder";
 
 export const loadProcess = (containerRequestUuid: string) =>
     async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository): Promise<Process | undefined> => {
@@ -60,9 +61,12 @@ export const loadProcess = (containerRequestUuid: string) =>
         return { containerRequest };
     };
 
-export const loadContainers = (filters: string, loadMounts: boolean = true) =>
+export const loadContainers = (containerUuids: string[], loadMounts: boolean = true) =>
     async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => {
-        let args: any = { filters };
+        let args: any = {
+            filters: new FilterBuilder().addIn('uuid', containerUuids).getFilters(),
+            limit: containerUuids.length,
+         };
         if (!loadMounts) {
             args.select = containerFieldsNoMounts;
         }
index cc8511a4c7e6ed997cb1fb74533cd95cc468f711..7051d06206ca9d0c6b39eeb061926a5a1bafe1b9 100644 (file)
@@ -81,15 +81,15 @@ export class ProjectPanelMiddlewareService extends DataExplorerMiddlewareService
 export const loadMissingProcessesInformation = (resources: GroupContentsResource[]) =>
     async (dispatch: Dispatch) => {
         const containerUuids = resources.reduce((uuids, resource) => {
-            return resource.kind === ResourceKind.CONTAINER_REQUEST
-                ? resource.containerUuid
-                    ? [...uuids, resource.containerUuid]
-                    : uuids
+            return resource.kind === ResourceKind.CONTAINER_REQUEST &&
+                    resource.containerUuid &&
+                    !uuids.includes(resource.containerUuid)
+                ? [...uuids, resource.containerUuid]
                 : uuids;
-        }, []);
+        }, [] as string[]);
         if (containerUuids.length > 0) {
             await dispatch<any>(loadContainers(
-                new FilterBuilder().addIn('uuid', containerUuids).getFilters(),
+                containerUuids,
                 false
             ));
         }