mirror of
https://github.com/apache/superset.git
synced 2024-09-17 11:09:47 -04:00
Rerender chart without clicking query button for fields (#1658)
* For some fields we would like to re-render chart once field is * changed, saving user the time to click query button * Such fields are stored in an array in store, could add more fields in * the future
This commit is contained in:
parent
6b80f5bb35
commit
b370ef0229
@ -7,6 +7,7 @@ import ChartContainer from './ChartContainer';
|
|||||||
import ControlPanelsContainer from './ControlPanelsContainer';
|
import ControlPanelsContainer from './ControlPanelsContainer';
|
||||||
import SaveModal from './SaveModal';
|
import SaveModal from './SaveModal';
|
||||||
import QueryAndSaveBtns from '../../explore/components/QueryAndSaveBtns';
|
import QueryAndSaveBtns from '../../explore/components/QueryAndSaveBtns';
|
||||||
|
import { autoQueryFields } from '../stores/store';
|
||||||
const $ = require('jquery');
|
const $ = require('jquery');
|
||||||
|
|
||||||
const propTypes = {
|
const propTypes = {
|
||||||
@ -29,12 +30,24 @@ class ExploreViewContainer extends React.Component {
|
|||||||
window.addEventListener('resize', this.handleResize.bind(this));
|
window.addEventListener('resize', this.handleResize.bind(this));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
componentWillReceiveProps(nextProps) {
|
||||||
|
let refreshChart = false;
|
||||||
|
autoQueryFields.forEach((field) => {
|
||||||
|
if (nextProps.form_data[field] !== this.props.form_data[field]) {
|
||||||
|
refreshChart = true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if (refreshChart) {
|
||||||
|
this.onQuery(nextProps.form_data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
componentWillUnmount() {
|
componentWillUnmount() {
|
||||||
window.removeEventListener('resize', this.handleResize.bind(this));
|
window.removeEventListener('resize', this.handleResize.bind(this));
|
||||||
}
|
}
|
||||||
onQuery() {
|
|
||||||
|
onQuery(form_data) {
|
||||||
const data = {};
|
const data = {};
|
||||||
const form_data = this.props.form_data;
|
|
||||||
Object.keys(form_data).forEach((field) => {
|
Object.keys(form_data).forEach((field) => {
|
||||||
// filter out null fields
|
// filter out null fields
|
||||||
if (form_data[field] !== null && field !== 'datasource') {
|
if (form_data[field] !== null && field !== 'datasource') {
|
||||||
@ -101,7 +114,7 @@ class ExploreViewContainer extends React.Component {
|
|||||||
<div className="col-sm-4">
|
<div className="col-sm-4">
|
||||||
<QueryAndSaveBtns
|
<QueryAndSaveBtns
|
||||||
canAdd="True"
|
canAdd="True"
|
||||||
onQuery={this.onQuery.bind(this)}
|
onQuery={this.onQuery.bind(this, this.props.form_data)}
|
||||||
onSave={this.toggleModal.bind(this)}
|
onSave={this.toggleModal.bind(this)}
|
||||||
/>
|
/>
|
||||||
<br /><br />
|
<br /><br />
|
||||||
@ -109,6 +122,7 @@ class ExploreViewContainer extends React.Component {
|
|||||||
actions={this.props.actions}
|
actions={this.props.actions}
|
||||||
form_data={this.props.form_data}
|
form_data={this.props.form_data}
|
||||||
datasource_type={this.props.datasource_type}
|
datasource_type={this.props.datasource_type}
|
||||||
|
onQuery={this.onQuery.bind(this, this.props.form_data)}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div className="col-sm-8">
|
<div className="col-sm-8">
|
||||||
|
@ -1727,3 +1727,9 @@ export function initialState(vizType = 'table') {
|
|||||||
isStarred: false,
|
isStarred: false,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Control Panel fields that re-render chart without need for 'Query button'
|
||||||
|
export const autoQueryFields = [
|
||||||
|
'datasource',
|
||||||
|
'viz_type',
|
||||||
|
];
|
||||||
|
Loading…
Reference in New Issue
Block a user