This is an automated email from the ASF dual-hosted git repository. erikrit pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-superset.git
The following commit(s) were added to refs/heads/master by this push: new cb1705f chore: type src/addSlice (#10127) cb1705f is described below commit cb1705fdae8cb53ac146ba946c67071f721c257c Author: Erik Ritter <erik.rit...@airbnb.com> AuthorDate: Mon Jun 22 08:14:27 2020 -0700 chore: type src/addSlice (#10127) --- ...ntainer_spec.jsx => AddSliceContainer_spec.tsx} | 13 ++++-- ...AddSliceContainer.jsx => AddSliceContainer.tsx} | 49 ++++++++++++++-------- .../src/addSlice/{App.jsx => App.tsx} | 2 +- .../src/addSlice/{index.jsx => index.tsx} | 0 superset-frontend/webpack.config.js | 2 +- 5 files changed, 43 insertions(+), 23 deletions(-) diff --git a/superset-frontend/spec/javascripts/addSlice/AddSliceContainer_spec.jsx b/superset-frontend/spec/javascripts/addSlice/AddSliceContainer_spec.tsx similarity index 90% rename from superset-frontend/spec/javascripts/addSlice/AddSliceContainer_spec.jsx rename to superset-frontend/spec/javascripts/addSlice/AddSliceContainer_spec.tsx index 6955c7c..9369894 100644 --- a/superset-frontend/spec/javascripts/addSlice/AddSliceContainer_spec.jsx +++ b/superset-frontend/spec/javascripts/addSlice/AddSliceContainer_spec.tsx @@ -17,10 +17,13 @@ * under the License. */ import React from 'react'; -import { shallow } from 'enzyme'; +import { shallow, ShallowWrapper } from 'enzyme'; import { Button } from 'react-bootstrap'; import Select from 'src/components/Select'; -import AddSliceContainer from 'src/addSlice/AddSliceContainer'; +import AddSliceContainer, { + AddSliceContainerProps, + AddSliceContainerState, +} from 'src/addSlice/AddSliceContainer'; import VizTypeControl from 'src/explore/components/controls/VizTypeControl'; const defaultProps = { @@ -31,7 +34,11 @@ const defaultProps = { }; describe('AddSliceContainer', () => { - let wrapper; + let wrapper: ShallowWrapper< + AddSliceContainerProps, + AddSliceContainerState, + AddSliceContainer + >; beforeEach(() => { wrapper = shallow(<AddSliceContainer {...defaultProps} />); diff --git a/superset-frontend/src/addSlice/AddSliceContainer.jsx b/superset-frontend/src/addSlice/AddSliceContainer.tsx similarity index 81% rename from superset-frontend/src/addSlice/AddSliceContainer.jsx rename to superset-frontend/src/addSlice/AddSliceContainer.tsx index 70a3ca0..fbcd3b3 100644 --- a/superset-frontend/src/addSlice/AddSliceContainer.jsx +++ b/superset-frontend/src/addSlice/AddSliceContainer.tsx @@ -17,26 +17,35 @@ * under the License. */ import React from 'react'; -import PropTypes from 'prop-types'; import { Button, Panel } from 'react-bootstrap'; import Select from 'src/components/Select'; import { t } from '@superset-ui/translation'; import VizTypeControl from '../explore/components/controls/VizTypeControl'; -const propTypes = { - datasources: PropTypes.arrayOf( - PropTypes.shape({ - label: PropTypes.string.isRequired, - value: PropTypes.string.isRequired, - }), - ).isRequired, +interface Datasource { + label: string; + value: string; +} + +export type AddSliceContainerProps = { + datasources: Datasource[]; +}; + +export type AddSliceContainerState = { + datasourceId?: string; + datasourceType?: string; + datasourceValue?: string; + visType: string; }; const styleSelectWidth = { width: 600 }; -export default class AddSliceContainer extends React.PureComponent { - constructor(props) { +export default class AddSliceContainer extends React.PureComponent< + AddSliceContainerProps, + AddSliceContainerState +> { + constructor(props: AddSliceContainerProps) { super(props); this.state = { visType: 'table', @@ -61,15 +70,15 @@ export default class AddSliceContainer extends React.PureComponent { window.location.href = this.exploreUrl(); } - changeDatasource(e) { + changeDatasource(option: { value: string }) { this.setState({ - datasourceValue: e.value, - datasourceId: e.value.split('__')[0], - datasourceType: e.value.split('__')[1], + datasourceValue: option.value, + datasourceId: option.value.split('__')[0], + datasourceType: option.value.split('__')[1], }); } - changeVisType(visType) { + changeVisType(visType: string) { this.setState({ visType }); } @@ -97,7 +106,13 @@ export default class AddSliceContainer extends React.PureComponent { options={this.props.datasources} placeholder={t('Choose a datasource')} style={styleSelectWidth} - value={this.state.datasourceValue} + value={ + this.state.datasourceValue + ? { + value: this.state.datasourceValue, + } + : undefined + } width={600} /> </div> @@ -141,5 +156,3 @@ export default class AddSliceContainer extends React.PureComponent { ); } } - -AddSliceContainer.propTypes = propTypes; diff --git a/superset-frontend/src/addSlice/App.jsx b/superset-frontend/src/addSlice/App.tsx similarity index 95% rename from superset-frontend/src/addSlice/App.jsx rename to superset-frontend/src/addSlice/App.tsx index 9769ddc..c4ad8ef 100644 --- a/superset-frontend/src/addSlice/App.jsx +++ b/superset-frontend/src/addSlice/App.tsx @@ -29,7 +29,7 @@ setupPlugins(); const addSliceContainer = document.getElementById('js-add-slice-container'); const bootstrapData = JSON.parse( - addSliceContainer.getAttribute('data-bootstrap'), + addSliceContainer?.getAttribute('data-bootstrap') || '{}', ); const App = () => ( diff --git a/superset-frontend/src/addSlice/index.jsx b/superset-frontend/src/addSlice/index.tsx similarity index 100% rename from superset-frontend/src/addSlice/index.jsx rename to superset-frontend/src/addSlice/index.tsx diff --git a/superset-frontend/webpack.config.js b/superset-frontend/webpack.config.js index 4a208fb..f416e7f 100644 --- a/superset-frontend/webpack.config.js +++ b/superset-frontend/webpack.config.js @@ -177,7 +177,7 @@ const config = { entry: { theme: path.join(APP_DIR, '/src/theme.ts'), preamble: PREAMBLE, - addSlice: addPreamble('/src/addSlice/index.jsx'), + addSlice: addPreamble('/src/addSlice/index.tsx'), explore: addPreamble('/src/explore/index.jsx'), dashboard: addPreamble('/src/dashboard/index.jsx'), sqllab: addPreamble('/src/SqlLab/index.jsx'),