You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by hu...@apache.org on 2020/11/19 21:25:24 UTC
[incubator-superset] 01/02: add overwrite state
This is an automated email from the ASF dual-hosted git repository.
hugh pushed a commit to branch hugh/SO-1117-modal
in repository https://gitbox.apache.org/repos/asf/incubator-superset.git
commit dba206a713bd9d55f5c4a4c98ee4ef00e6cae8aa
Author: hughhhh <hu...@gmail.com>
AuthorDate: Wed Nov 18 12:51:27 2020 -0800
add overwrite state
---
.../src/SqlLab/components/ResultSet.tsx | 19 ++++++++++--
.../src/SqlLab/components/SaveDatasetModal.tsx | 36 +++++++++++++++++++---
2 files changed, 47 insertions(+), 8 deletions(-)
diff --git a/superset-frontend/src/SqlLab/components/ResultSet.tsx b/superset-frontend/src/SqlLab/components/ResultSet.tsx
index 71337a6..56acb70 100644
--- a/superset-frontend/src/SqlLab/components/ResultSet.tsx
+++ b/superset-frontend/src/SqlLab/components/ResultSet.tsx
@@ -93,6 +93,7 @@ export default class ResultSet extends React.PureComponent<
newSaveDatasetName: '',
userDatasetsOwned: [],
saveDatasetRadioBtnState: 1,
+ overwriteDataSet: false,
};
this.changeSearch = this.changeSearch.bind(this);
@@ -106,6 +107,7 @@ export default class ResultSet extends React.PureComponent<
this.handleHideSaveModal = this.handleHideSaveModal.bind(this);
this.handleDatasetNameChange = this.handleDatasetNameChange.bind(this);
this.handleSaveDatasetRadioBtnState = this.handleSaveDatasetRadioBtnState.bind(this);
+ this.handleOverwriteCancel = this.handleOverwriteCancel.bind(this);
}
componentDidMount() {
@@ -190,6 +192,13 @@ export default class ResultSet extends React.PureComponent<
handleSaveInDataset() {
console.log('Saving dataset');
+ console.log(this.state.saveDatasetRadioBtnState)
+ if (this.state.saveDatasetRadioBtnState === 2) {
+ this.setState({overwriteDataSet: true})
+ console.log('make sure user is okay with overwriting')
+ return
+ }
+
console.log(this.props.query);
console.log(this.props.actions.createDatasource);
const { schema, sql, dbId, templateParams } = this.props.query;
@@ -231,20 +240,21 @@ export default class ResultSet extends React.PureComponent<
}
handleDatasetNameChange(e) {
- console.log(e.target.value)
this.setState({ newSaveDatasetName: e.target.value })
}
handleHideSaveModal() {
- console.log('hiding the modal');
this.setState({showSaveDatasetModal: false})
}
handleSaveDatasetRadioBtnState(e) {
- console.log(e.target.value)
this.setState({saveDatasetRadioBtnState: e.target.value});
}
+ handleOverwriteCancel() {
+ this.setState({overwriteDataSet: false})
+ }
+
renderControls() {
if (this.props.search || this.props.visualize || this.props.csv) {
let { data } = this.props.query.results;
@@ -253,6 +263,7 @@ export default class ResultSet extends React.PureComponent<
}
const { showSaveDatasetModal } = this.state;
+ console.log(this.state.overwriteDataSet)
return (
<div className="ResultSetControls">
<SaveDatasetModal
@@ -263,6 +274,8 @@ export default class ResultSet extends React.PureComponent<
userDatasetsOwned={this.state.userDatasetsOwned}
handleSaveDatasetRadioBtnState={this.handleSaveDatasetRadioBtnState}
saveDatasetRadioBtnState={this.state.saveDatasetRadioBtnState}
+ overwriteDataSet={this.state.overwriteDataSet}
+ handleOverwriteCancel={this.handleOverwriteCancel}
/>
<div className="ResultSetButtons">
{this.props.visualize &&
diff --git a/superset-frontend/src/SqlLab/components/SaveDatasetModal.tsx b/superset-frontend/src/SqlLab/components/SaveDatasetModal.tsx
index 77016e2..4816cac 100644
--- a/superset-frontend/src/SqlLab/components/SaveDatasetModal.tsx
+++ b/superset-frontend/src/SqlLab/components/SaveDatasetModal.tsx
@@ -33,7 +33,7 @@ interface SaveDatasetModalProps = {
}
// eslint-disable-next-line no-empty-pattern
-export const SaveDatasetModal: FunctionComponent<> = ({visible, onOk, onCancel, handleDatasetNameChange, userDatasetsOwned, handleSaveDatasetRadioBtnState, saveDatasetRadioBtnState}) => {
+export const SaveDatasetModal: FunctionComponent<> = ({visible, onOk, onCancel, handleDatasetNameChange, userDatasetsOwned, handleSaveDatasetRadioBtnState, saveDatasetRadioBtnState, overwriteDataSet, handleOverwriteCancel}) => {
const [options, setOptions] = useState([]);
const [radioOption, setRadioOptions] = useState(1);
@@ -63,7 +63,9 @@ export const SaveDatasetModal: FunctionComponent<> = ({visible, onOk, onCancel,
onHide={() => {}}
title="Save a new dataset"
onCancel={onCancel}
- footer={<>
+ footer={
+ <>
+ {!overwriteDataSet &&
<Button
buttonSize="sm"
buttonStyle="primary"
@@ -71,11 +73,29 @@ export const SaveDatasetModal: FunctionComponent<> = ({visible, onOk, onCancel,
onClick={onOk}
>
Save & Explore
- </Button>
+ </Button>
+ }
+ {overwriteDataSet && <> <Button
+ buttonSize="sm"
+ buttonStyle="danger"
+ className="m-r-5"
+ onClick={() => {
+ console.log('go back to original screen')
+ handleOverwriteCancel()
+ }}
+ >Cancel</Button>
+ <Button
+ buttonSize="sm"
+ buttonStyle="primary"
+ className="m-r-5"
+ onClick={() => {
+ console.log('overwriting dataset')
+ }}
+ >Ok</Button> </>}
</>
}
>
- <div>
+ {!overwriteDataSet && <div>
<div>
To explore the results of this query, we need to save it as a virtual dataset
</div>
@@ -98,7 +118,13 @@ export const SaveDatasetModal: FunctionComponent<> = ({visible, onOk, onCancel,
/>
</Radio>
</Radio.Group>
- </div>
+ </div>
+ }
+ {overwriteDataSet &&
+ <div>
+ Are you sure you want to overwrite this dataset?
+ </div>
+ }
</Modal>
);
};