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/15 01:47:04 UTC
[incubator-superset] 05/05: flake8
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 6d2a61b63ac7dd83dd016dc06cf629781612b4e5
Author: hughhhh <hu...@gmail.com>
AuthorDate: Sat Nov 14 17:46:06 2020 -0800
flake8
---
.../src/SqlLab/components/ResultSet.tsx | 23 ++++++-
.../src/SqlLab/components/SaveDatasetModal.tsx | 73 +++++++++++++++++-----
2 files changed, 78 insertions(+), 18 deletions(-)
diff --git a/superset-frontend/src/SqlLab/components/ResultSet.tsx b/superset-frontend/src/SqlLab/components/ResultSet.tsx
index 2c3e7f5..c613a0f 100644
--- a/superset-frontend/src/SqlLab/components/ResultSet.tsx
+++ b/superset-frontend/src/SqlLab/components/ResultSet.tsx
@@ -88,6 +88,7 @@ export default class ResultSet extends React.PureComponent<
searchText: '',
showExploreResultsButton: false,
data: [],
+ showSaveDatasetModal: false
};
this.changeSearch = this.changeSearch.bind(this);
@@ -97,6 +98,8 @@ export default class ResultSet extends React.PureComponent<
this.toggleExploreResultsButton = this.toggleExploreResultsButton.bind(
this,
);
+ this.handleSaveInDataset = this.handleSaveInDataset.bind(this);
+ this.handleHideSaveModal = this.handleHideSaveModal.bind(this);
}
componentDidMount() {
@@ -168,15 +171,30 @@ export default class ResultSet extends React.PureComponent<
}
}
+ handleSaveInDataset() {
+ console.log('Saving dataset');
+ }
+
+ handleHideSaveModal() {
+ console.log('hiding the modal');
+ this.setState({showSaveDatasetModal: false})
+ }
+
renderControls() {
if (this.props.search || this.props.visualize || this.props.csv) {
let { data } = this.props.query.results;
if (this.props.cache && this.props.query.cached) {
({ data } = this.state);
}
+
+ const { showSaveDatasetModal } = this.state;
return (
<div className="ResultSetControls">
- <SaveDatasetModal />
+ <SaveDatasetModal
+ visible={showSaveDatasetModal}
+ onOk={this.handleSaveInDataset}
+ onCancel={this.handleHideSaveModal}
+ />
<div className="ResultSetButtons">
{this.props.visualize &&
this.props.database &&
@@ -186,6 +204,9 @@ export default class ResultSet extends React.PureComponent<
query={this.props.query}
database={this.props.database}
actions={this.props.actions}
+ onClick={() => {
+ this.setState({showSaveDatasetModal: true})
+ }}
/>
)}
{this.props.csv && (
diff --git a/superset-frontend/src/SqlLab/components/SaveDatasetModal.tsx b/superset-frontend/src/SqlLab/components/SaveDatasetModal.tsx
index 7085991..e052e25 100644
--- a/superset-frontend/src/SqlLab/components/SaveDatasetModal.tsx
+++ b/superset-frontend/src/SqlLab/components/SaveDatasetModal.tsx
@@ -17,9 +17,10 @@
* under the License.
*/
-import React, { useState } from 'react';
+import React, { useState, FunctionComponent} from 'react';
import { Radio, AutoComplete, Input } from 'src/common/components';
import Modal from 'src/common/components/Modal';
+import Button from 'src/components/Button';
const mockVal = (str, repeat = 1) => {
return {
@@ -27,10 +28,14 @@ const mockVal = (str, repeat = 1) => {
};
};
+interface SaveDatasetModalProps = {
+}
+
// eslint-disable-next-line no-empty-pattern
-export const SaveDatasetModal = ({}) => {
+export const SaveDatasetModal: FunctionComponent<> = ({visible, onOk, onCancel}) => {
const [value, setValue] = useState('');
const [options, setOptions] = useState([]);
+ const [radioOption, setRadioOptions] = useState(1);
const onSearch = (searchText) => {
setOptions(
@@ -46,23 +51,57 @@ export const SaveDatasetModal = ({}) => {
setValue(data);
};
+ const onRadioChange = e => {
+ console.log('radio checked', e.target.value);
+ setRadioOptions(e.target.value)
+ };
+
+ const radioStyle = {
+ display: 'block',
+ height: '30px',
+ lineHeight: '30px',
+ };
+
return (
- <Modal show onHide={() => {}} title="Save a new dataset">
+ <Modal
+ show={visible}
+ onHide={() => {}}
+ title="Save a new dataset"
+ onCancel={onCancel}
+ footer={<>
+ <Button
+ buttonSize="sm"
+ buttonStyle="primary"
+ className="m-r-5"
+ onClick={onOk}
+ >
+ Save & Explore
+ </Button>
+ </>
+ }
+ >
<div>
- To explore the results of this query, we need to save it as a virtual dataset
- <Radio>Save as new dataset</Radio>
- <Input style={{ width: 200 }} defaultValue="my_new_dataset_A" />
- <br/>
- <Radio>Overwrite existing dataset</Radio>
- <AutoComplete
- options={options}
- style={{
- width: 200,
- }}
- onSelect={onSelect}
- onSearch={onSearch}
- placeholder="input here"
- />
+ <div>
+ To explore the results of this query, we need to save it as a virtual dataset
+ </div>
+ <Radio.Group onChange={onRadioChange} value={radioOption}>
+ <Radio style={radioStyle} value={1}>
+ Save as new dataset
+ <Input style={{ width: 200 }} defaultValue="my_new_dataset_A" />
+ </Radio>
+ <Radio style={radioStyle} value={2}>
+ Overwrite existing dataset
+ <AutoComplete
+ options={options}
+ style={{
+ width: 200,
+ }}
+ onSelect={onSelect}
+ onSearch={onSearch}
+ placeholder="input here"
+ />
+ </Radio>
+ </Radio.Group>
</div>
</Modal>
);