sqlpad
Version:
Web app for writing and running SQL queries and visualizing the results. Supports Postgres, MySQL, SQL Server, Crate and Vertica.
84 lines (78 loc) • 2.44 kB
JavaScript
import React from 'react'
import PropTypes from 'prop-types'
import Glyphicon from 'react-bootstrap/lib/Glyphicon'
import FormGroup from 'react-bootstrap/lib/FormGroup'
import FormControl from 'react-bootstrap/lib/FormControl'
import Button from 'react-bootstrap/lib/Button'
import ChartInputs from './ChartInputs.js'
import chartDefinitions from '../utilities/chartDefinitions.js'
class VisSidebar extends React.Component {
render() {
const {
isChartable,
onChartConfigurationFieldsChange,
onChartTypeChange,
onSaveImageClick,
onVisualizeClick,
query,
queryResult
} = this.props
const chartOptions = chartDefinitions.map(d => {
return (
<option key={d.chartType} value={d.chartType}>
{d.chartLabel}
</option>
)
})
return (
<div className="sidebar">
<div className="sidebar-body">
<FormGroup controlId="formControlsSelect" bsSize="small">
<FormControl
value={query.chartConfiguration.chartType}
onChange={onChartTypeChange}
componentClass="select"
className="input-small"
>
<option value="">Choose a chart type...</option>
{chartOptions}
</FormControl>
</FormGroup>
<ChartInputs
chartType={query.chartConfiguration.chartType}
queryChartConfigurationFields={query.chartConfiguration.fields}
onChartConfigurationFieldsChange={onChartConfigurationFieldsChange}
queryResult={queryResult}
/>
</div>
<div className="sidebar-actions-bottom">
<Button
onClick={onVisualizeClick}
disabled={!isChartable}
className={'btn-block'}
bsSize={'sm'}
>
Visualize
</Button>
<Button
onClick={onSaveImageClick}
className={'btn-block'}
bsSize={'sm'}
>
<Glyphicon glyph="save" /> Save Chart Image
</Button>
</div>
</div>
)
}
}
VisSidebar.propTypes = {
isChartable: PropTypes.bool,
onChartConfigurationFieldsChange: PropTypes.func,
onChartTypeChange: PropTypes.func,
onSaveImageClick: PropTypes.func,
onVisualizeClick: PropTypes.func,
query: PropTypes.object,
queryResult: PropTypes.object
}
export default VisSidebar