import { getSelectedNodes } from '~/models/tree';
import { CollectionType } from '~/models/collection';
import { GroupContentsResourcePrefix } from '~/services/groups-service/groups-service';
+import { ContainerState } from '~/models/container';
export enum ProcessStatusFilter {
ALL = 'All',
initFilter(ObjectTypeFilter.COLLECTION),
);
-// Using pipe() with more tha 7 arguments makes the return type be 'any',
+// Using pipe() with more than 7 arguments makes the return type be 'any',
// causing compile issues.
export const getInitialResourceTypeFilters = pipe(
(): DataTableFilters => createTree<DataTableFilterItem>(),
),
);
+export const getInitialProcessTypeFilters = pipe(
+ (): DataTableFilters => createTree<DataTableFilterItem>(),
+ initFilter(ProcessTypeFilter.MAIN_PROCESS),
+ initFilter(ProcessTypeFilter.CHILD_PROCESS, '', false)
+);
+
export const getInitialProcessStatusFilters = pipe(
(): DataTableFilters => createTree<DataTableFilterItem>(),
pipe(
() => getMatchingFilters(values(ProcessTypeFilter), selectedFilters),
filters => filters,
mappedFilters => ({
- fb: buildProcessTypeFilters({ fb, filters: mappedFilters }),
+ fb: buildProcessTypeFilters({ fb, filters: mappedFilters, use_prefix: true }),
selectedFilters
})
)();
const PROCESS_TYPES = values(ProcessTypeFilter);
const PROCESS_PREFIX = GroupContentsResourcePrefix.PROCESS;
-const buildProcessTypeFilters = ({ fb, filters }: { fb: FilterBuilder, filters: string[] }) => {
+const buildProcessTypeFilters = ({ fb, filters, use_prefix }: { fb: FilterBuilder, filters: string[], use_prefix: boolean }) => {
switch (true) {
case filters.length === 0 || filters.length === PROCESS_TYPES.length:
return fb;
case includes(ProcessTypeFilter.MAIN_PROCESS, filters):
- return fb.addEqual('requesting_container_uuid', null, PROCESS_PREFIX);
+ return fb.addEqual('requesting_container_uuid', null, use_prefix ? PROCESS_PREFIX : '');
case includes(ProcessTypeFilter.CHILD_PROCESS, filters):
- return fb.addDistinct('requesting_container_uuid', null, PROCESS_PREFIX);
+ return fb.addDistinct('requesting_container_uuid', null, use_prefix ? PROCESS_PREFIX : '');
default:
return fb;
}
({ fb }) => fb.getFilters(),
);
+export const serializeOnlyProcessTypeFilters = pipe(
+ createFiltersBuilder,
+ ({ fb, selectedFilters }: ReturnType<typeof createFiltersBuilder>) => pipe(
+ () => getMatchingFilters(values(ProcessTypeFilter), selectedFilters),
+ filters => filters,
+ mappedFilters => ({
+ fb: buildProcessTypeFilters({ fb, filters: mappedFilters, use_prefix: false }),
+ selectedFilters
+ })
+ )(),
+ ({ fb }) => fb.getFilters(),
+);
+
export const serializeSimpleObjectTypeFilters = (filters: Tree<DataTableFilterItem>) => {
return getSelectedNodes(filters)
.map(f => f.id)
export const buildProcessStatusFilters = ( fb:FilterBuilder, activeStatusFilter:string ): FilterBuilder => {
switch (activeStatusFilter) {
case ProcessStatusFilter.COMPLETED: {
- fb.addEqual('container.state', 'Complete');
+ fb.addEqual('container.state', ContainerState.COMPLETE);
fb.addEqual('container.exit_code', '0');
break;
}
case ProcessStatusFilter.FAILED: {
- fb.addEqual('container.state', 'Complete');
+ fb.addEqual('container.state', ContainerState.COMPLETE);
fb.addDistinct('container.exit_code', '0');
break;
}
+ case ProcessStatusFilter.QUEUED: {
+ fb.addEqual('container.state', ContainerState.QUEUED);
+ fb.addDistinct('container.priority', '0');
+ break;
+ }
case ProcessStatusFilter.CANCELLED:
case ProcessStatusFilter.FAILED:
case ProcessStatusFilter.LOCKED:
- case ProcessStatusFilter.QUEUED:
case ProcessStatusFilter.RUNNING: {
fb.addEqual('container.state', activeStatusFilter);
break;