mirror of
https://github.com/apache/superset.git
synced 2026-04-21 00:54:44 +00:00
79 lines
2.6 KiB
JavaScript
79 lines
2.6 KiB
JavaScript
/* eslint camelcase: 0 */
|
|
import { now } from '../../modules/dates';
|
|
import * as actions from '../actions/chartActions';
|
|
import { QUERY_TIMEOUT_THRESHOLD } from '../../constants';
|
|
|
|
export default function chartReducer(state = {}, action) {
|
|
const actionHandlers = {
|
|
[actions.CHART_UPDATE_SUCCEEDED]() {
|
|
return Object.assign(
|
|
{},
|
|
state,
|
|
{
|
|
chartStatus: 'success',
|
|
queryResponse: action.queryResponse,
|
|
},
|
|
);
|
|
},
|
|
[actions.CHART_UPDATE_STARTED]() {
|
|
return Object.assign({}, state,
|
|
{
|
|
chartStatus: 'loading',
|
|
chartUpdateEndTime: null,
|
|
chartUpdateStartTime: now(),
|
|
queryRequest: action.queryRequest,
|
|
latestQueryFormData: action.latestQueryFormData,
|
|
});
|
|
},
|
|
[actions.CHART_UPDATE_STOPPED]() {
|
|
return Object.assign({}, state,
|
|
{
|
|
chartStatus: 'stopped',
|
|
chartAlert: 'Updating chart was stopped',
|
|
});
|
|
},
|
|
[actions.CHART_RENDERING_FAILED]() {
|
|
return Object.assign({}, state, {
|
|
chartStatus: 'failed',
|
|
chartAlert: 'An error occurred while rendering the visualization: ' + action.error,
|
|
});
|
|
},
|
|
[actions.CHART_UPDATE_TIMEOUT]() {
|
|
return Object.assign({}, state, {
|
|
chartStatus: 'failed',
|
|
chartAlert: '<strong>Query timeout</strong> - visualization query are set to timeout at ' +
|
|
`${QUERY_TIMEOUT_THRESHOLD / 1000} seconds. ` +
|
|
'Perhaps your data has grown, your database is under unusual load, ' +
|
|
'or you are simply querying a data source that is to large to be processed within the timeout range. ' +
|
|
'If that is the case, we recommend that you summarize your data further.',
|
|
});
|
|
},
|
|
[actions.CHART_UPDATE_FAILED]() {
|
|
return Object.assign({}, state, {
|
|
chartStatus: 'failed',
|
|
chartAlert: action.queryResponse ? action.queryResponse.error : 'Network error.',
|
|
chartUpdateEndTime: now(),
|
|
queryResponse: action.queryResponse,
|
|
});
|
|
},
|
|
[actions.UPDATE_CHART_STATUS]() {
|
|
const newState = Object.assign({}, state, { chartStatus: action.status });
|
|
if (action.status === 'success' || action.status === 'failed') {
|
|
newState.chartUpdateEndTime = now();
|
|
}
|
|
return newState;
|
|
},
|
|
[actions.REMOVE_CHART_ALERT]() {
|
|
if (state.chartAlert !== null) {
|
|
return Object.assign({}, state, { chartAlert: null });
|
|
}
|
|
return state;
|
|
},
|
|
};
|
|
|
|
if (action.type in actionHandlers) {
|
|
return actionHandlers[action.type]();
|
|
}
|
|
return state;
|
|
}
|