Newer
Older
piotr.kupczyk@id.ethz.ch
committed
import React from 'react'
piotr.kupczyk@id.ethz.ch
committed
import { withStyles } from '@material-ui/core/styles'
piotr.kupczyk@id.ethz.ch
committed
import Content from '@src/js/components/common/content/Content.jsx'
piotr.kupczyk@id.ethz.ch
committed
import ContentTab from '@src/js/components/common/content/ContentTab.jsx'
import UserBrowser from '@src/js/components/users/browser/UserBrowser.jsx'
import UserSearch from '@src/js/components/users/search/UserSearch.jsx'
piotr.kupczyk@id.ethz.ch
committed
import UserForm from '@src/js/components/users/form/user/UserForm.jsx'
import UserGroupForm from '@src/js/components/users/form/usergroup/UserGroupForm.jsx'
piotr.kupczyk@id.ethz.ch
committed
import pages from '@src/js/common/consts/pages.js'
import objectType from '@src/js/common/consts/objectType.js'
import messages from '@src/js/common/messages.js'
import logger from '@src/js/common/logger.js'
piotr.kupczyk@id.ethz.ch
committed
const styles = () => ({
piotr.kupczyk@id.ethz.ch
committed
container: {
display: 'flex',
width: '100%'
piotr.kupczyk@id.ethz.ch
committed
}
piotr.kupczyk@id.ethz.ch
committed
})
class Users extends React.PureComponent {
piotr.kupczyk@id.ethz.ch
committed
render() {
logger.log(logger.DEBUG, 'Users.render')
const classes = this.props.classes
return (
piotr.kupczyk@id.ethz.ch
committed
<div className={classes.container}>
<UserBrowser />
piotr.kupczyk@id.ethz.ch
committed
<Content
page={pages.USERS}
renderComponent={this.renderComponent}
renderTab={this.renderTab}
piotr.kupczyk@id.ethz.ch
committed
/>
piotr.kupczyk@id.ethz.ch
committed
</div>
)
}
piotr.kupczyk@id.ethz.ch
committed
renderComponent(tab) {
const { object } = tab
piotr.kupczyk@id.ethz.ch
committed
if (
object.type === objectType.USER ||
object.type === objectType.NEW_USER
) {
return <UserForm object={object} />
} else if (
object.type === objectType.USER_GROUP ||
object.type === objectType.NEW_USER_GROUP
) {
return <UserGroupForm object={object} />
} else if (object.type === objectType.SEARCH) {
piotr.kupczyk@id.ethz.ch
committed
return <UserSearch searchText={object.id} />
} else if (object.type === objectType.OVERVIEW) {
return <UserSearch objectType={object.id} />
}
}
piotr.kupczyk@id.ethz.ch
committed
renderTab(tab) {
piotr.kupczyk@id.ethz.ch
committed
const { object, changed } = tab
piotr.kupczyk@id.ethz.ch
committed
piotr.kupczyk@id.ethz.ch
committed
let label = null
if (object.type === objectType.OVERVIEW) {
const labels = {
piotr.kupczyk@id.ethz.ch
committed
[objectType.USER]: messages.get(messages.USERS),
[objectType.USER_GROUP]: messages.get(messages.GROUPS)
piotr.kupczyk@id.ethz.ch
committed
}
label = labels[object.id]
} else {
const prefixes = {
piotr.kupczyk@id.ethz.ch
committed
[objectType.USER]: messages.get(messages.USER) + ': ',
[objectType.USER_GROUP]: messages.get(messages.GROUP) + ': ',
[objectType.NEW_USER]: messages.get(messages.NEW_USER) + ' ',
[objectType.NEW_USER_GROUP]: messages.get(messages.NEW_GROUP) + ' ',
[objectType.SEARCH]: messages.get(messages.SEARCH) + ': '
piotr.kupczyk@id.ethz.ch
committed
}
label = prefixes[object.type] + object.id
piotr.kupczyk@id.ethz.ch
committed
piotr.kupczyk@id.ethz.ch
committed
return <ContentTab label={label} changed={changed} />
piotr.kupczyk@id.ethz.ch
committed
}
export default withStyles(styles)(Users)