import React, { PureComponent } from 'react'; import { connect } from 'react-redux'; import { hot } from 'react-hot-loader'; import Select from 'react-select'; import PageHeader from 'app/core/components/PageHeader/PageHeader'; import { DataSourceType, NavModel } from 'app/types'; import { addDataSource, loadDataSourceTypes } from './state/actions'; import { updateLocation } from '../../core/actions'; import { getNavModel } from 'app/core/selectors/navModel'; export interface Props { navModel: NavModel; dataSourceTypes: DataSourceType[]; addDataSource: typeof addDataSource; loadDataSourceTypes: typeof loadDataSourceTypes; updateLocation: typeof updateLocation; } export interface State { name: string; type: { value: string; label: string }; } class NewDataSourcePage extends PureComponent { state = { name: '', type: null, }; componentDidMount() { this.props.loadDataSourceTypes(); } onChangeName = event => { this.setState({ name: event.target.value, }); }; onTypeChanged = type => { this.setState({ type: type, }); }; submitForm = event => { event.preventDefault(); if (!this.isFieldsEmpty()) { this.props.addDataSource(this.state.name, this.state.type.value); } }; goBack = () => { this.props.updateLocation({ path: '/datasources' }); }; isFieldsEmpty = () => { const { name, type } = this.state; if (name === '' && !type) { return true; } else if (name !== '' && !type) { return true; } else { return !!(name === '' && type); } }; render() { const { navModel, dataSourceTypes } = this.props; const { name, type } = this.state; return (

New Data source

Name
Type