X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/74d27e4a497bd9bf66d31e1f4578f63d71fb4d87..a48138fa7227595bba0db267a4c37832cba9afa2:/src/store/groups-panel/groups-panel-middleware-service.ts diff --git a/src/store/groups-panel/groups-panel-middleware-service.ts b/src/store/groups-panel/groups-panel-middleware-service.ts index 3cfdf33d69..b5ef51b765 100644 --- a/src/store/groups-panel/groups-panel-middleware-service.ts +++ b/src/store/groups-panel/groups-panel-middleware-service.ts @@ -7,10 +7,14 @@ import { DataExplorerMiddlewareService, listResultsToDataExplorerItemsMeta, data import { RootState } from "~/store/store"; import { ServiceRepository } from "~/services/services"; import { snackbarActions, SnackbarKind } from '~/store/snackbar/snackbar-actions'; -import { getDataExplorer } from "~/store/data-explorer/data-explorer-reducer"; +import { getDataExplorer, getSortColumn } from "~/store/data-explorer/data-explorer-reducer"; import { GroupsPanelActions } from '~/store/groups-panel/groups-panel-actions'; import { FilterBuilder } from '~/services/api/filter-builder'; import { updateResources } from '~/store/resources/resources-actions'; +import { OrderBuilder, OrderDirection } from '~/services/api/order-builder'; +import { GroupResource, GroupClass } from '~/models/group'; +import { SortDirection } from '~/components/data-table/data-column'; +import { GroupsPanelColumnNames } from '~/views/groups-panel/groups-panel'; export class GroupsPanelMiddlewareService extends DataExplorerMiddlewareService { @@ -30,8 +34,19 @@ export class GroupsPanelMiddlewareService extends DataExplorerMiddlewareService try { + const order = new OrderBuilder(); + const sortColumn = getSortColumn(dataExplorer); + if (sortColumn) { + const direction = + sortColumn.sortDirection === SortDirection.ASC && sortColumn.name === GroupsPanelColumnNames.GROUP + ? OrderDirection.ASC + : OrderDirection.DESC; + + order.addOrder(direction, 'name'); + } + const filters = new FilterBuilder() - .addEqual('groupClass', null) + .addNotIn('groupClass', [GroupClass.PROJECT]) .addILike('name', dataExplorer.searchValue) .getFilters(); @@ -39,6 +54,7 @@ export class GroupsPanelMiddlewareService extends DataExplorerMiddlewareService .list({ ...dataExplorerToListParams(dataExplorer), filters, + order: order.getOrder(), }); api.dispatch(updateResources(response.items)); @@ -48,6 +64,16 @@ export class GroupsPanelMiddlewareService extends DataExplorerMiddlewareService items: response.items.map(item => item.uuid), })); + const permissions = await this.services.permissionService.list({ + + filters: new FilterBuilder() + .addIn('tailUuid', response.items.map(item => item.uuid)) + .getFilters() + + }); + + api.dispatch(updateResources(permissions.items)); + } catch (e) { @@ -60,7 +86,8 @@ export class GroupsPanelMiddlewareService extends DataExplorerMiddlewareService const groupsPanelDataExplorerIsNotSet = () => snackbarActions.OPEN_SNACKBAR({ - message: 'Groups panel is not ready.' + message: 'Groups panel is not ready.', + kind: SnackbarKind.ERROR }); const couldNotFetchFavoritesContents = () => @@ -68,3 +95,4 @@ const couldNotFetchFavoritesContents = () => message: 'Could not fetch groups.', kind: SnackbarKind.ERROR }); +