Update source for tag values

pull/10616/head
Andrew Watkins 2017-10-04 15:44:13 -07:00
parent 97ee2e3047
commit d76b1d0b0e
2 changed files with 27 additions and 8 deletions

View File

@ -8,6 +8,7 @@ import showTagKeysParser from 'shared/parsing/showTagKeys'
import showTagValuesParser from 'shared/parsing/showTagValues' import showTagValuesParser from 'shared/parsing/showTagValues'
const {string, shape, func, bool} = PropTypes const {string, shape, func, bool} = PropTypes
const TagList = React.createClass({ const TagList = React.createClass({
propTypes: { propTypes: {
query: shape({ query: shape({
@ -18,16 +19,27 @@ const TagList = React.createClass({
}).isRequired, }).isRequired,
onChooseTag: func.isRequired, onChooseTag: func.isRequired,
onGroupByTag: func.isRequired, onGroupByTag: func.isRequired,
querySource: shape({
links: shape({
proxy: string.isRequired,
}).isRequired,
}),
}, },
contextTypes: { contextTypes: {
source: PropTypes.shape({ source: shape({
links: PropTypes.shape({ links: shape({
proxy: PropTypes.string.isRequired, proxy: string.isRequired,
}).isRequired, }).isRequired,
}).isRequired, }).isRequired,
}, },
getDefaultProps() {
return {
querySource: null,
}
},
getInitialState() { getInitialState() {
return { return {
tags: {}, tags: {},
@ -37,9 +49,12 @@ const TagList = React.createClass({
_getTags() { _getTags() {
const {database, measurement, retentionPolicy} = this.props.query const {database, measurement, retentionPolicy} = this.props.query
const {source} = this.context const {source} = this.context
const sourceProxy = source.links.proxy const {querySource} = this.props
showTagKeys({source: sourceProxy, database, retentionPolicy, measurement}) const proxy =
_.get(querySource, ['links', 'proxy'], null) || source.links.proxy
showTagKeys({source: proxy, database, retentionPolicy, measurement})
.then(resp => { .then(resp => {
const {errors, tagKeys} = showTagKeysParser(resp.data) const {errors, tagKeys} = showTagKeysParser(resp.data)
if (errors.length) { if (errors.length) {
@ -47,7 +62,7 @@ const TagList = React.createClass({
} }
return showTagValues({ return showTagValues({
source: sourceProxy, source: proxy,
database, database,
retentionPolicy, retentionPolicy,
measurement, measurement,
@ -74,7 +89,9 @@ const TagList = React.createClass({
}, },
componentDidUpdate(prevProps) { componentDidUpdate(prevProps) {
const {database, measurement, retentionPolicy} = this.props.query const {query, querySource} = this.props
const {database, measurement, retentionPolicy} = query
const { const {
database: prevDB, database: prevDB,
measurement: prevMeas, measurement: prevMeas,
@ -87,7 +104,8 @@ const TagList = React.createClass({
if ( if (
database === prevDB && database === prevDB &&
measurement === prevMeas && measurement === prevMeas &&
retentionPolicy === prevRP retentionPolicy === prevRP &&
_.isEqual(prevProps.querySource, querySource)
) { ) {
return return
} }

View File

@ -182,6 +182,7 @@ const MeasurementList = React.createClass({
{isActive {isActive
? <TagList ? <TagList
query={this.props.query} query={this.props.query}
querySource={this.props.querySource}
onChooseTag={this.props.onChooseTag} onChooseTag={this.props.onChooseTag}
onGroupByTag={this.props.onGroupByTag} onGroupByTag={this.props.onGroupByTag}
/> />