From 24292dbc1159ba5dd807e56f4d268cda8f16f474 Mon Sep 17 00:00:00 2001 From: Alanna Scott Date: Thu, 8 Jun 2017 10:49:02 -0700 Subject: [PATCH] add new slice form improvements (#2928) * dont set first datasource as default * not used * add a disabled class if datasource is not selected * sort datasources alphabettically * make btn disabled is no datasource is selected * fix linting --- .../addSlice/AddSliceContainer.jsx | 17 ++++++++-------- .../addSlice/AddSliceContainer_spec.jsx | 20 +++++++++++++++++++ superset/views/core.py | 2 +- 3 files changed, 30 insertions(+), 9 deletions(-) diff --git a/superset/assets/javascripts/addSlice/AddSliceContainer.jsx b/superset/assets/javascripts/addSlice/AddSliceContainer.jsx index 2263e20e8d..c316e2c76e 100644 --- a/superset/assets/javascripts/addSlice/AddSliceContainer.jsx +++ b/superset/assets/javascripts/addSlice/AddSliceContainer.jsx @@ -17,9 +17,6 @@ export default class AddSliceContainer extends React.PureComponent { const visTypeKeys = Object.keys(visTypes); this.vizTypeOptions = visTypeKeys.map(vt => ({ label: visTypes[vt].label, value: vt })); this.state = { - datasourceValue: this.props.datasources[0].value, - datasourceId: this.props.datasources[0].value.split('__')[0], - datasourceType: this.props.datasources[0].value.split('__')[1], visType: 'table', }; } @@ -42,14 +39,14 @@ export default class AddSliceContainer extends React.PureComponent { }); } - changeSliceName(e) { - this.setState({ sliceName: e.target.value }); - } - changeVisType(e) { this.setState({ visType: e.value }); } + isBtnDisabled() { + return !(this.state.datasourceId && this.state.visType); + } + render() { return (
@@ -81,7 +78,11 @@ export default class AddSliceContainer extends React.PureComponent { />

-

diff --git a/superset/assets/spec/javascripts/addSlice/AddSliceContainer_spec.jsx b/superset/assets/spec/javascripts/addSlice/AddSliceContainer_spec.jsx index 9096ba3819..ab3d4ff878 100644 --- a/superset/assets/spec/javascripts/addSlice/AddSliceContainer_spec.jsx +++ b/superset/assets/spec/javascripts/addSlice/AddSliceContainer_spec.jsx @@ -32,7 +32,27 @@ describe('AddSliceContainer', () => { expect(wrapper.find(Button)).to.have.lengthOf(1); }); + it('renders a disabled button if no datasource is selected', () => { + expect(wrapper.find(Button).dive().find('.btn[disabled=true]')).to.have.length(1); + }); + + it('renders an enabled button if datasource is selected', () => { + const datasourceValue = defaultProps.datasources[0].value; + wrapper.setState({ + datasourceValue, + datasourceId: datasourceValue.split('__')[0], + datasourceType: datasourceValue.split('__')[1], + }); + expect(wrapper.find(Button).dive().find('.btn[disabled=false]')).to.have.length(1); + }); + it('formats explore url', () => { + const datasourceValue = defaultProps.datasources[0].value; + wrapper.setState({ + datasourceValue, + datasourceId: datasourceValue.split('__')[0], + datasourceType: datasourceValue.split('__')[1], + }); const formattedUrl = '/superset/explore/table/1?form_data=%7B%22viz_type%22%3A%22table%22%7D'; expect(wrapper.instance().exploreUrl()).to.equal(formattedUrl); }); diff --git a/superset/views/core.py b/superset/views/core.py index 05e74867b8..e10632179d 100755 --- a/superset/views/core.py +++ b/superset/views/core.py @@ -380,7 +380,7 @@ class SliceModelView(SupersetModelView, DeleteMixin): # noqa return self.render_template( "superset/add_slice.html", bootstrap_data=json.dumps({ - 'datasources': datasources, + 'datasources': sorted(datasources), }), )