import React from 'react'; import { Button, Col, Modal } from 'react-bootstrap'; import { connect } from 'react-redux'; import { bindActionCreators } from 'redux'; import * as Actions from '../actions'; import Select from 'react-select'; import { Table } from 'reactable'; import shortid from 'shortid'; class VisualizeModal extends React.Component { constructor(props) { super(props); this.state = { chartType: 'line', datasourceName: shortid.generate(), columns: {}, }; } changeChartType(option) { this.setState({ chartType: (option) ? option.value : null }); } mergedColumns() { const columns = Object.assign({}, this.state.columns); if (this.props.query && this.props.query.results.columns) { this.props.query.results.columns.forEach((col) => { if (columns[col] === undefined) { columns[col] = {}; } }); } return columns; } visualize() { const vizOptions = { chartType: this.state.chartType, datasourceName: this.state.datasourceName, columns: this.state.columns, sql: this.props.query.sql, dbId: this.props.query.dbId, }; window.open('/caravel/sqllab_viz/?data=' + JSON.stringify(vizOptions)); } changeDatasourceName(event) { this.setState({ datasourceName: event.target.value }); } changeCheckbox(attr, col, event) { let columns = this.mergedColumns(); const column = Object.assign({}, columns[col], { [attr]: event.target.checked }); columns = Object.assign({}, columns, { [col]: column }); this.setState({ columns }); } changeAggFunction(col, option) { let columns = this.mergedColumns(); const val = (option) ? option.value : null; const column = Object.assign({}, columns[col], { agg: val }); columns = Object.assign({}, columns, { [col]: column }); this.setState({ columns }); } render() { if (!(this.props.query)) { return
; } const tableData = this.props.query.results.columns.map((col) => ({ column: col, is_dimension: ( ), is_date: ( ), agg_func: ( Datasource Name

); return modal; } } VisualizeModal.propTypes = { query: React.PropTypes.object, show: React.PropTypes.boolean, onHide: React.PropTypes.function, }; VisualizeModal.defaultProps = { show: false, }; function mapStateToProps() { return {}; } function mapDispatchToProps(dispatch) { return { actions: bindActionCreators(Actions, dispatch), }; } export default connect(mapStateToProps, mapDispatchToProps)(VisualizeModal);