Make database list into a dropdown

Going to split these into 2 components
pull/1385/head
Alex P 2017-04-27 14:14:45 -07:00
parent 8752e1388f
commit fed24f191d
2 changed files with 22 additions and 18 deletions

View File

@ -1,21 +1,22 @@
import React, {PropTypes} from 'react'
import _ from 'lodash'
import classNames from 'classnames'
import {showDatabases, showRetentionPolicies} from 'shared/apis/metaQuery'
import showDatabasesParser from 'shared/parsing/showDatabases'
import showRetentionPoliciesParser from 'shared/parsing/showRetentionPolicies'
import Dropdown from 'shared/components/Dropdown'
const {func, shape, string} = PropTypes
const DatabaseList = React.createClass({
propTypes: {
query: PropTypes.shape({}).isRequired,
onChooseNamespace: PropTypes.func.isRequired,
query: shape({}).isRequired,
onChooseNamespace: func.isRequired,
},
contextTypes: {
source: PropTypes.shape({
links: PropTypes.shape({
proxy: PropTypes.string.isRequired,
source: shape({
links: shape({
proxy: string.isRequired,
}).isRequired,
}).isRequired,
},
@ -57,22 +58,19 @@ const DatabaseList = React.createClass({
},
render() {
const {onChooseNamespace, query} = this.props
const {query, onChooseNamespace} = this.props
const {namespaces} = this.state
return (
<div className="query-builder--column">
<div className="query-builder--heading">Databases</div>
<div className="query-builder--list">
{this.state.namespaces.map((namespace) => {
const {database, retentionPolicy} = namespace
const isActive = database === query.database && retentionPolicy === query.retentionPolicy
return (
<div className={classNames('query-builder--list-item', {active: isActive})} key={`${database}..${retentionPolicy}`} onClick={isActive ? null : _.wrap(namespace, onChooseNamespace)}>
{database}.{retentionPolicy}
</div>
)
})}
<Dropdown
className="dropdown-160 query-builder--db-dropdown"
items={namespaces.map(n => ({...n, text: `${n.database}.${n.retentionPolicy}`}))}
onChoose={onChooseNamespace}
selected={(query.database && query.retentionPolicy) ? `${query.database}.${query.retentionPolicy}` : 'Choose a DB & RP'}
/>
</div>
</div>
)

View File

@ -200,4 +200,10 @@
.query-builder--list-item:hover .group-by-tag,
.query-builder--list-item.active .group-by-tag {
visibility: visible;
}
.query-builder--db-dropdown {
display: inline-block;
}