diff --git a/superset/assets/src/chart/chartAction.js b/superset/assets/src/chart/chartAction.js index 1d3e9f333cc64..58ad1028520ea 100644 --- a/superset/assets/src/chart/chartAction.js +++ b/superset/assets/src/chart/chartAction.js @@ -202,8 +202,13 @@ export function runQuery(formData, force = false, timeout = 60, key) { }; } +export const SQLLAB_REDIRECT_FAILED = 'SQLLAB_REDIRECT_FAILED'; +export function sqllabRedirectFailed(error, key) { + return { type: SQLLAB_REDIRECT_FAILED, error, key }; +} + export function redirectSQLLab(formData) { - return function () { + return function (dispatch) { const { url, payload } = getExploreUrlAndPayload({ formData, endpointType: 'query' }); $.ajax({ type: 'POST', @@ -218,7 +223,7 @@ export function redirectSQLLab(formData) { .search({ datasourceKey: formData.datasource, sql: response.query }); window.open(redirectUrl.href(), '_blank'); }, - error: () => notify.error(t("The SQL couldn't be loaded")), + error: (xhr, status, error) => dispatch(sqllabRedirectFailed(error, formData.slice_id)), }); }; } diff --git a/superset/assets/src/chart/chartReducer.js b/superset/assets/src/chart/chartReducer.js index ea8de8b54d9ea..5563d5c8b2096 100644 --- a/superset/assets/src/chart/chartReducer.js +++ b/superset/assets/src/chart/chartReducer.js @@ -133,6 +133,12 @@ export default function chartReducer(charts = {}, action) { annotationQuery, }; }, + [actions.SQLLAB_REDIRECT_FAILED](state) { + return { ...state, + chartStatus: 'failed', + chartAlert: t('An error occurred while redirecting to SQL Lab: %s', action.error), + }; + }, }; /* eslint-disable no-param-reassign */