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 398bfee0cabd5e9a13615cb8d40ec8ba6eca45b5 Author: hughhhh <[email protected]> AuthorDate: Thu Nov 19 13:24:33 2020 -0800 hacked overwrite process --- .../src/SqlLab/components/ResultSet.tsx | 42 ++++++++++++++++++++++ .../src/SqlLab/components/SaveDatasetModal.tsx | 16 +++------ 2 files changed, 47 insertions(+), 11 deletions(-) diff --git a/superset-frontend/src/SqlLab/components/ResultSet.tsx b/superset-frontend/src/SqlLab/components/ResultSet.tsx index 56acb70..02f0bd7 100644 --- a/superset-frontend/src/SqlLab/components/ResultSet.tsx +++ b/superset-frontend/src/SqlLab/components/ResultSet.tsx @@ -94,6 +94,7 @@ export default class ResultSet extends React.PureComponent< userDatasetsOwned: [], saveDatasetRadioBtnState: 1, overwriteDataSet: false, + datasetToOverwrite: {} }; this.changeSearch = this.changeSearch.bind(this); @@ -108,6 +109,8 @@ export default class ResultSet extends React.PureComponent< this.handleDatasetNameChange = this.handleDatasetNameChange.bind(this); this.handleSaveDatasetRadioBtnState = this.handleSaveDatasetRadioBtnState.bind(this); this.handleOverwriteCancel = this.handleOverwriteCancel.bind(this); + this.handleOverwriteDataset = this.handleOverwriteDataset.bind(this); + this.handleOverwriteDatasetOption = this.handleOverwriteDatasetOption.bind(this); } componentDidMount() { @@ -190,6 +193,43 @@ export default class ResultSet extends React.PureComponent< } } + handleOverwriteDatasetOption(data, option) { + console.log(option); + this.setState({ datasetToOverwrite: option }) + } + + handleOverwriteDataset() { + console.log('handle overwrite dataset') + const { sql, results } = this.props.query; + const { datasetToOverwrite } = this.state + console.log(sql) + console.log(results.selected_columns) + console.log(datasetToOverwrite) + + // HACK: to clear the columns in the previous dataset and update + // it with the new selected columns from the query + SupersetClient.put({ + endpoint: `api/v1/dataset/${datasetToOverwrite.dataSetId}`, + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + columns: [] + }), + }).then(d => { + console.log(d) + }).catch(err => console.log(err)) + + SupersetClient.put({ + endpoint: `api/v1/dataset/${datasetToOverwrite.dataSetId}`, + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + sql, + columns: results.selected_columns.map(d => ({column_name: d.name})) + }), + }).then(d => { + console.log(d) + }).catch(err => console.log(err)) + } + handleSaveInDataset() { console.log('Saving dataset'); console.log(this.state.saveDatasetRadioBtnState) @@ -276,6 +316,8 @@ export default class ResultSet extends React.PureComponent< saveDatasetRadioBtnState={this.state.saveDatasetRadioBtnState} overwriteDataSet={this.state.overwriteDataSet} handleOverwriteCancel={this.handleOverwriteCancel} + handleOverwriteDataset={this.handleOverwriteDataset} + handleOverwriteDatasetOption={this.handleOverwriteDatasetOption} /> <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 4816cac..7f9ce1d 100644 --- a/superset-frontend/src/SqlLab/components/SaveDatasetModal.tsx +++ b/superset-frontend/src/SqlLab/components/SaveDatasetModal.tsx @@ -33,13 +33,14 @@ interface SaveDatasetModalProps = { } // eslint-disable-next-line no-empty-pattern -export const SaveDatasetModal: FunctionComponent<> = ({visible, onOk, onCancel, handleDatasetNameChange, userDatasetsOwned, handleSaveDatasetRadioBtnState, saveDatasetRadioBtnState, overwriteDataSet, handleOverwriteCancel}) => { +export const SaveDatasetModal: FunctionComponent<> = ({visible, onOk, onCancel, handleDatasetNameChange, userDatasetsOwned, handleSaveDatasetRadioBtnState, saveDatasetRadioBtnState, overwriteDataSet, handleOverwriteCancel, handleOverwriteDataset, handleOverwriteDatasetOption}) => { const [options, setOptions] = useState([]); const [radioOption, setRadioOptions] = useState(1); const onSearch = (searchText) => { + console.log(userDatasetsOwned) setOptions( - !searchText ? [] : userDatasetsOwned.map(d => ({value: d.dataSetName})), + !searchText ? [] : userDatasetsOwned.map(d => ({value: d.dataSetName, dataSetId: d.dataSetId})), ); }; @@ -47,10 +48,6 @@ export const SaveDatasetModal: FunctionComponent<> = ({visible, onOk, onCancel, return option.value.includes(inputValue) } - const onSelect = (data) => { - console.log('onSelect', data); - }; - const radioStyle = { display: 'block', height: '30px', @@ -80,7 +77,6 @@ export const SaveDatasetModal: FunctionComponent<> = ({visible, onOk, onCancel, buttonStyle="danger" className="m-r-5" onClick={() => { - console.log('go back to original screen') handleOverwriteCancel() }} >Cancel</Button> @@ -88,9 +84,7 @@ export const SaveDatasetModal: FunctionComponent<> = ({visible, onOk, onCancel, buttonSize="sm" buttonStyle="primary" className="m-r-5" - onClick={() => { - console.log('overwriting dataset') - }} + onClick={handleOverwriteDataset} >Ok</Button> </>} </> } @@ -111,7 +105,7 @@ export const SaveDatasetModal: FunctionComponent<> = ({visible, onOk, onCancel, style={{ width: 200, }} - onSelect={onSelect} + onSelect={handleOverwriteDatasetOption} onSearch={onSearch} placeholder="input here" filterOption={filterAutocompleteOption}
