Merge pull request #974 from influxdata/feature/934-ew-admin-oss-role-hide

Remove roles on OSS and refactor tabs
pull/10616/head
Hunter Trujillo 2017-03-06 17:51:15 -07:00 committed by GitHub
commit 9a5d9a0650
3 changed files with 54 additions and 56 deletions

View File

@ -1,28 +1,10 @@
import React, {Component, PropTypes} from 'react' import React, {PropTypes} from 'react'
import {Tab, Tabs, TabPanel, TabPanels, TabList} from 'src/shared/components/Tabs'; import {Tab, Tabs, TabPanel, TabPanels, TabList} from 'src/shared/components/Tabs';
import UsersTable from 'src/admin/components/UsersTable' import UsersTable from 'src/admin/components/UsersTable'
import RolesTable from 'src/admin/components/RolesTable' import RolesTable from 'src/admin/components/RolesTable'
import QueriesPage from 'src/admin/containers/QueriesPage' import QueriesPage from 'src/admin/containers/QueriesPage'
const TABS = ['Users', 'Roles', 'Queries']; const AdminTabs = ({
class AdminTabs extends Component {
constructor(props) {
super(props)
this.state = {
activeTab: TABS[0],
}
this.handleActivateTab = this.handleActivateTab.bind(this)
}
handleActivateTab(activeIndex) {
this.setState({activeTab: TABS[activeIndex]})
}
render() {
const {
users, users,
roles, roles,
source, source,
@ -30,38 +12,48 @@ class AdminTabs extends Component {
onDeleteUser, onDeleteUser,
onFilterRoles, onFilterRoles,
onFilterUsers, onFilterUsers,
} = this.props }) => {
const hasRoles = !!source.links.roles
return ( let tabs = [
<Tabs onSelect={this.handleActivateTab}> {
<TabList> type: 'Users',
<Tab>{TABS[0]}</Tab> component: (<UsersTable
<Tab>{TABS[1]}</Tab>
<Tab>{TABS[2]}</Tab>
</TabList>
<TabPanels>
<TabPanel>
<UsersTable
users={users} users={users}
hasRoles={hasRoles}
onDelete={onDeleteUser} onDelete={onDeleteUser}
onFilter={onFilterUsers} onFilter={onFilterUsers}
/> />),
</TabPanel> },
<TabPanel> {
<RolesTable type: 'Roles',
roles={roles} component: (<RolesTable roles={roles} onDelete={onDeleteRole} onFilter={onFilterRoles} />),
onDelete={onDeleteRole} },
onFilter={onFilterRoles} {
/> type: 'Queries',
</TabPanel> component: (<QueriesPage source={source} />),
<TabPanel> },
<QueriesPage source={source} /> ]
</TabPanel>
if (!hasRoles) {
tabs = tabs.filter(t => t.type !== 'Roles')
}
return (
<Tabs>
<TabList>
{
tabs.map((t, i) => (<Tab key={tabs[i].type}>{tabs[i].type}</Tab>))
}
</TabList>
<TabPanels>
{
tabs.map((t, i) => (<TabPanel key={tabs[i].type}>{t.component}</TabPanel>))
}
</TabPanels> </TabPanels>
</Tabs> </Tabs>
) )
} }
}
const { const {
arrayOf, arrayOf,

View File

@ -17,6 +17,10 @@ class FilterBar extends Component {
) )
} }
componentWillUnmount() {
this.props.onFilter('')
}
render() { render() {
return ( return (
<div className="panel-heading u-flex u-ai-center u-jc-space-between"> <div className="panel-heading u-flex u-ai-center u-jc-space-between">

View File

@ -3,7 +3,7 @@ import UserRow from 'src/admin/components/UserRow'
import EmptyRow from 'src/admin/components/EmptyRow' import EmptyRow from 'src/admin/components/EmptyRow'
import FilterBar from 'src/admin/components/FilterBar' import FilterBar from 'src/admin/components/FilterBar'
const UsersTable = ({users, onDelete, onFilter}) => ( const UsersTable = ({users, hasRoles, onDelete, onFilter}) => (
<div className="panel panel-info"> <div className="panel panel-info">
<FilterBar name="Users" onFilter={onFilter} /> <FilterBar name="Users" onFilter={onFilter} />
<div className="panel-body"> <div className="panel-body">
@ -11,7 +11,7 @@ const UsersTable = ({users, onDelete, onFilter}) => (
<thead> <thead>
<tr> <tr>
<th>User</th> <th>User</th>
<th>Roles</th> {hasRoles && <th>Roles</th>}
<th>Permissions</th> <th>Permissions</th>
<th></th> <th></th>
</tr> </tr>
@ -31,6 +31,7 @@ const UsersTable = ({users, onDelete, onFilter}) => (
const { const {
arrayOf, arrayOf,
bool,
func, func,
shape, shape,
string, string,
@ -47,6 +48,7 @@ UsersTable.propTypes = {
scope: string.isRequired, scope: string.isRequired,
})), })),
})), })),
hasRoles: bool.isRequired,
onDelete: func.isRequired, onDelete: func.isRequired,
onFilter: func, onFilter: func,
} }