diff --git a/superset/assets/javascripts/explore/components/QueryAndSaveBtns.jsx b/superset/assets/javascripts/explore/components/QueryAndSaveBtns.jsx index 08259e9cf4d..1d06d7a8e69 100644 --- a/superset/assets/javascripts/explore/components/QueryAndSaveBtns.jsx +++ b/superset/assets/javascripts/explore/components/QueryAndSaveBtns.jsx @@ -1,36 +1,46 @@ import React, { PropTypes } from 'react'; +import { Button, ButtonGroup } from 'react-bootstrap'; import classnames from 'classnames'; const propTypes = { canAdd: PropTypes.string.isRequired, onQuery: PropTypes.func.isRequired, onSave: PropTypes.func, + disabled: PropTypes.bool, }; const defaultProps = { onSave: () => {}, + disabled: false, }; -export default function QueryAndSaveBtns({ canAdd, onQuery, onSave }) { - const saveClasses = classnames('btn btn-default btn-sm', { +export default function QueryAndSaveBtns({ canAdd, onQuery, onSave, disabled }) { + const saveClasses = classnames({ 'disabled disabledButton': canAdd !== 'True', }); return ( -
- - + -
+ + ); } diff --git a/superset/assets/javascripts/explorev2/components/ExploreViewContainer.jsx b/superset/assets/javascripts/explorev2/components/ExploreViewContainer.jsx index 3c594de726b..7e4d210e453 100644 --- a/superset/assets/javascripts/explorev2/components/ExploreViewContainer.jsx +++ b/superset/assets/javascripts/explorev2/components/ExploreViewContainer.jsx @@ -14,6 +14,7 @@ const propTypes = { form_data: React.PropTypes.object.isRequired, actions: React.PropTypes.object.isRequired, datasource_type: React.PropTypes.string.isRequired, + chartStatus: React.PropTypes.string.isRequired, }; @@ -94,6 +95,7 @@ class ExploreViewContainer extends React.Component { canAdd="True" onQuery={this.onQuery.bind(this, this.props.form_data)} onSave={this.toggleModal.bind(this)} + disabled={this.props.chartStatus === 'loading'} />

{ }); it('renders 2 buttons', () => { - expect(wrapper.find('button')).to.have.lengthOf(2); + expect(wrapper.find(Button)).to.have.lengthOf(2); }); it('renders buttons with correct text', () => { - expect(wrapper.find('button').contains(' Query')).to.eql(true); - expect(wrapper.find('button').contains(' Save as')).to.eql(true); + expect(wrapper.find(Button).contains(' Query')).to.eql(true); + expect(wrapper.find(Button).contains(' Save as')).to.eql(true); }); it('calls onQuery when query button is clicked', () => {