Add user ability to enter a CSV via text input to TVM; fix row find for state update
parent
e2dac89c7d
commit
112fc10e61
|
@ -105,7 +105,7 @@ class TemplateVariableManagerWrapper extends Component {
|
||||||
} = queryConfig
|
} = queryConfig
|
||||||
|
|
||||||
// Determine which is the selectedValue, if any
|
// Determine which is the selectedValue, if any
|
||||||
const currentRow = rows.find(row => row.tempVar === tempVar)
|
const currentRow = rows.find(row => row.id === id)
|
||||||
|
|
||||||
let selectedValue
|
let selectedValue
|
||||||
if (currentRow && currentRow.values && currentRow.values.length) {
|
if (currentRow && currentRow.values && currentRow.values.length) {
|
||||||
|
|
|
@ -41,6 +41,26 @@ const RowValues = ({
|
||||||
: <span>(No values to display)</span>
|
: <span>(No values to display)</span>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const RowButtons = ({isEditing, onCancelEdit, onDelete, id, selectedType}) => {
|
||||||
|
if (isEditing) {
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<button className="btn btn-sm btn-success" type="submit">
|
||||||
|
{selectedType === 'csv' ? 'Save Values' : 'Get Values'}
|
||||||
|
</button>
|
||||||
|
<button
|
||||||
|
className="btn btn-sm btn-primary"
|
||||||
|
type="button"
|
||||||
|
onClick={onCancelEdit}
|
||||||
|
>
|
||||||
|
Cancel
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
return <DeleteConfirmButtons onDelete={() => onDelete(id)} />
|
||||||
|
}
|
||||||
|
|
||||||
const TemplateVariableRow = ({
|
const TemplateVariableRow = ({
|
||||||
template: {id, label, tempVar, values},
|
template: {id, label, tempVar, values},
|
||||||
isEditing,
|
isEditing,
|
||||||
|
@ -112,20 +132,13 @@ const TemplateVariableRow = ({
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div className="td" style={{display: 'flex'}}>
|
<div className="td" style={{display: 'flex'}}>
|
||||||
{isEditing
|
<RowButtons
|
||||||
? <div>
|
isEditing={isEditing}
|
||||||
<button className="btn btn-sm btn-success" type="submit">
|
onCancelEdit={onCancelEdit}
|
||||||
Run Query
|
onDelete={onDelete}
|
||||||
</button>
|
id={id}
|
||||||
<button
|
selectedType={selectedType}
|
||||||
className="btn btn-sm btn-primary"
|
/>
|
||||||
type="button"
|
|
||||||
onClick={onCancelEdit}
|
|
||||||
>
|
|
||||||
Cancel
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
: <DeleteConfirmButtons onDelete={() => onDelete(id)} />}
|
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
)
|
)
|
||||||
|
@ -165,7 +178,7 @@ class RowWrapper extends Component {
|
||||||
autoFocusTarget: null,
|
autoFocusTarget: null,
|
||||||
}
|
}
|
||||||
|
|
||||||
this.handleRunQueryRequested = ::this.handleRunQueryRequested
|
this.handleSubmit = ::this.handleSubmit
|
||||||
this.handleSelectType = ::this.handleSelectType
|
this.handleSelectType = ::this.handleSelectType
|
||||||
this.handleSelectDatabase = ::this.handleSelectDatabase
|
this.handleSelectDatabase = ::this.handleSelectDatabase
|
||||||
this.handleSelectMeasurement = ::this.handleSelectMeasurement
|
this.handleSelectMeasurement = ::this.handleSelectMeasurement
|
||||||
|
@ -175,7 +188,7 @@ class RowWrapper extends Component {
|
||||||
this.runTemplateVariableQuery = ::this.runTemplateVariableQuery
|
this.runTemplateVariableQuery = ::this.runTemplateVariableQuery
|
||||||
}
|
}
|
||||||
|
|
||||||
handleRunQueryRequested({
|
handleSubmit({
|
||||||
selectedDatabase: database,
|
selectedDatabase: database,
|
||||||
selectedMeasurement: measurement,
|
selectedMeasurement: measurement,
|
||||||
selectedTagKey: tagKey,
|
selectedTagKey: tagKey,
|
||||||
|
@ -219,10 +232,14 @@ class RowWrapper extends Component {
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const parsedData = await this.runTemplateVariableQuery(
|
let parsedData
|
||||||
source,
|
if (type === 'csv') {
|
||||||
queryConfig
|
parsedData = e.target.values.value
|
||||||
)
|
.split(',')
|
||||||
|
.map(value => value.trim())
|
||||||
|
} else {
|
||||||
|
parsedData = await this.runTemplateVariableQuery(source, queryConfig)
|
||||||
|
}
|
||||||
onRunQuerySuccess(template, queryConfig, parsedData, {tempVar, label})
|
onRunQuerySuccess(template, queryConfig, parsedData, {tempVar, label})
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
onRunQueryFailure(error)
|
onRunQueryFailure(error)
|
||||||
|
@ -318,7 +335,7 @@ class RowWrapper extends Component {
|
||||||
onStartEdit={this.handleStartEdit}
|
onStartEdit={this.handleStartEdit}
|
||||||
onCancelEdit={this.handleCancelEdit}
|
onCancelEdit={this.handleCancelEdit}
|
||||||
autoFocusTarget={autoFocusTarget}
|
autoFocusTarget={autoFocusTarget}
|
||||||
onSubmit={this.handleRunQueryRequested}
|
onSubmit={this.handleSubmit}
|
||||||
/>
|
/>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -387,4 +404,12 @@ RowValues.propTypes = {
|
||||||
autoFocusTarget: string,
|
autoFocusTarget: string,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
RowButtons.propTypes = {
|
||||||
|
isEditing: bool.isRequired,
|
||||||
|
onCancelEdit: func.isRequired,
|
||||||
|
onDelete: func.isRequired,
|
||||||
|
id: string.isRequired,
|
||||||
|
selectedType: string.isRequired,
|
||||||
|
}
|
||||||
|
|
||||||
export default OnClickOutside(RowWrapper)
|
export default OnClickOutside(RowWrapper)
|
||||||
|
|
Loading…
Reference in New Issue