Merge branch 'main' into 19069-workflow-launching
[arvados-workbench2.git] / src / store / resource-type-filters / resource-type-filters.ts
index 8e902606c0013620c127dfe6e2e45a60b20323f8..0539cefecc93dc74df0912b8450d81613c9e566b 100644 (file)
@@ -11,6 +11,7 @@ import { getSelectedNodes } from 'models/tree';
 import { CollectionType } from 'models/collection';
 import { GroupContentsResourcePrefix } from 'services/groups-service/groups-service';
 import { ContainerState } from 'models/container';
+import { ContainerRequestState } from 'models/container-request';
 
 export enum ProcessStatusFilter {
     ALL = 'All',
@@ -18,7 +19,7 @@ export enum ProcessStatusFilter {
     FAILED = 'Failed',
     COMPLETED = 'Completed',
     CANCELLED = 'Cancelled',
-    LOCKED = 'Locked',
+    ONHOLD = 'On hold',
     QUEUED = 'Queued'
 }
 
@@ -37,6 +38,7 @@ export enum CollectionTypeFilter {
     GENERAL_COLLECTION = 'General',
     OUTPUT_COLLECTION = 'Output',
     LOG_COLLECTION = 'Log',
+    INTERMEDIATE_COLLECTION = 'Intermediate',
 }
 
 export enum ProcessTypeFilter {
@@ -81,6 +83,7 @@ export const getInitialResourceTypeFilters = pipe(
         initFilter(ObjectTypeFilter.COLLECTION),
         initFilter(CollectionTypeFilter.GENERAL_COLLECTION, ObjectTypeFilter.COLLECTION),
         initFilter(CollectionTypeFilter.OUTPUT_COLLECTION, ObjectTypeFilter.COLLECTION),
+        initFilter(CollectionTypeFilter.INTERMEDIATE_COLLECTION, ObjectTypeFilter.COLLECTION),
         initFilter(CollectionTypeFilter.LOG_COLLECTION, ObjectTypeFilter.COLLECTION),
     ),
 );
@@ -95,12 +98,12 @@ export const getInitialProcessStatusFilters = pipe(
     (): DataTableFilters => createTree<DataTableFilterItem>(),
     pipe(
         initFilter(ProcessStatusFilter.ALL, '', true),
+        initFilter(ProcessStatusFilter.ONHOLD, '', false),
+        initFilter(ProcessStatusFilter.QUEUED, '', false),
         initFilter(ProcessStatusFilter.RUNNING, '', false),
-        initFilter(ProcessStatusFilter.FAILED, '', false),
         initFilter(ProcessStatusFilter.COMPLETED, '', false),
         initFilter(ProcessStatusFilter.CANCELLED, '', false),
-        initFilter(ProcessStatusFilter.QUEUED, '', false),
-        initFilter(ProcessStatusFilter.LOCKED, '', false),
+        initFilter(ProcessStatusFilter.FAILED, '', false),
     ),
 );
 
@@ -110,6 +113,7 @@ export const getTrashPanelTypeFilters = pipe(
     initFilter(ObjectTypeFilter.COLLECTION),
     initFilter(CollectionTypeFilter.GENERAL_COLLECTION, ObjectTypeFilter.COLLECTION),
     initFilter(CollectionTypeFilter.OUTPUT_COLLECTION, ObjectTypeFilter.COLLECTION),
+    initFilter(CollectionTypeFilter.INTERMEDIATE_COLLECTION, ObjectTypeFilter.COLLECTION),
     initFilter(CollectionTypeFilter.LOG_COLLECTION, ObjectTypeFilter.COLLECTION),
 );
 
@@ -166,6 +170,10 @@ const collectionTypeToPropertyValue = (type: CollectionTypeFilter) => {
             return CollectionType.OUTPUT;
         case CollectionTypeFilter.LOG_COLLECTION:
             return CollectionType.LOG;
+        case CollectionTypeFilter.INTERMEDIATE_COLLECTION:
+            return CollectionType.INTERMEDIATE;
+        default:
+            return CollectionType.GENERAL;
     }
 };
 
@@ -272,28 +280,32 @@ export const serializeSimpleObjectTypeFilters = (filters: Tree<DataTableFilterIt
         .map(objectTypeToResourceKind);
 };
 
-export const buildProcessStatusFilters = ( fb:FilterBuilder, activeStatusFilter:string ): FilterBuilder => {
+export const buildProcessStatusFilters = (fb: FilterBuilder, activeStatusFilter: string, resourcePrefix?: string): FilterBuilder => {
     switch (activeStatusFilter) {
+        case ProcessStatusFilter.ONHOLD: {
+            fb.addDistinct('state', ContainerRequestState.FINAL, resourcePrefix);
+            fb.addEqual('priority', '0', resourcePrefix);
+            fb.addIn('container.state', [ContainerState.QUEUED, ContainerState.LOCKED], resourcePrefix);
+            break;
+        }
         case ProcessStatusFilter.COMPLETED: {
-            fb.addEqual('container.state', ContainerState.COMPLETE);
-            fb.addEqual('container.exit_code', '0');
+            fb.addEqual('container.state', ContainerState.COMPLETE, resourcePrefix);
+            fb.addEqual('container.exit_code', '0', resourcePrefix);
             break;
         }
         case ProcessStatusFilter.FAILED: {
-            fb.addEqual('container.state', ContainerState.COMPLETE);
-            fb.addDistinct('container.exit_code', '0');
+            fb.addEqual('container.state', ContainerState.COMPLETE, resourcePrefix);
+            fb.addDistinct('container.exit_code', '0', resourcePrefix);
             break;
         }
         case ProcessStatusFilter.QUEUED: {
-            fb.addEqual('container.state', ContainerState.QUEUED);
-            fb.addDistinct('container.priority', '0');
+            fb.addEqual('container.state', ContainerState.QUEUED, resourcePrefix);
+            fb.addDistinct('priority', '0', resourcePrefix);
             break;
         }
         case ProcessStatusFilter.CANCELLED:
-        case ProcessStatusFilter.FAILED:
-        case ProcessStatusFilter.LOCKED:
         case ProcessStatusFilter.RUNNING: {
-            fb.addEqual('container.state', activeStatusFilter);
+            fb.addEqual('container.state', activeStatusFilter, resourcePrefix);
             break;
         }
     }