Implement SubSections in Chronograf admin page
parent
5a1b6a5698
commit
1589282891
|
@ -2,10 +2,52 @@ import React from 'react'
|
||||||
import PropTypes from 'prop-types'
|
import PropTypes from 'prop-types'
|
||||||
import {connect} from 'react-redux'
|
import {connect} from 'react-redux'
|
||||||
|
|
||||||
import AdminTabs from 'src/admin/components/chronograf/AdminTabs'
|
import SubSections from 'src/shared/components/SubSections'
|
||||||
import FancyScrollbar from 'shared/components/FancyScrollbar'
|
import FancyScrollbar from 'shared/components/FancyScrollbar'
|
||||||
|
|
||||||
const AdminChronografPage = ({me}) => (
|
import UsersPage from 'src/admin/containers/chronograf/UsersPage'
|
||||||
|
import AllUsersPage from 'src/admin/containers/chronograf/AllUsersPage'
|
||||||
|
import OrganizationsPage from 'src/admin/containers/chronograf/OrganizationsPage'
|
||||||
|
import ProvidersPage from 'src/admin/containers/ProvidersPage'
|
||||||
|
|
||||||
|
import {
|
||||||
|
isUserAuthorized,
|
||||||
|
ADMIN_ROLE,
|
||||||
|
SUPERADMIN_ROLE,
|
||||||
|
} from 'src/auth/Authorized'
|
||||||
|
|
||||||
|
const sections = me => [
|
||||||
|
{
|
||||||
|
url: 'current-organization',
|
||||||
|
name: 'Current Org',
|
||||||
|
enabled: isUserAuthorized(me.role, ADMIN_ROLE),
|
||||||
|
component: (
|
||||||
|
<UsersPage meID={me.id} meCurrentOrganization={me.currentOrganization} />
|
||||||
|
),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
url: 'all-users',
|
||||||
|
name: 'All Users',
|
||||||
|
enabled: isUserAuthorized(me.role, SUPERADMIN_ROLE),
|
||||||
|
component: <AllUsersPage meID={me.id} />,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
url: 'all-organizations',
|
||||||
|
name: 'All Orgs',
|
||||||
|
enabled: isUserAuthorized(me.role, SUPERADMIN_ROLE),
|
||||||
|
component: (
|
||||||
|
<OrganizationsPage meCurrentOrganization={me.currentOrganization} />
|
||||||
|
),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
url: 'organization-mappings',
|
||||||
|
name: 'Org Mappings',
|
||||||
|
enabled: isUserAuthorized(me.role, SUPERADMIN_ROLE),
|
||||||
|
component: <ProvidersPage />,
|
||||||
|
},
|
||||||
|
]
|
||||||
|
|
||||||
|
const AdminChronografPage = ({me, source, params: {tab}}) => (
|
||||||
<div className="page">
|
<div className="page">
|
||||||
<div className="page-header">
|
<div className="page-header">
|
||||||
<div className="page-header__container">
|
<div className="page-header__container">
|
||||||
|
@ -16,9 +58,12 @@ const AdminChronografPage = ({me}) => (
|
||||||
</div>
|
</div>
|
||||||
<FancyScrollbar className="page-contents">
|
<FancyScrollbar className="page-contents">
|
||||||
<div className="container-fluid">
|
<div className="container-fluid">
|
||||||
<div className="row">
|
<SubSections
|
||||||
<AdminTabs me={me} />
|
sections={sections(me)}
|
||||||
</div>
|
activeSection={tab}
|
||||||
|
parentUrl="admin-chronograf"
|
||||||
|
sourceID={source.id}
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
</FancyScrollbar>
|
</FancyScrollbar>
|
||||||
</div>
|
</div>
|
||||||
|
@ -35,6 +80,15 @@ AdminChronografPage.propTypes = {
|
||||||
id: string.isRequired,
|
id: string.isRequired,
|
||||||
}),
|
}),
|
||||||
}).isRequired,
|
}).isRequired,
|
||||||
|
params: shape({
|
||||||
|
tab: string,
|
||||||
|
}).isRequired,
|
||||||
|
source: shape({
|
||||||
|
id: string.isRequired,
|
||||||
|
links: shape({
|
||||||
|
users: string.isRequired,
|
||||||
|
}),
|
||||||
|
}).isRequired,
|
||||||
}
|
}
|
||||||
|
|
||||||
const mapStateToProps = ({auth: {me}}) => ({
|
const mapStateToProps = ({auth: {me}}) => ({
|
||||||
|
|
|
@ -146,7 +146,10 @@ class Root extends PureComponent<{}, State> {
|
||||||
path="kapacitors/:id/edit:hash"
|
path="kapacitors/:id/edit:hash"
|
||||||
component={KapacitorPage}
|
component={KapacitorPage}
|
||||||
/>
|
/>
|
||||||
<Route path="admin-chronograf" component={AdminChronografPage} />
|
<Route
|
||||||
|
path="admin-chronograf/:tab"
|
||||||
|
component={AdminChronografPage}
|
||||||
|
/>
|
||||||
<Route path="admin-influxdb/:tab" component={AdminInfluxDBPage} />
|
<Route path="admin-influxdb/:tab" component={AdminInfluxDBPage} />
|
||||||
<Route path="manage-sources" component={ManageSources} />
|
<Route path="manage-sources" component={ManageSources} />
|
||||||
<Route path="manage-sources/new" component={SourcePage} />
|
<Route path="manage-sources/new" component={SourcePage} />
|
||||||
|
|
|
@ -122,14 +122,16 @@ class SideNav extends PureComponent<Props> {
|
||||||
<NavBlock
|
<NavBlock
|
||||||
highlightWhen={['admin-chronograf', 'admin-influxdb']}
|
highlightWhen={['admin-chronograf', 'admin-influxdb']}
|
||||||
icon="crown2"
|
icon="crown2"
|
||||||
link={`${sourcePrefix}/admin-chronograf`}
|
link={`${sourcePrefix}/admin-chronograf/current-organization`}
|
||||||
location={location}
|
location={location}
|
||||||
>
|
>
|
||||||
<NavHeader
|
<NavHeader
|
||||||
link={`${sourcePrefix}/admin-chronograf`}
|
link={`${sourcePrefix}/admin-chronograf/current-organization`}
|
||||||
title="Admin"
|
title="Admin"
|
||||||
/>
|
/>
|
||||||
<NavListItem link={`${sourcePrefix}/admin-chronograf`}>
|
<NavListItem
|
||||||
|
link={`${sourcePrefix}/admin-chronograf/current-organization`}
|
||||||
|
>
|
||||||
Chronograf
|
Chronograf
|
||||||
</NavListItem>
|
</NavListItem>
|
||||||
<NavListItem link={`${sourcePrefix}/admin-influxdb/databases`}>
|
<NavListItem link={`${sourcePrefix}/admin-influxdb/databases`}>
|
||||||
|
@ -163,9 +165,7 @@ class SideNav extends PureComponent<Props> {
|
||||||
|
|
||||||
const mapStateToProps = ({
|
const mapStateToProps = ({
|
||||||
auth: {isUsingAuth, logoutLink, me},
|
auth: {isUsingAuth, logoutLink, me},
|
||||||
app: {
|
app: {ephemeral: {inPresentationMode}},
|
||||||
ephemeral: {inPresentationMode},
|
|
||||||
},
|
|
||||||
links,
|
links,
|
||||||
}) => ({
|
}) => ({
|
||||||
isHidden: inPresentationMode,
|
isHidden: inPresentationMode,
|
||||||
|
|
Loading…
Reference in New Issue