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 <[email protected]> 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> ); };
