Refactor template builders to use template values
Refactors template builders to take an onChoose prop passed by the TemplateVariableEditor and to utilize template.values for rendering template preview list to gain access to what values are selected.pull/3802/head
parent
32e28ca94e
commit
393ae0f721
|
@ -6,7 +6,6 @@ import TemplatePreviewList from 'src/tempVars/components/TemplatePreviewList'
|
||||||
import {TemplateBuilderProps, TemplateValueType} from 'src/types'
|
import {TemplateBuilderProps, TemplateValueType} from 'src/types'
|
||||||
|
|
||||||
interface State {
|
interface State {
|
||||||
templateValues: string[]
|
|
||||||
templateValuesString: string
|
templateValuesString: string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -18,14 +17,14 @@ class CSVTemplateBuilder extends PureComponent<TemplateBuilderProps, State> {
|
||||||
const templateValues = props.template.values.map(v => v.value)
|
const templateValues = props.template.values.map(v => v.value)
|
||||||
|
|
||||||
this.state = {
|
this.state = {
|
||||||
templateValues,
|
|
||||||
templateValuesString: templateValues.join(', '),
|
templateValuesString: templateValues.join(', '),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public render() {
|
public render() {
|
||||||
const {templateValues, templateValuesString} = this.state
|
const {onChooseValue, template} = this.props
|
||||||
const pluralizer = templateValues.length === 1 ? '' : 's'
|
const {templateValuesString} = this.state
|
||||||
|
const pluralizer = template.values.length === 1 ? '' : 's'
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="temp-builder csv-temp-builder">
|
<div className="temp-builder csv-temp-builder">
|
||||||
|
@ -42,14 +41,14 @@ class CSVTemplateBuilder extends PureComponent<TemplateBuilderProps, State> {
|
||||||
</div>
|
</div>
|
||||||
<div className="temp-builder-results">
|
<div className="temp-builder-results">
|
||||||
<p>
|
<p>
|
||||||
CSV contains <strong>{templateValues.length}</strong> value{
|
CSV contains <strong>{template.values.length}</strong> value{
|
||||||
pluralizer
|
pluralizer
|
||||||
}
|
}
|
||||||
</p>
|
</p>
|
||||||
{templateValues.length > 0 && (
|
{template.values.length > 0 && (
|
||||||
<TemplatePreviewList
|
<TemplatePreviewList
|
||||||
items={templateValues}
|
items={template.values}
|
||||||
onChoose={this.handleChooseCSVValue}
|
onChoose={onChooseValue}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
@ -73,8 +72,6 @@ class CSVTemplateBuilder extends PureComponent<TemplateBuilderProps, State> {
|
||||||
templateValues = templateValuesString.split(',').map(s => s.trim())
|
templateValues = templateValuesString.split(',').map(s => s.trim())
|
||||||
}
|
}
|
||||||
|
|
||||||
this.setState({templateValues})
|
|
||||||
|
|
||||||
const nextValues = templateValues.map(value => {
|
const nextValues = templateValues.map(value => {
|
||||||
return {
|
return {
|
||||||
type: TemplateValueType.CSV,
|
type: TemplateValueType.CSV,
|
||||||
|
@ -89,21 +86,6 @@ class CSVTemplateBuilder extends PureComponent<TemplateBuilderProps, State> {
|
||||||
|
|
||||||
onUpdateTemplate({...template, values: nextValues})
|
onUpdateTemplate({...template, values: nextValues})
|
||||||
}
|
}
|
||||||
|
|
||||||
private handleChooseCSVValue = (csvValue: string) => {
|
|
||||||
const {template, onUpdateTemplate} = this.props
|
|
||||||
const {templateValues} = this.state
|
|
||||||
|
|
||||||
const nextValues = templateValues.map(value => {
|
|
||||||
return {
|
|
||||||
type: TemplateValueType.CSV,
|
|
||||||
value,
|
|
||||||
selected: value === csvValue,
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
onUpdateTemplate({...template, values: nextValues})
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export default CSVTemplateBuilder
|
export default CSVTemplateBuilder
|
||||||
|
|
|
@ -12,7 +12,6 @@ import {
|
||||||
} from 'src/types'
|
} from 'src/types'
|
||||||
|
|
||||||
interface State {
|
interface State {
|
||||||
databases: string[]
|
|
||||||
databasesStatus: RemoteDataState
|
databasesStatus: RemoteDataState
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -25,7 +24,6 @@ class DatabasesTemplateBuilder extends PureComponent<
|
||||||
super(props)
|
super(props)
|
||||||
|
|
||||||
this.state = {
|
this.state = {
|
||||||
databases: [],
|
|
||||||
databasesStatus: RemoteDataState.Loading,
|
databasesStatus: RemoteDataState.Loading,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -35,7 +33,8 @@ class DatabasesTemplateBuilder extends PureComponent<
|
||||||
}
|
}
|
||||||
|
|
||||||
public render() {
|
public render() {
|
||||||
const {databases, databasesStatus} = this.state
|
const {template, onChooseValue} = this.props
|
||||||
|
const {databasesStatus} = this.state
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="temp-builder databases-temp-builder">
|
<div className="temp-builder databases-temp-builder">
|
||||||
|
@ -46,9 +45,9 @@ class DatabasesTemplateBuilder extends PureComponent<
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<TemplateMetaQueryPreview
|
<TemplateMetaQueryPreview
|
||||||
items={databases}
|
items={template.values}
|
||||||
loadingStatus={databasesStatus}
|
loadingStatus={databasesStatus}
|
||||||
onChoose={this.handleChooseDatabaseValue}
|
onChoose={onChooseValue}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
|
@ -63,10 +62,7 @@ class DatabasesTemplateBuilder extends PureComponent<
|
||||||
const {data} = await showDatabases(source.links.proxy)
|
const {data} = await showDatabases(source.links.proxy)
|
||||||
const {databases} = parseShowDatabases(data)
|
const {databases} = parseShowDatabases(data)
|
||||||
|
|
||||||
this.setState({
|
this.setState({databasesStatus: RemoteDataState.Done})
|
||||||
databases,
|
|
||||||
databasesStatus: RemoteDataState.Done,
|
|
||||||
})
|
|
||||||
|
|
||||||
const nextValues = databases.map(db => {
|
const nextValues = databases.map(db => {
|
||||||
return {
|
return {
|
||||||
|
@ -90,21 +86,6 @@ class DatabasesTemplateBuilder extends PureComponent<
|
||||||
this.setState({databasesStatus: RemoteDataState.Error})
|
this.setState({databasesStatus: RemoteDataState.Error})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private handleChooseDatabaseValue = (dbValue: string) => {
|
|
||||||
const {template, onUpdateTemplate} = this.props
|
|
||||||
const {databases} = this.state
|
|
||||||
|
|
||||||
const nextValues = databases.map(value => {
|
|
||||||
return {
|
|
||||||
type: TemplateValueType.Database,
|
|
||||||
value,
|
|
||||||
selected: value === dbValue,
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
onUpdateTemplate({...template, values: nextValues})
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export default DatabasesTemplateBuilder
|
export default DatabasesTemplateBuilder
|
||||||
|
|
|
@ -21,7 +21,7 @@ const fetchKeys = async (source, db, measurement): Promise<string[]> => {
|
||||||
|
|
||||||
class FieldKeysTemplateBuilder extends PureComponent<TemplateBuilderProps> {
|
class FieldKeysTemplateBuilder extends PureComponent<TemplateBuilderProps> {
|
||||||
public render() {
|
public render() {
|
||||||
const {template, source, onUpdateTemplate} = this.props
|
const {template, source, onUpdateTemplate, onChooseValue} = this.props
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<KeysTemplateBuilder
|
<KeysTemplateBuilder
|
||||||
|
@ -31,6 +31,7 @@ class FieldKeysTemplateBuilder extends PureComponent<TemplateBuilderProps> {
|
||||||
template={template}
|
template={template}
|
||||||
source={source}
|
source={source}
|
||||||
onUpdateTemplate={onUpdateTemplate}
|
onUpdateTemplate={onUpdateTemplate}
|
||||||
|
onChooseValue={onChooseValue}
|
||||||
/>
|
/>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,7 +33,6 @@ interface State {
|
||||||
measurements: string[]
|
measurements: string[]
|
||||||
measurementsStatus: RemoteDataState
|
measurementsStatus: RemoteDataState
|
||||||
selectedMeasurement: string
|
selectedMeasurement: string
|
||||||
keys: string[]
|
|
||||||
keysStatus: RemoteDataState
|
keysStatus: RemoteDataState
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -52,7 +51,6 @@ class KeysTemplateBuilder extends PureComponent<Props, State> {
|
||||||
measurements: [],
|
measurements: [],
|
||||||
measurementsStatus: RemoteDataState.Loading,
|
measurementsStatus: RemoteDataState.Loading,
|
||||||
selectedMeasurement,
|
selectedMeasurement,
|
||||||
keys: [],
|
|
||||||
keysStatus: RemoteDataState.Loading,
|
keysStatus: RemoteDataState.Loading,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -64,7 +62,7 @@ class KeysTemplateBuilder extends PureComponent<Props, State> {
|
||||||
}
|
}
|
||||||
|
|
||||||
public render() {
|
public render() {
|
||||||
const {queryPrefix} = this.props
|
const {queryPrefix, template, onChooseValue} = this.props
|
||||||
const {
|
const {
|
||||||
databases,
|
databases,
|
||||||
databasesStatus,
|
databasesStatus,
|
||||||
|
@ -72,7 +70,6 @@ class KeysTemplateBuilder extends PureComponent<Props, State> {
|
||||||
measurements,
|
measurements,
|
||||||
measurementsStatus,
|
measurementsStatus,
|
||||||
selectedMeasurement,
|
selectedMeasurement,
|
||||||
keys,
|
|
||||||
keysStatus,
|
keysStatus,
|
||||||
} = this.state
|
} = this.state
|
||||||
|
|
||||||
|
@ -102,9 +99,9 @@ class KeysTemplateBuilder extends PureComponent<Props, State> {
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<TemplateMetaQueryPreview
|
<TemplateMetaQueryPreview
|
||||||
items={keys}
|
items={template.values}
|
||||||
loadingStatus={keysStatus}
|
loadingStatus={keysStatus}
|
||||||
onChoose={this.handleChooseKeyValue}
|
onChoose={onChooseValue}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
|
@ -182,10 +179,7 @@ class KeysTemplateBuilder extends PureComponent<Props, State> {
|
||||||
selectedMeasurement
|
selectedMeasurement
|
||||||
)
|
)
|
||||||
|
|
||||||
this.setState({
|
this.setState({keysStatus: RemoteDataState.Done})
|
||||||
keys,
|
|
||||||
keysStatus: RemoteDataState.Done,
|
|
||||||
})
|
|
||||||
|
|
||||||
const nextValues = keys.map(value => {
|
const nextValues = keys.map(value => {
|
||||||
return {
|
return {
|
||||||
|
@ -206,21 +200,6 @@ class KeysTemplateBuilder extends PureComponent<Props, State> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private handleChooseKeyValue = (keyValue: string) => {
|
|
||||||
const {template, onUpdateTemplate, templateValueType} = this.props
|
|
||||||
const {keys} = this.state
|
|
||||||
|
|
||||||
const nextValues = keys.map(value => {
|
|
||||||
return {
|
|
||||||
type: templateValueType,
|
|
||||||
value,
|
|
||||||
selected: value === keyValue,
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
onUpdateTemplate({...template, values: nextValues})
|
|
||||||
}
|
|
||||||
|
|
||||||
private handleChooseDatabaseDropdown = ({text}) => {
|
private handleChooseDatabaseDropdown = ({text}) => {
|
||||||
this.handleChooseDatabase(text)
|
this.handleChooseDatabase(text)
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,7 +19,6 @@ interface State {
|
||||||
databases: string[]
|
databases: string[]
|
||||||
databasesStatus: RemoteDataState
|
databasesStatus: RemoteDataState
|
||||||
selectedDatabase: string
|
selectedDatabase: string
|
||||||
measurements: string[]
|
|
||||||
measurementsStatus: RemoteDataState
|
measurementsStatus: RemoteDataState
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -37,7 +36,6 @@ class MeasurementsTemplateBuilder extends PureComponent<
|
||||||
databases: [],
|
databases: [],
|
||||||
databasesStatus: RemoteDataState.Loading,
|
databasesStatus: RemoteDataState.Loading,
|
||||||
selectedDatabase,
|
selectedDatabase,
|
||||||
measurements: [],
|
|
||||||
measurementsStatus: RemoteDataState.Loading,
|
measurementsStatus: RemoteDataState.Loading,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -48,11 +46,11 @@ class MeasurementsTemplateBuilder extends PureComponent<
|
||||||
}
|
}
|
||||||
|
|
||||||
public render() {
|
public render() {
|
||||||
|
const {template, onChooseValue} = this.props
|
||||||
const {
|
const {
|
||||||
databases,
|
databases,
|
||||||
databasesStatus,
|
databasesStatus,
|
||||||
selectedDatabase,
|
selectedDatabase,
|
||||||
measurements,
|
|
||||||
measurementsStatus,
|
measurementsStatus,
|
||||||
} = this.state
|
} = this.state
|
||||||
|
|
||||||
|
@ -73,9 +71,9 @@ class MeasurementsTemplateBuilder extends PureComponent<
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<TemplateMetaQueryPreview
|
<TemplateMetaQueryPreview
|
||||||
items={measurements}
|
items={template.values}
|
||||||
loadingStatus={measurementsStatus}
|
loadingStatus={measurementsStatus}
|
||||||
onChoose={this.handleChooseMeasurementValue}
|
onChoose={onChooseValue}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
|
@ -120,10 +118,7 @@ class MeasurementsTemplateBuilder extends PureComponent<
|
||||||
|
|
||||||
const measurements = _.get(measurementSets, '0.measurements', [])
|
const measurements = _.get(measurementSets, '0.measurements', [])
|
||||||
|
|
||||||
this.setState({
|
this.setState({measurementsStatus: RemoteDataState.Done})
|
||||||
measurements,
|
|
||||||
measurementsStatus: RemoteDataState.Done,
|
|
||||||
})
|
|
||||||
|
|
||||||
const nextValues = measurements.map(value => {
|
const nextValues = measurements.map(value => {
|
||||||
return {
|
return {
|
||||||
|
@ -144,21 +139,6 @@ class MeasurementsTemplateBuilder extends PureComponent<
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private handleChooseMeasurementValue = (measurementValue: string) => {
|
|
||||||
const {template, onUpdateTemplate} = this.props
|
|
||||||
const {measurements} = this.state
|
|
||||||
|
|
||||||
const nextValues = measurements.map(value => {
|
|
||||||
return {
|
|
||||||
type: TemplateValueType.Measurement,
|
|
||||||
value,
|
|
||||||
selected: value === measurementValue,
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
onUpdateTemplate({...template, values: nextValues})
|
|
||||||
}
|
|
||||||
|
|
||||||
private handleChooseDatabaseDropdown = ({text}) => {
|
private handleChooseDatabaseDropdown = ({text}) => {
|
||||||
this.handleChooseDatabase(text)
|
this.handleChooseDatabase(text)
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,7 +18,6 @@ const DEBOUNCE_DELAY = 750
|
||||||
interface State {
|
interface State {
|
||||||
metaQueryInput: string // bound to input
|
metaQueryInput: string // bound to input
|
||||||
metaQuery: string // debounced view of metaQueryInput
|
metaQuery: string // debounced view of metaQueryInput
|
||||||
metaQueryResults: string[]
|
|
||||||
metaQueryResultsStatus: RemoteDataState
|
metaQueryResultsStatus: RemoteDataState
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -45,7 +44,6 @@ class CustomMetaQueryTemplateBuilder extends PureComponent<
|
||||||
this.state = {
|
this.state = {
|
||||||
metaQuery,
|
metaQuery,
|
||||||
metaQueryInput: metaQuery,
|
metaQueryInput: metaQuery,
|
||||||
metaQueryResults: [],
|
|
||||||
metaQueryResultsStatus: RemoteDataState.NotStarted,
|
metaQueryResultsStatus: RemoteDataState.NotStarted,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -76,7 +74,8 @@ class CustomMetaQueryTemplateBuilder extends PureComponent<
|
||||||
}
|
}
|
||||||
|
|
||||||
private renderResults() {
|
private renderResults() {
|
||||||
const {metaQueryResults, metaQueryResultsStatus} = this.state
|
const {template, onChooseValue} = this.props
|
||||||
|
const {metaQueryResultsStatus} = this.state
|
||||||
|
|
||||||
if (this.showInvalidMetaQueryMessage) {
|
if (this.showInvalidMetaQueryMessage) {
|
||||||
return (
|
return (
|
||||||
|
@ -88,9 +87,9 @@ class CustomMetaQueryTemplateBuilder extends PureComponent<
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<TemplateMetaQueryPreview
|
<TemplateMetaQueryPreview
|
||||||
items={metaQueryResults}
|
items={template.values}
|
||||||
loadingStatus={metaQueryResultsStatus}
|
loadingStatus={metaQueryResultsStatus}
|
||||||
onChoose={this.handleChooseQueryValue}
|
onChoose={onChooseValue}
|
||||||
/>
|
/>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -132,10 +131,7 @@ class CustomMetaQueryTemplateBuilder extends PureComponent<
|
||||||
|
|
||||||
const metaQueryResults = parseMetaQuery(metaQuery, data)
|
const metaQueryResults = parseMetaQuery(metaQuery, data)
|
||||||
|
|
||||||
this.setState({
|
this.setState({metaQueryResultsStatus: RemoteDataState.Done})
|
||||||
metaQueryResults,
|
|
||||||
metaQueryResultsStatus: RemoteDataState.Done,
|
|
||||||
})
|
|
||||||
|
|
||||||
const nextValues = metaQueryResults.map(result => {
|
const nextValues = metaQueryResults.map(result => {
|
||||||
return {
|
return {
|
||||||
|
@ -160,26 +156,10 @@ class CustomMetaQueryTemplateBuilder extends PureComponent<
|
||||||
onUpdateTemplate(nextTemplate)
|
onUpdateTemplate(nextTemplate)
|
||||||
} catch {
|
} catch {
|
||||||
this.setState({
|
this.setState({
|
||||||
metaQueryResults: [],
|
|
||||||
metaQueryResultsStatus: RemoteDataState.Error,
|
metaQueryResultsStatus: RemoteDataState.Error,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private handleChooseQueryValue = (metaQueryResultValue: string) => {
|
|
||||||
const {template, onUpdateTemplate} = this.props
|
|
||||||
const {metaQueryResults} = this.state
|
|
||||||
|
|
||||||
const nextValues = metaQueryResults.map(value => {
|
|
||||||
return {
|
|
||||||
type: TemplateValueType.MetaQuery,
|
|
||||||
value,
|
|
||||||
selected: value === metaQueryResultValue,
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
onUpdateTemplate({...template, values: nextValues})
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export default CustomMetaQueryTemplateBuilder
|
export default CustomMetaQueryTemplateBuilder
|
||||||
|
|
|
@ -24,7 +24,7 @@ export const fetchTagKeys = async (
|
||||||
|
|
||||||
class TagKeysTemplateBuilder extends PureComponent<TemplateBuilderProps> {
|
class TagKeysTemplateBuilder extends PureComponent<TemplateBuilderProps> {
|
||||||
public render() {
|
public render() {
|
||||||
const {template, source, onUpdateTemplate} = this.props
|
const {template, source, onUpdateTemplate, onChooseValue} = this.props
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<KeysTemplateBuilder
|
<KeysTemplateBuilder
|
||||||
|
@ -34,6 +34,7 @@ class TagKeysTemplateBuilder extends PureComponent<TemplateBuilderProps> {
|
||||||
template={template}
|
template={template}
|
||||||
source={source}
|
source={source}
|
||||||
onUpdateTemplate={onUpdateTemplate}
|
onUpdateTemplate={onUpdateTemplate}
|
||||||
|
onChooseValue={onChooseValue}
|
||||||
/>
|
/>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,7 +28,6 @@ interface State {
|
||||||
tagKeys: string[]
|
tagKeys: string[]
|
||||||
tagKeysStatus: RemoteDataState
|
tagKeysStatus: RemoteDataState
|
||||||
selectedTagKey: string
|
selectedTagKey: string
|
||||||
tagValues: string[]
|
|
||||||
tagValuesStatus: RemoteDataState
|
tagValuesStatus: RemoteDataState
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -51,7 +50,6 @@ class KeysTemplateBuilder extends PureComponent<TemplateBuilderProps, State> {
|
||||||
tagKeys: [],
|
tagKeys: [],
|
||||||
tagKeysStatus: RemoteDataState.Loading,
|
tagKeysStatus: RemoteDataState.Loading,
|
||||||
selectedTagKey,
|
selectedTagKey,
|
||||||
tagValues: [],
|
|
||||||
tagValuesStatus: RemoteDataState.Loading,
|
tagValuesStatus: RemoteDataState.Loading,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -64,6 +62,7 @@ class KeysTemplateBuilder extends PureComponent<TemplateBuilderProps, State> {
|
||||||
}
|
}
|
||||||
|
|
||||||
public render() {
|
public render() {
|
||||||
|
const {template, onChooseValue} = this.props
|
||||||
const {
|
const {
|
||||||
databases,
|
databases,
|
||||||
databasesStatus,
|
databasesStatus,
|
||||||
|
@ -74,7 +73,6 @@ class KeysTemplateBuilder extends PureComponent<TemplateBuilderProps, State> {
|
||||||
tagKeys,
|
tagKeys,
|
||||||
tagKeysStatus,
|
tagKeysStatus,
|
||||||
selectedTagKey,
|
selectedTagKey,
|
||||||
tagValues,
|
|
||||||
tagValuesStatus,
|
tagValuesStatus,
|
||||||
} = this.state
|
} = this.state
|
||||||
|
|
||||||
|
@ -115,9 +113,9 @@ class KeysTemplateBuilder extends PureComponent<TemplateBuilderProps, State> {
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<TemplateMetaQueryPreview
|
<TemplateMetaQueryPreview
|
||||||
items={tagValues}
|
items={template.values}
|
||||||
loadingStatus={tagValuesStatus}
|
loadingStatus={tagValuesStatus}
|
||||||
onChoose={this.handleChooseTagValue}
|
onChoose={onChooseValue}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
|
@ -220,10 +218,7 @@ class KeysTemplateBuilder extends PureComponent<TemplateBuilderProps, State> {
|
||||||
const {tags} = parseShowTagValues(data)
|
const {tags} = parseShowTagValues(data)
|
||||||
const tagValues = _.get(Object.values(tags), 0, [])
|
const tagValues = _.get(Object.values(tags), 0, [])
|
||||||
|
|
||||||
this.setState({
|
this.setState({tagValuesStatus: RemoteDataState.Done})
|
||||||
tagValues,
|
|
||||||
tagValuesStatus: RemoteDataState.Done,
|
|
||||||
})
|
|
||||||
|
|
||||||
const nextValues = tagValues.map(value => {
|
const nextValues = tagValues.map(value => {
|
||||||
return {
|
return {
|
||||||
|
@ -304,21 +299,6 @@ class KeysTemplateBuilder extends PureComponent<TemplateBuilderProps, State> {
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
private handleChooseTagValue = (tagValue: string) => {
|
|
||||||
const {template, onUpdateTemplate} = this.props
|
|
||||||
const {databases} = this.state
|
|
||||||
|
|
||||||
const nextValues = databases.map(value => {
|
|
||||||
return {
|
|
||||||
type: TemplateValueType.TagValue,
|
|
||||||
value,
|
|
||||||
selected: value === tagValue,
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
onUpdateTemplate({...template, values: nextValues})
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export default KeysTemplateBuilder
|
export default KeysTemplateBuilder
|
||||||
|
|
|
@ -3,12 +3,12 @@ import React, {PureComponent} from 'react'
|
||||||
import {ErrorHandling} from 'src/shared/decorators/errors'
|
import {ErrorHandling} from 'src/shared/decorators/errors'
|
||||||
import TemplatePreviewList from 'src/tempVars/components/TemplatePreviewList'
|
import TemplatePreviewList from 'src/tempVars/components/TemplatePreviewList'
|
||||||
|
|
||||||
import {RemoteDataState} from 'src/types'
|
import {RemoteDataState, TemplateValue} from 'src/types'
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
items: string[]
|
items: TemplateValue[]
|
||||||
loadingStatus: RemoteDataState
|
loadingStatus: RemoteDataState
|
||||||
onChoose: (item: string) => void
|
onChoose: (item: TemplateValue) => void
|
||||||
}
|
}
|
||||||
|
|
||||||
@ErrorHandling
|
@ErrorHandling
|
||||||
|
|
|
@ -5,13 +5,15 @@ import {ErrorHandling} from 'src/shared/decorators/errors'
|
||||||
import FancyScrollbar from 'src/shared/components/FancyScrollbar'
|
import FancyScrollbar from 'src/shared/components/FancyScrollbar'
|
||||||
import TemplatePreviewListItem from 'src/tempVars/components/TemplatePreviewListItem'
|
import TemplatePreviewListItem from 'src/tempVars/components/TemplatePreviewListItem'
|
||||||
|
|
||||||
|
import {TemplateValue} from 'src/types'
|
||||||
|
|
||||||
const LI_HEIGHT = 35
|
const LI_HEIGHT = 35
|
||||||
const LI_MARGIN_BOTTOM = 3
|
const LI_MARGIN_BOTTOM = 3
|
||||||
const RESULTS_TO_DISPLAY = 10
|
const RESULTS_TO_DISPLAY = 10
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
items: string[]
|
items: TemplateValue[]
|
||||||
onChoose: (item: string) => void
|
onChoose: (item: TemplateValue) => void
|
||||||
}
|
}
|
||||||
|
|
||||||
@ErrorHandling
|
@ErrorHandling
|
||||||
|
|
|
@ -1,8 +1,10 @@
|
||||||
import React, {PureComponent} from 'react'
|
import React, {PureComponent} from 'react'
|
||||||
|
|
||||||
|
import {TemplateValue} from 'src/types'
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
item: string
|
item: TemplateValue
|
||||||
onClick: (item: string) => void
|
onClick: (item: TemplateValue) => void
|
||||||
style: {
|
style: {
|
||||||
height: string
|
height: string
|
||||||
marginBottom: string
|
marginBottom: string
|
||||||
|
@ -15,7 +17,7 @@ class TemplatePreviewListItem extends PureComponent<Props> {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<li onClick={this.handleClick} style={style}>
|
<li onClick={this.handleClick} style={style}>
|
||||||
{item}
|
{item.value}
|
||||||
</li>
|
</li>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,6 +23,7 @@ import MetaQueryTemplateBuilder from 'src/tempVars/components/MetaQueryTemplateB
|
||||||
import {
|
import {
|
||||||
Template,
|
Template,
|
||||||
TemplateType,
|
TemplateType,
|
||||||
|
TemplateValue,
|
||||||
TemplateBuilderProps,
|
TemplateBuilderProps,
|
||||||
Source,
|
Source,
|
||||||
RemoteDataState,
|
RemoteDataState,
|
||||||
|
@ -148,6 +149,7 @@ class TemplateVariableEditor extends PureComponent<Props, State> {
|
||||||
<TemplateBuilder
|
<TemplateBuilder
|
||||||
template={nextTemplate}
|
template={nextTemplate}
|
||||||
source={source}
|
source={source}
|
||||||
|
onChooseValue={this.handleChooseTemplateValue}
|
||||||
onUpdateTemplate={this.handleUpdateTemplate}
|
onUpdateTemplate={this.handleUpdateTemplate}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
@ -182,6 +184,17 @@ class TemplateVariableEditor extends PureComponent<Props, State> {
|
||||||
this.setState({nextTemplate})
|
this.setState({nextTemplate})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private handleChooseTemplateValue = (item: TemplateValue) => {
|
||||||
|
this.setState(({nextTemplate: template}) => {
|
||||||
|
const nextValues = template.values.map(t => ({
|
||||||
|
...t,
|
||||||
|
selected: t.value === item.value,
|
||||||
|
}))
|
||||||
|
|
||||||
|
return {nextTemplate: {...template, values: nextValues}}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
private handleChooseType = ({type}) => {
|
private handleChooseType = ({type}) => {
|
||||||
const {
|
const {
|
||||||
nextTemplate: {id, tempVar},
|
nextTemplate: {id, tempVar},
|
||||||
|
|
|
@ -61,4 +61,5 @@ export interface TemplateBuilderProps {
|
||||||
template: Template
|
template: Template
|
||||||
source: Source
|
source: Source
|
||||||
onUpdateTemplate: (nextTemplate: Template) => void
|
onUpdateTemplate: (nextTemplate: Template) => void
|
||||||
|
onChooseValue: (item: TemplateValue) => void
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue