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>
   );
 };