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<UserResource>) =>
snackbarActions.OPEN_SNACKBAR({
message: 'Could not fetch users.',
kind: SnackbarKind.ERROR
- });
\ No newline at end of file
+ });
import { getUserFullname, getUserDisplayName, User, UserResource } from 'models/user';
import { toggleIsActive, toggleIsAdmin } from 'store/users/users-actions';
import { LinkClass, LinkResource } from 'models/link';
-import { navigateTo, navigateToGroupDetails } from 'store/navigation/navigation-action';
+import { navigateTo, navigateToGroupDetails, navigateToUserProfile } from 'store/navigation/navigation-action';
import { withResourceData } from 'views-components/data-explorer/with-resources';
import { CollectionResource } from 'models/collection';
import { IllegalNamingWarning } from 'components/warning/warning';
return resource || { lastName: '' };
})(renderLastName);
-const renderFullName = (item: { firstName: string, lastName: string }) =>
- <Typography noWrap>{(item.firstName + " " + item.lastName).trim()}</Typography>;
+const renderFullName = (dispatch: Dispatch ,item: { uuid: string, firstName: string, lastName: string }, link?: boolean) => {
+ const displayName = (item.firstName + " " + item.lastName).trim() || item.uuid;
+ return link ? <Typography noWrap
+ color="primary"
+ style={{ 'cursor': 'pointer' }}
+ onClick={() => dispatch<any>(navigateToUserProfile(item.uuid))}>
+ {displayName}
+ </Typography> :
+ <Typography noWrap>{displayName}</Typography>;
+}
-export const ResourceFullName = connect(
- (state: RootState, props: { uuid: string }) => {
+export const UserResourceFullName = connect(
+ (state: RootState, props: { uuid: string, link?: boolean }) => {
const resource = getResource<UserResource>(props.uuid)(state.resources);
- return resource || { firstName: '', lastName: '' };
- })(renderFullName);
+ return {item: resource || { uuid: '', firstName: '', lastName: '' }, link: props.link};
+ })((props: {item: {uuid: string, firstName: string, lastName: string}, link?: boolean} & DispatchProp<any>) => renderFullName(props.dispatch, props.item, props.link));
const renderUuid = (item: { uuid: string }) =>
// SPDX-License-Identifier: AGPL-3.0
import React from 'react';
-import { WithStyles, withStyles, Tabs, Tab, Paper, Button, Grid } from '@material-ui/core';
+import { WithStyles, withStyles, Paper, Button, Grid } from '@material-ui/core';
import { DataExplorer } from "views-components/data-explorer/data-explorer";
import { connect, DispatchProp } from 'react-redux';
import { DataColumns } from 'components/data-table/data-table';
import { openContextMenu } from "store/context-menu/context-menu-actions";
import { getResource, ResourcesState } from "store/resources/resources";
import {
- ResourceFirstName,
- ResourceLastName,
+ UserResourceFullName,
ResourceUuid,
ResourceEmail,
ResourceIsActive,
}));
export enum UserPanelColumnNames {
- FIRST_NAME = "First Name",
- LAST_NAME = "Last Name",
+ NAME = "First Name",
UUID = "Uuid",
EMAIL = "Email",
ACTIVE = "Active",
export const userPanelColumns: DataColumns<string> = [
{
- name: UserPanelColumnNames.FIRST_NAME,
+ name: UserPanelColumnNames.NAME,
selected: true,
configurable: true,
sortDirection: SortDirection.NONE,
filters: createTree(),
- render: uuid => <ResourceFirstName uuid={uuid} />
- },
- {
- name: UserPanelColumnNames.LAST_NAME,
- selected: true,
- configurable: true,
- sortDirection: SortDirection.NONE,
- filters: createTree(),
- render: uuid => <ResourceLastName uuid={uuid} />
+ render: uuid => <UserResourceFullName uuid={uuid} link={true} />
},
{
name: UserPanelColumnNames.UUID,
name: UserPanelColumnNames.ACTIVE,
selected: true,
configurable: true,
- sortDirection: SortDirection.NONE,
filters: createTree(),
render: uuid => <ResourceIsActive uuid={uuid} />
},
name: UserPanelColumnNames.ADMIN,
selected: true,
configurable: false,
- sortDirection: SortDirection.NONE,
filters: createTree(),
render: uuid => <ResourceIsAdmin uuid={uuid} />
},
return <Paper className={this.props.classes.root}>
<DataExplorer
id={USERS_PANEL_ID}
- onRowClick={this.props.handleRowClick}
+ onRowClick={noop}
onRowDoubleClick={noop}
onContextMenu={this.handleContextMenu}
contextMenuColumn={true}