diff --git a/superset-frontend/spec/javascripts/explore/components/ExploreChartHeader_spec.jsx b/superset-frontend/spec/javascripts/explore/components/ExploreChartHeader_spec.jsx index 24bfdc4b24..5cd51f42bb 100644 --- a/superset-frontend/spec/javascripts/explore/components/ExploreChartHeader_spec.jsx +++ b/superset-frontend/spec/javascripts/explore/components/ExploreChartHeader_spec.jsx @@ -23,12 +23,12 @@ import { ExploreChartHeader } from 'src/explore/components/ExploreChartHeader'; import ExploreActionButtons from 'src/explore/components/ExploreActionButtons'; import EditableTitle from 'src/components/EditableTitle'; -const stub = jest.fn(() => ({ - then: () => {}, -})); +const saveSliceStub = jest.fn(); +const updateChartTitleStub = jest.fn(); const mockProps = { actions: { - saveSlice: stub, + saveSlice: saveSliceStub, + updateChartTitle: updateChartTitleStub, }, can_overwrite: true, can_download: true, @@ -65,24 +65,9 @@ describe('ExploreChartHeader', () => { expect(wrapper.find(ExploreActionButtons)).toHaveLength(1); }); - it('should updateChartTitleOrSaveSlice for existed slice', () => { + it('should update title but not save', () => { const newTitle = 'New Chart Title'; - wrapper.instance().updateChartTitleOrSaveSlice(newTitle); - expect(stub.call).toHaveLength(1); - expect(stub).toHaveBeenCalledWith(mockProps.slice.form_data, { - action: 'overwrite', - slice_name: newTitle, - }); - }); - - it('should updateChartTitleOrSaveSlice for new slice', () => { - const newTitle = 'New Chart Title'; - wrapper.setProps({ slice: undefined }); - wrapper.instance().updateChartTitleOrSaveSlice(newTitle); - expect(stub.call).toHaveLength(1); - expect(stub).toHaveBeenCalledWith(mockProps.form_data, { - action: 'saveas', - slice_name: newTitle, - }); + const editableTitle = wrapper.find(EditableTitle); + expect(editableTitle.props().onSaveTitle).toBe(updateChartTitleStub); }); }); diff --git a/superset-frontend/src/explore/actions/exploreActions.js b/superset-frontend/src/explore/actions/exploreActions.js index cb21eb0989..e4fd73265d 100644 --- a/superset-frontend/src/explore/actions/exploreActions.js +++ b/superset-frontend/src/explore/actions/exploreActions.js @@ -124,8 +124,8 @@ export function removeControlPanelAlert() { } export const UPDATE_CHART_TITLE = 'UPDATE_CHART_TITLE'; -export function updateChartTitle(slice_name) { - return { type: UPDATE_CHART_TITLE, slice_name }; +export function updateChartTitle(sliceName) { + return { type: UPDATE_CHART_TITLE, sliceName }; } export const CREATE_NEW_SLICE = 'CREATE_NEW_SLICE'; diff --git a/superset-frontend/src/explore/components/ExploreChartHeader.jsx b/superset-frontend/src/explore/components/ExploreChartHeader.jsx index a73b6fda5b..8d30b2c34e 100644 --- a/superset-frontend/src/explore/components/ExploreChartHeader.jsx +++ b/superset-frontend/src/explore/components/ExploreChartHeader.jsx @@ -47,6 +47,7 @@ const propTypes = { can_download: PropTypes.bool.isRequired, isStarred: PropTypes.bool.isRequired, slice: PropTypes.object, + sliceName: PropTypes.string, table_name: PropTypes.string, form_data: PropTypes.object, timeout: PropTypes.number, @@ -63,6 +64,10 @@ export class ExploreChartHeader extends React.PureComponent { this.closePropertiesModal = this.closePropertiesModal.bind(this); } + getSliceName() { + return this.props.sliceName || t('%s - untitled', this.props.table_name); + } + postChartFormData() { this.props.actions.postChartFormData( this.props.form_data, @@ -72,40 +77,6 @@ export class ExploreChartHeader extends React.PureComponent { ); } - updateChartTitleOrSaveSlice(newTitle) { - const isNewSlice = !this.props.slice; - const currentFormData = isNewSlice - ? this.props.form_data - : this.props.slice.form_data; - - const params = { - slice_name: newTitle, - action: isNewSlice ? 'saveas' : 'overwrite', - }; - // this.props.slice hold the original slice params stored in slices table - // when chart is saved or overwritten, the explore view will reload page - // to make sure sync with updated query params - this.props.actions.saveSlice(currentFormData, params).then(json => { - const { data } = json; - if (isNewSlice) { - this.props.actions.updateChartId(data.slice.slice_id, 0); - this.props.actions.createNewSlice( - data.can_add, - data.can_download, - data.can_overwrite, - data.slice, - data.form_data, - ); - this.props.addHistory({ - isReplace: true, - title: `[chart] ${data.slice.slice_name}`, - }); - } else { - this.props.actions.updateChartTitle(newTitle); - } - }); - } - openProperiesModal() { this.setState({ isPropertiesModalOpen: true, @@ -118,16 +89,6 @@ export class ExploreChartHeader extends React.PureComponent { }); } - renderChartTitle() { - let title; - if (this.props.slice) { - title = this.props.slice.slice_name; - } else { - title = t('%s - untitled', this.props.table_name); - } - return title; - } - render() { const formData = this.props.form_data; const { @@ -143,9 +104,9 @@ export class ExploreChartHeader extends React.PureComponent { return (