Add user ability to enter a CSV via text input to TVM; fix row find for state update

pull/1347/head
Jared Scheib 2017-04-26 15:58:23 -07:00
parent e2dac89c7d
commit 112fc10e61
2 changed files with 47 additions and 22 deletions

View File

@ -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) {

View File

@ -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)