[explore] show the broken query when failing (#1871)

* Return query when failing

* Linting

* sjson -> simplejson
This commit is contained in:
Maxime Beauchemin
2017-01-05 10:00:39 -08:00
committed by GitHub
parent e3b296c558
commit c14c7edc5e
9 changed files with 132 additions and 116 deletions

View File

@@ -129,8 +129,8 @@ export function chartUpdateSucceeded(query) {
}
export const CHART_UPDATE_FAILED = 'CHART_UPDATE_FAILED';
export function chartUpdateFailed(error) {
return { type: CHART_UPDATE_FAILED, error };
export function chartUpdateFailed(error, query) {
return { type: CHART_UPDATE_FAILED, error, query };
}
export const UPDATE_EXPLORE_ENDPOINTS = 'UPDATE_EXPLORE_ENDPOINTS';

View File

@@ -142,7 +142,13 @@ class ChartContainer extends React.Component {
},
error(msg) {
props.actions.chartUpdateFailed(msg);
let payload = { error: msg };
try {
payload = JSON.parse(msg);
} catch (e) {
// pass
}
props.actions.chartUpdateFailed(payload.error, payload.query);
},
d3format: (col, number) => {

View File

@@ -108,16 +108,14 @@ export const exploreReducer = function (state, action) {
);
},
[actions.CHART_UPDATE_SUCCEEDED]() {
const vizUpdates = {
query: action.query,
};
return Object.assign(
{},
state,
{
chartStatus: 'success',
viz: Object.assign({}, state.viz, vizUpdates),
});
viz: Object.assign({}, state.viz, { query: action.query }),
}
);
},
[actions.CHART_UPDATE_STARTED]() {
const chartUpdateStartTime = now();
@@ -138,9 +136,12 @@ export const exploreReducer = function (state, action) {
});
},
[actions.CHART_UPDATE_FAILED]() {
const chartUpdateEndTime = now();
return Object.assign({}, state,
{ chartStatus: 'failed', chartAlert: action.error, chartUpdateEndTime });
return Object.assign({}, state, {
chartStatus: 'failed',
chartAlert: action.error,
chartUpdateEndTime: now(),
viz: Object.assign({}, state.viz, { query: action.query }),
});
},
[actions.UPDATE_CHART_STATUS]() {
const newState = Object.assign({}, state, { chartStatus: action.status });

View File

@@ -68,11 +68,6 @@ const px = function () {
$('#timer').text(num.toFixed(2) + ' sec');
};
let qrystr = '';
const always = function () {
// Private f, runs after done and error
clearInterval(timer);
$('#timer').removeClass('btn-warning');
};
slice = {
data,
container,
@@ -123,6 +118,13 @@ const px = function () {
return utils.d3format(format, number);
},
/* eslint no-shadow: 0 */
always(data) {
clearInterval(timer);
$('#timer').removeClass('btn-warning');
if (data && data.query) {
slice.viewSqlQuery = data.query;
}
},
done(payload) {
Object.assign(data, payload);
@@ -131,14 +133,10 @@ const px = function () {
container.fadeTo(0.5, 1);
container.show();
if (data !== undefined) {
slice.viewSqlQuery = data.query;
}
$('#timer').removeClass('label-warning label-danger');
$('#timer').addClass('label-success');
$('#timer').removeClass('label-warning label-danger');
$('.query-and-save button').removeAttr('disabled');
always(data);
this.always(data);
controller.done(this);
},
getErrorMsg(xhr) {
@@ -161,8 +159,9 @@ const px = function () {
token.find('img.loading').hide();
container.fadeTo(0.5, 1);
let errHtml = '';
let o;
try {
const o = JSON.parse(msg);
o = JSON.parse(msg);
if (o.error) {
errorMsg = o.error;
}
@@ -181,7 +180,7 @@ const px = function () {
$('span.query').removeClass('disabled');
$('#timer').addClass('btn-danger');
$('.query-and-save button').removeAttr('disabled');
always(data);
this.always(o);
controller.error(this);
},
clearError() {