//
// SPDX-License-Identifier: AGPL-3.0
-import * as React from 'react';
-import { WithStyles, withStyles, Typography, Tabs, Tab, Paper, Button, Grid } from '@material-ui/core';
-import { DataExplorer } from "~/views-components/data-explorer/data-explorer";
+import React from 'react';
+import { WithStyles, withStyles, Tabs, Tab, 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 { RootState } from '~/store/store';
-import { SortDirection } from '~/components/data-table/data-column';
-import { openContextMenu } from "~/store/context-menu/context-menu-actions";
-import { getResource, ResourcesState } from "~/store/resources/resources";
+import { DataColumns } from 'components/data-table/data-table';
+import { RootState } from 'store/store';
+import { SortDirection } from 'components/data-table/data-column';
+import { openContextMenu } from "store/context-menu/context-menu-actions";
+import { getResource, ResourcesState } from "store/resources/resources";
import {
ResourceFirstName,
ResourceLastName,
ResourceIsActive,
ResourceIsAdmin,
ResourceUsername
-} from "~/views-components/data-explorer/renderers";
-import { navigateTo } from "~/store/navigation/navigation-action";
-import { ContextMenuKind } from "~/views-components/context-menu/context-menu";
-import { DataTableDefaultView } from '~/components/data-table-default-view/data-table-default-view';
-import { createTree } from '~/models/tree';
+} from "views-components/data-explorer/renderers";
+import { navigateToUserProfile } from "store/navigation/navigation-action";
+import { ContextMenuKind } from "views-components/context-menu/context-menu";
+import { DataTableDefaultView } from 'components/data-table-default-view/data-table-default-view';
+import { createTree } from 'models/tree';
import { compose, Dispatch } from 'redux';
-import { UserResource } from '~/models/user';
-import { ShareMeIcon, AddIcon } from '~/components/icon/icon';
-import { USERS_PANEL_ID, openUserCreateDialog } from '~/store/users/users-actions';
+import { UserResource } from 'models/user';
+import { ShareMeIcon, AddIcon } from 'components/icon/icon';
+import { USERS_PANEL_ID, openUserCreateDialog } from 'store/users/users-actions';
+import { noop } from 'lodash';
-type UserPanelRules = "button";
+type UserPanelRules = "button" | 'root';
const styles = withStyles<UserPanelRules>(theme => ({
button: {
textAlign: 'right',
alignSelf: 'center'
},
+ root: {
+ width: '100%',
+ },
}));
export enum UserPanelColumnNames {
filters: createTree(),
render: uuid => <ResourceIsAdmin uuid={uuid} />
},
- {
- name: UserPanelColumnNames.REDIRECT_TO_USER,
- selected: true,
- configurable: false,
- sortDirection: SortDirection.NONE,
- filters: createTree(),
- render: () => <Typography noWrap>(none)</Typography>
- },
{
name: UserPanelColumnNames.USERNAME,
selected: true,
interface UserPanelActionProps {
openUserCreateDialog: () => void;
- handleRowDoubleClick: (uuid: string) => void;
+ handleRowClick: (uuid: string) => void;
onContextMenu: (event: React.MouseEvent<HTMLElement>, item: any) => void;
}
const mapDispatchToProps = (dispatch: Dispatch) => ({
openUserCreateDialog: () => dispatch<any>(openUserCreateDialog()),
- handleRowDoubleClick: (uuid: string) => dispatch<any>(navigateTo(uuid)),
+ handleRowClick: (uuid: string) => dispatch<any>(navigateToUserProfile(uuid)),
onContextMenu: (event: React.MouseEvent<HTMLElement>, item: any) => dispatch<any>(openContextMenu(event, item))
});
styles,
connect(mapStateToProps, mapDispatchToProps))(
class extends React.Component<UserPanelProps> {
- state = {
- value: 0,
- };
-
- componentDidMount() {
- this.setState({ value: 0 });
- }
-
render() {
- const { value } = this.state;
- return <Paper>
- <Tabs value={value} onChange={this.handleChange} fullWidth>
- <Tab label="USERS" />
- <Tab label="ACTIVITY" disabled />
- </Tabs>
- {value === 0 &&
- <span>
- <DataExplorer
- id={USERS_PANEL_ID}
- onRowClick={this.handleRowClick}
- onRowDoubleClick={this.handleRowDoubleClick}
- onContextMenu={this.handleContextMenu}
- contextMenuColumn={true}
- hideColumnSelector
- actions={
- <Grid container justify='flex-end'>
- <Button variant="contained" color="primary" onClick={this.props.openUserCreateDialog}>
- <AddIcon /> NEW USER
- </Button>
- </Grid>
- }
- paperProps={{
- elevation: 0,
- }}
- dataTableDefaultView={
- <DataTableDefaultView
- icon={ShareMeIcon}
- messages={['Your user list is empty.']} />
- } />
- </span>}
+ return <Paper className={this.props.classes.root}>
+ <DataExplorer
+ id={USERS_PANEL_ID}
+ onRowClick={this.props.handleRowClick}
+ onRowDoubleClick={noop}
+ onContextMenu={this.handleContextMenu}
+ contextMenuColumn={true}
+ hideColumnSelector
+ actions={
+ <Grid container justify='flex-end'>
+ <Button variant="contained" color="primary" onClick={this.props.openUserCreateDialog}>
+ <AddIcon /> NEW USER
+ </Button>
+ </Grid>
+ }
+ paperProps={{
+ elevation: 0,
+ }}
+ dataTableDefaultView={
+ <DataTableDefaultView
+ icon={ShareMeIcon}
+ messages={['Your user list is empty.']} />
+ } />
</Paper>;
}
- handleChange = (event: React.MouseEvent<HTMLElement>, value: number) => {
- this.setState({ value });
- }
-
handleContextMenu = (event: React.MouseEvent<HTMLElement>, resourceUuid: string) => {
+ event.stopPropagation();
const resource = getResource<UserResource>(resourceUuid)(this.props.resources);
if (resource) {
this.props.onContextMenu(event, {
});
}
}
-
- handleRowDoubleClick = (uuid: string) => {
- this.props.handleRowDoubleClick(uuid);
- }
-
- handleRowClick = () => {
- return;
- }
}
);