fix(Explore): Keep necessary form data to allow query mode switching (#29234)

This commit is contained in:
Ross Mabbett 2024-06-13 13:30:49 -04:00 committed by GitHub
parent daf37cbe58
commit 0dc9215c89
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 20 additions and 4 deletions

View File

@ -43,6 +43,7 @@ import {
LocalStorageKeys,
} from 'src/utils/localStorageHelpers';
import { RESERVED_CHART_URL_PARAMS, URL_PARAMS } from 'src/constants';
import { QUERY_MODE_REQUISITES } from 'src/explore/constants';
import { areObjectsEqual } from 'src/reduxUtils';
import * as logActions from 'src/logger/actions';
import {
@ -710,6 +711,12 @@ function ExploreViewContainer(props) {
ExploreViewContainer.propTypes = propTypes;
const retainQueryModeRequirements = hiddenFormData => {
Object.keys(hiddenFormData ?? {}).filter(
key => !QUERY_MODE_REQUISITES.has(key),
);
};
function mapStateToProps(state) {
const {
explore,
@ -722,10 +729,11 @@ function mapStateToProps(state) {
saveModal,
} = state;
const { controls, slice, datasource, metadata, hiddenFormData } = explore;
const form_data = omit(
getFormDataFromControls(controls),
Object.keys(hiddenFormData ?? {}),
);
const hasQueryMode = !!controls.query_mode?.value;
const fieldsToOmit = hasQueryMode
? retainQueryModeRequirements(hiddenFormData)
: hiddenFormData;
const form_data = omit(getFormDataFromControls(controls), fieldsToOmit);
const slice_id = form_data.slice_id ?? slice?.slice_id ?? 0; // 0 - unsaved chart
form_data.extra_form_data = mergeExtraFormData(
{ ...form_data.extra_form_data },

View File

@ -158,3 +158,11 @@ export const TIME_FILTER_MAP = {
export const POPOVER_INITIAL_HEIGHT = 240;
export const POPOVER_INITIAL_WIDTH = 320;
export const UNSAVED_CHART_ID = 0;
export const QUERY_MODE_REQUISITES = new Set([
'all_columns',
'groupby',
'metrics',
'percent_metrics',
'order_by_cols',
]);