X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/4a055bfc98a5fc05cc311e2de1ab2213eec5497e..25216cc7acedc987c26a159f0b640210c0ef101e:/src/store/users/user-panel-middleware-service.ts?ds=sidebyside diff --git a/src/store/users/user-panel-middleware-service.ts b/src/store/users/user-panel-middleware-service.ts index 2f602093..4496cbd2 100644 --- a/src/store/users/user-panel-middleware-service.ts +++ b/src/store/users/user-panel-middleware-service.ts @@ -2,21 +2,21 @@ // // SPDX-License-Identifier: AGPL-3.0 -import { ServiceRepository } from '~/services/services'; +import { ServiceRepository } from 'services/services'; import { MiddlewareAPI, Dispatch } from 'redux'; -import { DataExplorerMiddlewareService, dataExplorerToListParams, listResultsToDataExplorerItemsMeta } from '~/store/data-explorer/data-explorer-middleware-service'; -import { RootState } from '~/store/store'; -import { snackbarActions, SnackbarKind } from '~/store/snackbar/snackbar-actions'; -import { DataExplorer, getDataExplorer } from '~/store/data-explorer/data-explorer-reducer'; -import { updateResources } from '~/store/resources/resources-actions'; -import { FilterBuilder } from '~/services/api/filter-builder'; -import { SortDirection } from '~/components/data-table/data-column'; -import { OrderDirection, OrderBuilder } from '~/services/api/order-builder'; -import { ListResults } from '~/services/common-service/common-resource-service'; -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 { DataExplorerMiddlewareService, dataExplorerToListParams, listResultsToDataExplorerItemsMeta } from 'store/data-explorer/data-explorer-middleware-service'; +import { RootState } from 'store/store'; +import { snackbarActions, SnackbarKind } from 'store/snackbar/snackbar-actions'; +import { DataExplorer, getDataExplorer } from 'store/data-explorer/data-explorer-reducer'; +import { updateResources } from 'store/resources/resources-actions'; +import { FilterBuilder } from 'services/api/filter-builder'; +import { SortDirection } from 'components/data-table/data-column'; +import { OrderDirection, OrderBuilder } from 'services/api/order-builder'; +import { ListResults } from 'services/common-service/common-service'; +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'; export class UserMiddlewareService extends DataExplorerMiddlewareService { constructor(private services: ServiceRepository, id: string) { @@ -27,24 +27,43 @@ export class UserMiddlewareService extends DataExplorerMiddlewareService { const state = api.getState(); const dataExplorer = getDataExplorer(state.dataExplorer, this.getId()); try { - const response = await this.services.userService.list(getParams(dataExplorer)); - api.dispatch(updateResources(response.items)); - api.dispatch(setItems(response)); + 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)); + } } catch { api.dispatch(couldNotFetchUsers()); } } } -export const getParams = (dataExplorer: DataExplorer) => ({ +const getParamsFirstName = (dataExplorer: DataExplorer) => ({ ...dataExplorerToListParams(dataExplorer), order: getOrder(dataExplorer), - filters: getFilters(dataExplorer) + filters: getFiltersFirstName(dataExplorer) }); -export const getFilters = (dataExplorer: DataExplorer) => { +const getParamsLastName = (dataExplorer: DataExplorer) => ({ + ...dataExplorerToListParams(dataExplorer), + order: getOrder(dataExplorer), + filters: getFiltersLastName(dataExplorer) +}); + +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("username", dataExplorer.searchValue) + .addILike("last_name", dataExplorer.searchValue) .getFilters(); return filters; };