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'),

Reply via email to