// SPDX-License-Identifier: AGPL-3.0
import { difference, pipe, values, includes, __ } from 'lodash/fp';
-import { createTree, setNode, TreeNodeStatus, TreeNode, Tree } from '~/models/tree';
-import { DataTableFilterItem, DataTableFilters } from '~/components/data-table-filters/data-table-filters-tree';
-import { ResourceKind } from '~/models/resource';
-import { FilterBuilder } from '~/services/api/filter-builder';
-import { getSelectedNodes } from '~/models/tree';
-import { CollectionType } from '~/models/collection';
-import { GroupContentsResourcePrefix } from '~/services/groups-service/groups-service';
-import { ContainerState } from '~/models/container';
+import { createTree, setNode, TreeNodeStatus, TreeNode, Tree } from 'models/tree';
+import { DataTableFilterItem, DataTableFilters } from 'components/data-table-filters/data-table-filters-tree';
+import { ResourceKind } from 'models/resource';
+import { FilterBuilder } from 'services/api/filter-builder';
+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',
FAILED = 'Failed',
COMPLETED = 'Completed',
CANCELLED = 'Cancelled',
- LOCKED = 'Locked',
+ ONHOLD = 'On hold',
QUEUED = 'Queued'
}
(): 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),
),
);
.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;
}
}