/* eslint no-undef: 2 */ import React from 'react'; import PropTypes from 'prop-types'; import { Col, Collapse, Label, OverlayTrigger, Row, Tooltip, Well, } from 'react-bootstrap'; import $ from 'jquery'; import ControlHeader from '../ControlHeader'; import { t } from '../../../locales'; import DatasourceModal from '../../../datasource/DatasourceModal'; import ColumnOption from '../../../components/ColumnOption'; import MetricOption from '../../../components/MetricOption'; import withToasts from '../../../messageToasts/enhancers/withToasts'; const propTypes = { onChange: PropTypes.func, value: PropTypes.string.isRequired, addDangerToast: PropTypes.func.isRequired, datasource: PropTypes.object.isRequired, onDatasourceSave: PropTypes.func, }; const defaultProps = { onChange: () => {}, onDatasourceSave: () => {}, }; class DatasourceControl extends React.PureComponent { constructor(props) { super(props); this.state = { showEditDatasourceModal: false, filter: '', loading: true, showDatasource: false, }; this.toggleShowDatasource = this.toggleShowDatasource.bind(this); this.toggleEditDatasourceModal = this.toggleEditDatasourceModal.bind(this); this.setSearchRef = this.setSearchRef.bind(this); this.selectDatasource = this.selectDatasource.bind(this); } onChange(vizType) { this.props.onChange(vizType); this.setState({ showModal: false }); } onEnterModal() { if (this.searchRef) { this.searchRef.focus(); } const url = '/superset/datasources/'; const that = this; if (!this.state.datasources) { $.ajax({ type: 'GET', url, success: (data) => { const datasources = data.map(ds => ({ rawName: ds.name, connection: ds.connection, schema: ds.schema, name: ( {ds.name} ), type: ds.type, })); that.setState({ loading: false, datasources }); }, error() { that.setState({ loading: false }); this.props.addDangerToast(t('Something went wrong while fetching the datasource list')); }, }); } } setSearchRef(searchRef) { this.searchRef = searchRef; } toggleShowDatasource() { this.setState({ showDatasource: !this.state.showDatasource }); } toggleModal() { this.setState({ showModal: !this.state.showModal }); } changeSearch(event) { this.setState({ filter: event.target.value }); } selectDatasource(datasourceId) { this.setState({ showModal: false }); this.props.onChange(datasourceId); } toggleEditDatasourceModal() { this.setState({ showEditDatasourceModal: !this.state.showEditDatasourceModal }); } renderModal() { } renderDatasource() { const datasource = this.props.datasource; return (