19142: Avoid loading mounts in subprocess panel
[arvados-workbench2.git] / src / store / subprocess-panel / subprocess-panel-middleware-service.ts
index 4363bb7c280fb16a9f830d749bbdd8331190a5e1..dd303233117af7a74e77f8bfa34b381ac183ddfa 100644 (file)
@@ -2,28 +2,29 @@
 //
 // SPDX-License-Identifier: AGPL-3.0
 
-import { ServiceRepository } from '~/services/services';
+import { ServiceRepository } from 'services/services';
 import { MiddlewareAPI, Dispatch } from 'redux';
 import {
     DataExplorerMiddlewareService, dataExplorerToListParams, listResultsToDataExplorerItemsMeta, getDataExplorerColumnFilters
-} from '~/store/data-explorer/data-explorer-middleware-service';
-import { RootState } from '~/store/store';
-import { snackbarActions, SnackbarKind } from '~/store/snackbar/snackbar-actions';
-import { DataExplorer, getDataExplorer } from '~/store/data-explorer/data-explorer-reducer';
-import { updateResources } from '~/store/resources/resources-actions';
-import { SortDirection } from '~/components/data-table/data-column';
-import { OrderDirection, OrderBuilder } from '~/services/api/order-builder';
-import { ListResults } from '~/services/common-service/common-service';
-import { getSortColumn } from "~/store/data-explorer/data-explorer-reducer";
-import { ProcessResource } from '~/models/process';
-import { SubprocessPanelColumnNames } from '~/views/subprocess-panel/subprocess-panel-root';
-import { FilterBuilder, joinFilters } from '~/services/api/filter-builder';
+} from 'store/data-explorer/data-explorer-middleware-service';
+import { RootState } from 'store/store';
+import { snackbarActions, SnackbarKind } from 'store/snackbar/snackbar-actions';
+import { DataExplorer, getDataExplorer } from 'store/data-explorer/data-explorer-reducer';
+import { updateResources } from 'store/resources/resources-actions';
+import { SortDirection } from 'components/data-table/data-column';
+import { OrderDirection, OrderBuilder } from 'services/api/order-builder';
+import { ListResults } from 'services/common-service/common-service';
+import { getSortColumn } from "store/data-explorer/data-explorer-reducer";
+import { ProcessResource } from 'models/process';
+import { SubprocessPanelColumnNames } from 'views/subprocess-panel/subprocess-panel-root';
+import { FilterBuilder, joinFilters } from 'services/api/filter-builder';
 import { subprocessPanelActions } from './subprocess-panel-actions';
-import { DataColumns } from '~/components/data-table/data-table';
-import { ProcessStatusFilter } from '../resource-type-filters/resource-type-filters';
-import { ContainerRequestResource } from '~/models/container-request';
+import { DataColumns } from 'components/data-table/data-table';
+import { ProcessStatusFilter, buildProcessStatusFilters } from '../resource-type-filters/resource-type-filters';
+import { ContainerRequestResource } from 'models/container-request';
 import { progressIndicatorActions } from '../progress-indicator/progress-indicator-actions';
 import { loadMissingProcessesInformation } from '../project-panel/project-panel-middleware-service';
+import { containerRequestFieldsNoMounts } from 'store/all-processes-panel/all-processes-panel-middleware-service';
 
 export class SubprocessMiddlewareService extends DataExplorerMiddlewareService {
     constructor(private services: ServiceRepository, id: string) {
@@ -32,14 +33,18 @@ export class SubprocessMiddlewareService extends DataExplorerMiddlewareService {
 
     async requestItems(api: MiddlewareAPI<Dispatch, RootState>) {
         const state = api.getState();
+        const parentContainerRequestUuid = state.processPanel.containerRequestUuid;
+        if (parentContainerRequestUuid === "") { return; }
         const dataExplorer = getDataExplorer(state.dataExplorer, this.getId());
 
         try {
             api.dispatch(progressIndicatorActions.START_WORKING(this.getId()));
-            const parentContainerRequestUuid = state.processPanel.containerRequestUuid;
             const parentContainerRequest = await this.services.containerRequestService.get(parentContainerRequestUuid);
             const containerRequests = await this.services.containerRequestService.list(
-                { ...getParams(dataExplorer, parentContainerRequest) });
+                {
+                    ...getParams(dataExplorer, parentContainerRequest) ,
+                    select: containerRequestFieldsNoMounts
+                });
 
             api.dispatch(progressIndicatorActions.PERSIST_STOP_WORKING(this.getId()));
             api.dispatch(updateResources(containerRequests.items));
@@ -85,31 +90,11 @@ export const getFilters = (
         const statusColumnFilters = getDataExplorerColumnFilters(columns, 'Status');
         const activeStatusFilter = Object.keys(statusColumnFilters).find(
             filterName => statusColumnFilters[filterName].selected
-        );
+        ) || ProcessStatusFilter.ALL;
 
         // Get all the subprocess' container requests and containers.
         const fb = new FilterBuilder().addEqual('requesting_container_uuid', parentContainerRequest.containerUuid);
-        switch (activeStatusFilter) {
-            case ProcessStatusFilter.COMPLETED: {
-                fb.addEqual('container.state', 'Complete');
-                fb.addEqual('container.exit_code', '0');
-                break;
-            }
-            case ProcessStatusFilter.FAILED: {
-                fb.addEqual('container.state', 'Complete');
-                fb.addDistinct('container.exit_code', '0');
-                break;
-            }
-            case ProcessStatusFilter.CANCELLED:
-            case ProcessStatusFilter.FAILED:
-            case ProcessStatusFilter.LOCKED:
-            case ProcessStatusFilter.QUEUED:
-            case ProcessStatusFilter.RUNNING: {
-                fb.addEqual('container.state', activeStatusFilter);
-                break;
-            }
-        }
-        const statusFilters = fb.getFilters();
+        const statusFilters = buildProcessStatusFilters(fb, activeStatusFilter).getFilters();
 
         const nameFilters = dataExplorer.searchValue
             ? new FilterBuilder()