diff --git a/ui/src/admin/components/AdminTabs.js b/ui/src/admin/components/AdminTabs.js index 99c7c42aa5..92bf869ed5 100644 --- a/ui/src/admin/components/AdminTabs.js +++ b/ui/src/admin/components/AdminTabs.js @@ -1,66 +1,58 @@ -import React, {Component, PropTypes} from 'react' +import React, {PropTypes} from 'react' import {Tab, Tabs, TabPanel, TabPanels, TabList} from 'src/shared/components/Tabs'; import UsersTable from 'src/admin/components/UsersTable' import RolesTable from 'src/admin/components/RolesTable' import QueriesPage from 'src/admin/containers/QueriesPage' -const TABS = ['Users', 'Roles', 'Queries']; +const AdminTabs = ({ + users, + roles, + source, + onDeleteRole, + onDeleteUser, + onFilterRoles, + onFilterUsers, +}) => { + const hasRoles = !!source.links.roles -class AdminTabs extends Component { - constructor(props) { - super(props) + let tabs = [ + { + type: 'Users', + component: (), + }, + { + type: 'Roles', + component: (), + }, + { + type: 'Queries', + component: (), + }, + ] - this.state = { - activeTab: TABS[0], - } - - this.handleActivateTab = this.handleActivateTab.bind(this) + if (!hasRoles) { + tabs = tabs.filter(t => t.type !== 'Roles') } - handleActivateTab(activeIndex) { - this.setState({activeTab: TABS[activeIndex]}) - } - - render() { - const { - users, - roles, - source, - onDeleteRole, - onDeleteUser, - onFilterRoles, - onFilterUsers, - } = this.props - - return ( - - - {TABS[0]} - {TABS[1]} - {TABS[2]} - - - - - - - - - - - - - - ) - } + return ( + + + { + tabs.map((t, i) => ({tabs[i].type})) + } + + + { + tabs.map((t, i) => ({t.component})) + } + + + ) } const { diff --git a/ui/src/admin/components/UsersTable.js b/ui/src/admin/components/UsersTable.js index d4a7f1920c..3a54861777 100644 --- a/ui/src/admin/components/UsersTable.js +++ b/ui/src/admin/components/UsersTable.js @@ -3,7 +3,7 @@ import UserRow from 'src/admin/components/UserRow' import EmptyRow from 'src/admin/components/EmptyRow' import FilterBar from 'src/admin/components/FilterBar' -const UsersTable = ({users, onDelete, onFilter}) => ( +const UsersTable = ({users, hasRoles, onDelete, onFilter}) => (
@@ -11,7 +11,7 @@ const UsersTable = ({users, onDelete, onFilter}) => ( User - Roles + {hasRoles && Roles} Permissions @@ -31,6 +31,7 @@ const UsersTable = ({users, onDelete, onFilter}) => ( const { arrayOf, + bool, func, shape, string, @@ -47,6 +48,7 @@ UsersTable.propTypes = { scope: string.isRequired, })), })), + hasRoles: bool.isRequired, onDelete: func.isRequired, onFilter: func, }