diff --git a/superset/assets/javascripts/explore/components/ChartContainer.jsx b/superset/assets/javascripts/explore/components/ChartContainer.jsx index 3243f32e1f604..d5b4545192307 100644 --- a/superset/assets/javascripts/explore/components/ChartContainer.jsx +++ b/superset/assets/javascripts/explore/components/ChartContainer.jsx @@ -178,7 +178,8 @@ class ChartContainer extends React.PureComponent { const mockSlice = this.getMockedSliceObject(); this.setState({ mockSlice }); try { - visMap[this.props.viz_type](mockSlice, this.props.queryResponse); + const viz = visMap[this.props.viz_type]; + viz(mockSlice, this.props.queryResponse, this.props.actions.setControlValue); } catch (e) { this.props.actions.chartRenderingFailed(e); } diff --git a/superset/assets/javascripts/explore/components/controls/TextControl.jsx b/superset/assets/javascripts/explore/components/controls/TextControl.jsx index c3f7aa56852ab..4fe558e0524ac 100644 --- a/superset/assets/javascripts/explore/components/controls/TextControl.jsx +++ b/superset/assets/javascripts/explore/components/controls/TextControl.jsx @@ -29,13 +29,10 @@ const defaultProps = { export default class TextControl extends React.Component { constructor(props) { super(props); - const value = props.value ? props.value.toString() : ''; - this.state = { value }; this.onChange = this.onChange.bind(this); } onChange(event) { let value = event.target.value || ''; - this.setState({ value }); // Validation & casting const errors = []; @@ -58,6 +55,7 @@ export default class TextControl extends React.Component { this.props.onChange(value, errors); } render() { + const value = this.props.value ? this.props.value.toString() : ''; return (
@@ -66,7 +64,7 @@ export default class TextControl extends React.Component { type="text" placeholder="" onChange={this.onChange} - value={this.state.value} + value={value} />
diff --git a/superset/assets/visualizations/mapbox.jsx b/superset/assets/visualizations/mapbox.jsx index 9a868534723d1..c01ad28a40a85 100644 --- a/superset/assets/visualizations/mapbox.jsx +++ b/superset/assets/visualizations/mapbox.jsx @@ -8,6 +8,7 @@ import ScatterPlotOverlay from 'react-map-gl/dist/overlays/scatterplot.react'; import Immutable from 'immutable'; import supercluster from 'supercluster'; import ViewportMercator from 'viewport-mercator-project'; + import { kmToPixels, rgbLuminance, @@ -17,8 +18,9 @@ import { DEFAULT_LATITUDE, DEFAULT_ZOOM, } from '../utils/common'; +import './mapbox.css'; -require('./mapbox.css'); +const NOOP = () => {}; class ScatterPlotGlowOverlay extends ScatterPlotOverlay { drawText(ctx, pixel, options = {}) { @@ -201,9 +203,10 @@ class MapboxViz extends React.Component { } onChangeViewport(viewport) { - this.setState({ - viewport, - }); + this.setState({ viewport }); + this.props.setControlValue('viewport_longitude', viewport.longitude); + this.props.setControlValue('viewport_latitude', viewport.latitude); + this.props.setControlValue('viewport_zoom', viewport.zoom); } render() { @@ -220,11 +223,6 @@ class MapboxViz extends React.Component { const clusters = this.props.clusterer.getClusters(bbox, Math.round(this.state.viewport.zoom)); const isDragging = this.state.viewport.isDragging === undefined ? false : this.state.viewport.isDragging; - - d3.select('#viewport_longitude').attr('value', this.state.viewport.longitude); - d3.select('#viewport_latitude').attr('value', this.state.viewport.latitude); - d3.select('#viewport_zoom').attr('value', this.state.viewport.zoom); - return ( , div.node(), );