X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/38d27e9783f7f760cee84cc225e86144069848c4..cc70636e87a68db6a6af296a924e66e78578280a:/src/store/users/user-panel-middleware-service.ts diff --git a/src/store/users/user-panel-middleware-service.ts b/src/store/users/user-panel-middleware-service.ts index 4496cbd2..c0589a60 100644 --- a/src/store/users/user-panel-middleware-service.ts +++ b/src/store/users/user-panel-middleware-service.ts @@ -17,6 +17,8 @@ import { userBindedActions } from 'store/users/users-actions'; import { getSortColumn } from "store/data-explorer/data-explorer-reducer"; import { UserResource } from 'models/user'; import { UserPanelColumnNames } from 'views/user-panel/user-panel'; +import { BuiltinGroups, getBuiltinGroupUuid } from 'models/group'; +import { LinkClass } from 'models/link'; export class UserMiddlewareService extends DataExplorerMiddlewareService { constructor(private services: ServiceRepository, id: string) { @@ -27,47 +29,33 @@ export class UserMiddlewareService extends DataExplorerMiddlewareService { const state = api.getState(); const dataExplorer = getDataExplorer(state.dataExplorer, this.getId()); try { - const responseFirstName = await this.services.userService.list(getParamsFirstName(dataExplorer)); - if (responseFirstName.itemsAvailable) { - api.dispatch(updateResources(responseFirstName.items)); - api.dispatch(setItems(responseFirstName)); - } else { - const responseLastName = await this.services.userService.list(getParamsLastName(dataExplorer)); - api.dispatch(updateResources(responseLastName.items)); - api.dispatch(setItems(responseLastName)); - } + const users = await this.services.userService.list(getParams(dataExplorer)); + api.dispatch(updateResources(users.items)); + api.dispatch(setItems(users)); + + // Get "all users" group memberships + const allUsersGroupUuid = getBuiltinGroupUuid(state.auth.localCluster, BuiltinGroups.ALL); + const allUserMemberships = await this.services.permissionService.list({ + filters: new FilterBuilder() + .addEqual('head_uuid', allUsersGroupUuid) + .addEqual('link_class', LinkClass.PERMISSION) + .getFilters() + }); + api.dispatch(updateResources(allUserMemberships.items)); } catch { api.dispatch(couldNotFetchUsers()); } } } -const getParamsFirstName = (dataExplorer: DataExplorer) => ({ - ...dataExplorerToListParams(dataExplorer), - order: getOrder(dataExplorer), - filters: getFiltersFirstName(dataExplorer) -}); - -const getParamsLastName = (dataExplorer: DataExplorer) => ({ +const getParams = (dataExplorer: DataExplorer) => ({ ...dataExplorerToListParams(dataExplorer), order: getOrder(dataExplorer), - filters: getFiltersLastName(dataExplorer) + filters: new FilterBuilder() + .addFullTextSearch(dataExplorer.searchValue) + .getFilters() }); -const getFiltersFirstName = (dataExplorer: DataExplorer) => { - const filters = new FilterBuilder() - .addILike("first_name", dataExplorer.searchValue) - .getFilters(); - return filters; -}; - -const getFiltersLastName = (dataExplorer: DataExplorer) => { - const filters = new FilterBuilder() - .addILike("last_name", dataExplorer.searchValue) - .getFilters(); - return filters; -}; - export const getOrder = (dataExplorer: DataExplorer) => { const sortColumn = getSortColumn(dataExplorer); const order = new OrderBuilder(); @@ -75,13 +63,23 @@ export const getOrder = (dataExplorer: DataExplorer) => { const sortDirection = sortColumn && sortColumn.sortDirection === SortDirection.ASC ? OrderDirection.ASC : OrderDirection.DESC; - const columnName = sortColumn && sortColumn.name === UserPanelColumnNames.LAST_NAME ? "lastName" : "firstName"; - return order - .addOrder(sortDirection, columnName) - .getOrder(); - } else { - return order.getOrder(); + switch (sortColumn.name) { + case UserPanelColumnNames.NAME: + order.addOrder(sortDirection, "firstName") + .addOrder(sortDirection, "lastName"); + break; + case UserPanelColumnNames.UUID: + order.addOrder(sortDirection, "uuid"); + break; + case UserPanelColumnNames.EMAIL: + order.addOrder(sortDirection, "email"); + break; + case UserPanelColumnNames.USERNAME: + order.addOrder(sortDirection, "username"); + break; + } } + return order.getOrder(); }; export const setItems = (listResults: ListResults) => @@ -94,4 +92,4 @@ const couldNotFetchUsers = () => snackbarActions.OPEN_SNACKBAR({ message: 'Could not fetch users.', kind: SnackbarKind.ERROR - }); \ No newline at end of file + });