mirror of
https://github.com/apache/superset.git
synced 2026-04-17 23:25:05 +00:00
[dashboard] adding an option to duplicate slices when "Saving AS" (#3391)
* [dashboard] adding an option to duplicate slices when "Saving AS" * Fix tests
This commit is contained in:
committed by
GitHub
parent
3b4cd812ae
commit
e53f3032bb
@@ -4,6 +4,7 @@ import PropTypes from 'prop-types';
|
||||
import { Button, FormControl, FormGroup, Radio } from 'react-bootstrap';
|
||||
import { getAjaxErrorMsg } from '../../modules/utils';
|
||||
import ModalTrigger from '../../components/ModalTrigger';
|
||||
import Checkbox from '../../components/Checkbox';
|
||||
|
||||
const $ = window.$ = require('jquery');
|
||||
|
||||
@@ -20,13 +21,17 @@ class SaveModal extends React.PureComponent {
|
||||
dashboard: props.dashboard,
|
||||
css: props.css,
|
||||
saveType: 'overwrite',
|
||||
newDashName: '',
|
||||
newDashName: props.dashboard.dashboard_title + ' [copy]',
|
||||
duplicateSlices: false,
|
||||
};
|
||||
this.modal = null;
|
||||
this.handleSaveTypeChange = this.handleSaveTypeChange.bind(this);
|
||||
this.handleNameChange = this.handleNameChange.bind(this);
|
||||
this.saveDashboard = this.saveDashboard.bind(this);
|
||||
}
|
||||
toggleDuplicateSlices() {
|
||||
this.setState({ duplicateSlices: !this.state.duplicateSlices });
|
||||
}
|
||||
handleSaveTypeChange(event) {
|
||||
this.setState({
|
||||
saveType: event.target.value,
|
||||
@@ -52,7 +57,7 @@ class SaveModal extends React.PureComponent {
|
||||
saveModal.close();
|
||||
dashboard.onSave();
|
||||
if (saveType === 'newDashboard') {
|
||||
window.location = '/superset/dashboard/' + resp.id + '/';
|
||||
window.location = `/superset/dashboard/${resp.id}/`;
|
||||
} else {
|
||||
notify.success('This dashboard was saved successfully.');
|
||||
}
|
||||
@@ -81,10 +86,11 @@ class SaveModal extends React.PureComponent {
|
||||
expanded_slices: expandedSlices,
|
||||
dashboard_title: dashboard.dashboard_title,
|
||||
default_filters: dashboard.readFilters(),
|
||||
duplicate_slices: this.state.duplicateSlices,
|
||||
};
|
||||
let url = null;
|
||||
if (saveType === 'overwrite') {
|
||||
url = '/superset/save_dash/' + dashboard.id + '/';
|
||||
url = `/superset/save_dash/${dashboard.id}/`;
|
||||
this.saveDashboardRequest(data, url, saveType);
|
||||
} else if (saveType === 'newDashboard') {
|
||||
if (!newDashboardTitle) {
|
||||
@@ -95,7 +101,7 @@ class SaveModal extends React.PureComponent {
|
||||
});
|
||||
} else {
|
||||
data.dashboard_title = newDashboardTitle;
|
||||
url = '/superset/copy_dash/' + dashboard.id + '/';
|
||||
url = `/superset/copy_dash/${dashboard.id}/`;
|
||||
this.saveDashboardRequest(data, url, saveType);
|
||||
}
|
||||
}
|
||||
@@ -115,6 +121,7 @@ class SaveModal extends React.PureComponent {
|
||||
>
|
||||
Overwrite Dashboard [{this.props.dashboard.dashboard_title}]
|
||||
</Radio>
|
||||
<hr />
|
||||
<Radio
|
||||
value="newDashboard"
|
||||
onChange={this.handleSaveTypeChange}
|
||||
@@ -125,9 +132,17 @@ class SaveModal extends React.PureComponent {
|
||||
<FormControl
|
||||
type="text"
|
||||
placeholder="[dashboard name]"
|
||||
value={this.state.newDashName}
|
||||
onFocus={this.handleNameChange}
|
||||
onChange={this.handleNameChange}
|
||||
/>
|
||||
<div className="m-l-25 m-t-5">
|
||||
<Checkbox
|
||||
checked={this.state.duplicateSlices}
|
||||
onChange={this.toggleDuplicateSlices.bind(this)}
|
||||
/>
|
||||
<span className="m-l-5">also copy (duplicate) slices</span>
|
||||
</div>
|
||||
</FormGroup>
|
||||
}
|
||||
modalFooter={
|
||||
|
||||
Reference in New Issue
Block a user