This is an automated email from the ASF dual-hosted git repository.
graceguo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-superset.git
The following commit(s) were added to refs/heads/master by this push:
new 744135c [fix] Add action for update chart id (#6769)
744135c is described below
commit 744135c7fe18c4807bad1aeabb47e7ba0f97cc82
Author: Grace Guo <[email protected]>
AuthorDate: Mon Jan 28 17:42:35 2019 -0800
[fix] Add action for update chart id (#6769)
---
superset/assets/src/chart/chartAction.js | 7 +++++++
superset/assets/src/chart/chartReducer.js | 8 ++++++++
superset/assets/src/explore/components/ExploreChartHeader.jsx | 1 +
superset/assets/src/explore/components/ExploreViewContainer.jsx | 3 +++
4 files changed, 19 insertions(+)
diff --git a/superset/assets/src/chart/chartAction.js
b/superset/assets/src/chart/chartAction.js
index aa0b85c..bcdc4e1 100644
--- a/superset/assets/src/chart/chartAction.js
+++ b/superset/assets/src/chart/chartAction.js
@@ -152,6 +152,13 @@ export function updateQueryFormData(value, key) {
return { type: UPDATE_QUERY_FORM_DATA, value, key };
}
+// in the sql lab -> explore flow, user can inline edit chart title,
+// then the chart will be assigned a new slice_id
+export const UPDATE_CHART_ID = 'UPDATE_CHART_ID';
+export function updateChartId(newId, key = 0) {
+ return { type: UPDATE_CHART_ID, newId, key };
+}
+
export const ADD_CHART = 'ADD_CHART';
export function addChart(chart, key) {
return { type: ADD_CHART, chart, key };
diff --git a/superset/assets/src/chart/chartReducer.js
b/superset/assets/src/chart/chartReducer.js
index dbbe71d..762a765 100644
--- a/superset/assets/src/chart/chartReducer.js
+++ b/superset/assets/src/chart/chartReducer.js
@@ -168,6 +168,14 @@ export default function chartReducer(charts = {}, action) {
if (action.type === actions.REMOVE_CHART) {
delete charts[action.key];
return charts;
+ } else if (action.type === actions.UPDATE_CHART_ID) {
+ const { newId, key } = action;
+ charts[newId] = {
+ ...charts[key],
+ id: newId,
+ };
+ delete charts[key];
+ return charts;
}
if (action.type in actionHandlers) {
diff --git a/superset/assets/src/explore/components/ExploreChartHeader.jsx
b/superset/assets/src/explore/components/ExploreChartHeader.jsx
index 8fd9387..d2f3b98 100644
--- a/superset/assets/src/explore/components/ExploreChartHeader.jsx
+++ b/superset/assets/src/explore/components/ExploreChartHeader.jsx
@@ -65,6 +65,7 @@ class ExploreChartHeader extends React.PureComponent {
.then((json) => {
const { data } = json;
if (isNewSlice) {
+ this.props.actions.updateChartId(data.slice.slice_id, 0);
this.props.actions.createNewSlice(
data.can_add, data.can_download, data.can_overwrite,
data.slice, data.form_data);
diff --git a/superset/assets/src/explore/components/ExploreViewContainer.jsx
b/superset/assets/src/explore/components/ExploreViewContainer.jsx
index 2548005..28355bc 100644
--- a/superset/assets/src/explore/components/ExploreViewContainer.jsx
+++ b/superset/assets/src/explore/components/ExploreViewContainer.jsx
@@ -109,6 +109,9 @@ class ExploreViewContainer extends React.Component {
const wasRendered =
['rendered', 'failed', 'stopped'].indexOf(this.props.chart.chartStatus)
> -1;
const isRendered = ['rendered', 'failed',
'stopped'].indexOf(nextProps.chart.chartStatus) > -1;
+ if (nextProps.chart.id !== this.props.chart.id) {
+ this.loadingLog.sourceId = nextProps.chart.id;
+ }
if (!wasRendered && isRendered) {
Logger.send(this.loadingLog);
}