From e3d7fbc87e4d1d1344e567470d3fe3fb5364a895 Mon Sep 17 00:00:00 2001 From: Holger Bruch Date: Mon, 20 Dec 2021 11:53:03 +0100 Subject: [PATCH 1/2] Update viewstate on property changes --- .../legacy-preset-chart-deckgl/src/DeckGLContainer.jsx | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/superset-frontend/plugins/legacy-preset-chart-deckgl/src/DeckGLContainer.jsx b/superset-frontend/plugins/legacy-preset-chart-deckgl/src/DeckGLContainer.jsx index 133d83348e42a..87d5d1239e630 100644 --- a/superset-frontend/plugins/legacy-preset-chart-deckgl/src/DeckGLContainer.jsx +++ b/superset-frontend/plugins/legacy-preset-chart-deckgl/src/DeckGLContainer.jsx @@ -63,6 +63,12 @@ export class DeckGLContainer extends React.Component { }; } + UNSAFE_componentWillReceiveProps(nextProps) { + if (nextProps.viewport !== this.props.viewport) { + this.setState({ viewState: nextProps.viewport }); + } + } + componentWillUnmount() { clearInterval(this.state.timer); } From dbbfec7bfc010fd84b671edcc963b9f98b5df9e3 Mon Sep 17 00:00:00 2001 From: Holger Bruch Date: Wed, 22 Dec 2021 14:06:48 +0100 Subject: [PATCH 2/2] Compare props via isEqual --- .../plugins/legacy-preset-chart-deckgl/src/DeckGLContainer.jsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/superset-frontend/plugins/legacy-preset-chart-deckgl/src/DeckGLContainer.jsx b/superset-frontend/plugins/legacy-preset-chart-deckgl/src/DeckGLContainer.jsx index 87d5d1239e630..53c6f73a2e09f 100644 --- a/superset-frontend/plugins/legacy-preset-chart-deckgl/src/DeckGLContainer.jsx +++ b/superset-frontend/plugins/legacy-preset-chart-deckgl/src/DeckGLContainer.jsx @@ -22,6 +22,7 @@ */ import React from 'react'; import PropTypes from 'prop-types'; +import { isEqual } from 'lodash'; import { StaticMap } from 'react-map-gl'; import DeckGL from 'deck.gl'; import { styled } from '@superset-ui/core'; @@ -64,7 +65,7 @@ export class DeckGLContainer extends React.Component { } UNSAFE_componentWillReceiveProps(nextProps) { - if (nextProps.viewport !== this.props.viewport) { + if (!isEqual(nextProps.viewport, this.props.viewport)) { this.setState({ viewState: nextProps.viewport }); } }