X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/1313e9c9a5f250b71aa8136c077176c38b8db902..1d402d5f65011e082eb9332118c4dbfe4377952f:/src/store/project-panel/project-panel-middleware-service.ts?ds=sidebyside diff --git a/src/store/project-panel/project-panel-middleware-service.ts b/src/store/project-panel/project-panel-middleware-service.ts index be569b49..72c5f811 100644 --- a/src/store/project-panel/project-panel-middleware-service.ts +++ b/src/store/project-panel/project-panel-middleware-service.ts @@ -17,7 +17,11 @@ import { OrderBuilder, OrderDirection } from "services/api/order-builder"; import { FilterBuilder, joinFilters } from "services/api/filter-builder"; import { GroupContentsResource, GroupContentsResourcePrefix } from "services/groups-service/groups-service"; import { updateFavorites } from "store/favorites/favorites-actions"; -import { IS_PROJECT_PANEL_TRASHED, projectPanelActions, getProjectPanelCurrentUuid } from 'store/project-panel/project-panel-action'; +import { + IS_PROJECT_PANEL_TRASHED, + projectPanelActions, + getProjectPanelCurrentUuid +} from 'store/project-panel/project-panel-action'; import { Dispatch, MiddlewareAPI } from "redux"; import { ProjectResource } from "models/project"; import { updateResources } from "store/resources/resources-actions"; @@ -29,7 +33,10 @@ import { ListResults } from 'services/common-service/common-service'; import { loadContainers } from 'store/processes/processes-actions'; import { ResourceKind } from 'models/resource'; import { getSortColumn } from "store/data-explorer/data-explorer-reducer"; -import { serializeResourceTypeFilters, ProcessStatusFilter } from 'store/resource-type-filters/resource-type-filters'; +import { + serializeResourceTypeFilters, + buildProcessStatusFilters +} from 'store/resource-type-filters/resource-type-filters'; import { updatePublicFavorites } from 'store/public-favorites/public-favorites-actions'; export class ProjectPanelMiddlewareService extends DataExplorerMiddlewareService { @@ -82,7 +89,8 @@ export const loadMissingProcessesInformation = (resources: GroupContentsResource }, []); if (containerUuids.length > 0) { await dispatch(loadContainers( - new FilterBuilder().addIn('uuid', containerUuids).getFilters() + new FilterBuilder().addIn('uuid', containerUuids).getFilters(), + false )); } }; @@ -101,7 +109,7 @@ export const getParams = (dataExplorer: DataExplorer, isProjectTrashed: boolean) }); export const getFilters = (dataExplorer: DataExplorer) => { - const columns = dataExplorer.columns as DataColumns; + const columns = dataExplorer.columns as DataColumns; const typeFilters = serializeResourceTypeFilters(getDataExplorerColumnFilters(columns, ProjectPanelColumnNames.TYPE)); const statusColumnFilters = getDataExplorerColumnFilters(columns, 'Status'); const activeStatusFilter = Object.keys(statusColumnFilters).find( @@ -116,27 +124,10 @@ export const getFilters = (dataExplorer: DataExplorer) => { .getFilters(); // Filter by container status - const fb = new FilterBuilder(); - switch (activeStatusFilter) { - case ProcessStatusFilter.COMPLETED: { - fb.addEqual('container.state', 'Complete', GroupContentsResourcePrefix.PROCESS); - fb.addEqual('container.exit_code', '0', GroupContentsResourcePrefix.PROCESS); - break; - } - case ProcessStatusFilter.FAILED: { - fb.addEqual('container.state', 'Complete', GroupContentsResourcePrefix.PROCESS); - fb.addDistinct('container.exit_code', '0', GroupContentsResourcePrefix.PROCESS); - break; - } - case ProcessStatusFilter.CANCELLED: - case ProcessStatusFilter.LOCKED: - case ProcessStatusFilter.QUEUED: - case ProcessStatusFilter.RUNNING: { - fb.addEqual('container.state', activeStatusFilter, GroupContentsResourcePrefix.PROCESS); - break; - } - } - const statusFilters = fb.getFilters(); + const statusFilters = buildProcessStatusFilters( + new FilterBuilder(), + activeStatusFilter || '', + GroupContentsResourcePrefix.PROCESS).getFilters(); return joinFilters( statusFilters, @@ -146,18 +137,17 @@ export const getFilters = (dataExplorer: DataExplorer) => { }; export const getOrder = (dataExplorer: DataExplorer) => { - const sortColumn = getSortColumn(dataExplorer); + const sortColumn = getSortColumn(dataExplorer); const order = new OrderBuilder(); - if (sortColumn) { - const sortDirection = sortColumn && sortColumn.sortDirection === SortDirection.ASC + if (sortColumn && sortColumn.sort) { + const sortDirection = sortColumn.sort.direction === SortDirection.ASC ? OrderDirection.ASC : OrderDirection.DESC; - const columnName = sortColumn && sortColumn.name === ProjectPanelColumnNames.NAME ? "name" : "createdAt"; return order - .addOrder(sortDirection, columnName, GroupContentsResourcePrefix.COLLECTION) - .addOrder(sortDirection, columnName, GroupContentsResourcePrefix.PROCESS) - .addOrder(sortDirection, columnName, GroupContentsResourcePrefix.PROJECT) + .addOrder(sortDirection, sortColumn.sort.field, GroupContentsResourcePrefix.COLLECTION) + .addOrder(sortDirection, sortColumn.sort.field, GroupContentsResourcePrefix.PROCESS) + .addOrder(sortDirection, sortColumn.sort.field, GroupContentsResourcePrefix.PROJECT) .getOrder(); } else { return order.getOrder();