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'
}
export enum ObjectTypeFilter {
PROJECT = 'Project',
- PROCESS = 'Process',
+ WORKFLOW = 'Workflow',
COLLECTION = 'Data collection',
+ DEFINITION = 'Definition',
}
export enum GroupTypeFilter {
GENERAL_COLLECTION = 'General',
OUTPUT_COLLECTION = 'Output',
LOG_COLLECTION = 'Log',
+ INTERMEDIATE_COLLECTION = 'Intermediate',
}
export enum ProcessTypeFilter {
- MAIN_PROCESS = 'Main',
- CHILD_PROCESS = 'Child',
+ MAIN_PROCESS = 'Runs',
+ CHILD_PROCESS = 'Intermediate Steps',
}
-const initFilter = (name: string, parent = '', isSelected?: boolean) =>
+const initFilter = (name: string, parent = '', isSelected?: boolean, isExpanded?: boolean) =>
setNode<DataTableFilterItem>({
id: name,
value: { name },
children: [],
active: false,
selected: isSelected !== undefined ? isSelected : true,
- expanded: false,
+ initialState: isSelected !== undefined ? isSelected : true,
+ expanded: isExpanded !== undefined ? isExpanded : false,
status: TreeNodeStatus.LOADED,
});
export const getSimpleObjectTypeFilters = pipe(
(): DataTableFilters => createTree<DataTableFilterItem>(),
initFilter(ObjectTypeFilter.PROJECT),
- initFilter(ObjectTypeFilter.PROCESS),
+ initFilter(ObjectTypeFilter.WORKFLOW),
initFilter(ObjectTypeFilter.COLLECTION),
+ initFilter(ObjectTypeFilter.DEFINITION),
);
// Using pipe() with more than 7 arguments makes the return type be 'any',
export const getInitialResourceTypeFilters = pipe(
(): DataTableFilters => createTree<DataTableFilterItem>(),
pipe(
- initFilter(ObjectTypeFilter.PROJECT),
+ initFilter(ObjectTypeFilter.PROJECT, '', true, true),
initFilter(GroupTypeFilter.PROJECT, ObjectTypeFilter.PROJECT),
initFilter(GroupTypeFilter.FILTER_GROUP, ObjectTypeFilter.PROJECT),
),
pipe(
- initFilter(ObjectTypeFilter.PROCESS),
- initFilter(ProcessTypeFilter.MAIN_PROCESS, ObjectTypeFilter.PROCESS),
- initFilter(ProcessTypeFilter.CHILD_PROCESS, ObjectTypeFilter.PROCESS)
+ initFilter(ObjectTypeFilter.WORKFLOW, '', false, true),
+ initFilter(ObjectTypeFilter.DEFINITION, ObjectTypeFilter.WORKFLOW),
+ initFilter(ProcessTypeFilter.MAIN_PROCESS, ObjectTypeFilter.WORKFLOW),
+ initFilter(ProcessTypeFilter.CHILD_PROCESS, ObjectTypeFilter.WORKFLOW, false),
),
pipe(
- initFilter(ObjectTypeFilter.COLLECTION),
+ initFilter(ObjectTypeFilter.COLLECTION, '', true, true),
initFilter(CollectionTypeFilter.GENERAL_COLLECTION, ObjectTypeFilter.COLLECTION),
initFilter(CollectionTypeFilter.OUTPUT_COLLECTION, ObjectTypeFilter.COLLECTION),
+ initFilter(CollectionTypeFilter.INTERMEDIATE_COLLECTION, ObjectTypeFilter.COLLECTION),
initFilter(CollectionTypeFilter.LOG_COLLECTION, ObjectTypeFilter.COLLECTION),
),
+
);
export const getInitialProcessTypeFilters = 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),
),
);
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),
);
switch (type) {
case ObjectTypeFilter.PROJECT:
return ResourceKind.PROJECT;
- case ObjectTypeFilter.PROCESS:
+ case ObjectTypeFilter.WORKFLOW:
return ResourceKind.PROCESS;
case ObjectTypeFilter.COLLECTION:
return ResourceKind.COLLECTION;
+ case ObjectTypeFilter.DEFINITION:
+ return ResourceKind.WORKFLOW;
}
};
? set.add(ObjectTypeFilter.COLLECTION)
: set,
set => processFilters.length > 0
- ? set.add(ObjectTypeFilter.PROCESS)
+ ? set.add(ObjectTypeFilter.WORKFLOW)
: set,
set => Array.from(set)
)();
return {
fb: typeFilters.length > 0
? fb.addIsA('uuid', typeFilters.map(objectTypeToResourceKind))
- : fb,
+ : fb.addIsA('uuid', ResourceKind.NONE),
selectedFilters,
};
};
return CollectionType.OUTPUT;
case CollectionTypeFilter.LOG_COLLECTION:
return CollectionType.LOG;
+ case CollectionTypeFilter.INTERMEDIATE_COLLECTION:
+ return CollectionType.INTERMEDIATE;
+ default:
+ return CollectionType.GENERAL;
}
};
.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;
}
}