fix(explore): don't respect y-axis formatting (#29367)

This commit is contained in:
JUST.in DO IT 2024-06-26 04:16:36 -07:00 committed by GitHub
parent de6a518161
commit 58f33d227a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 51 additions and 16 deletions

View File

@ -17,7 +17,7 @@
* under the License.
*/
import { defaultState } from 'src/explore/store';
import { render } from 'spec/helpers/testing-library';
import { render, waitFor } from 'spec/helpers/testing-library';
import { useSelector } from 'react-redux';
import { ExplorePageState } from 'src/explore/types';
import StashFormDataContainer from '.';
@ -54,3 +54,31 @@ test('should stash form data from fieldNames', () => {
'granularity_sqla',
);
});
test('should restore form data from fieldNames', async () => {
const { granularity_sqla, ...formData } = defaultState.form_data;
const { container } = render(
<StashFormDataContainer
shouldStash={false}
fieldNames={['granularity_sqla']}
>
<FormDataMock />
</StashFormDataContainer>,
{
useRedux: true,
initialState: {
explore: {
form_data: formData,
hiddenFormData: {
granularity_sqla,
},
},
},
},
);
await waitFor(() =>
expect(container.querySelector('div')).toHaveTextContent(
'granularity_sqla',
),
);
});

View File

@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
import { useEffect, useRef, FC } from 'react';
import { useEffect, FC } from 'react';
import { useDispatch } from 'react-redux';
import { setStashFormData } from 'src/explore/actions/exploreActions';
@ -33,16 +33,11 @@ const StashFormDataContainer: FC<Props> = ({
children,
}) => {
const dispatch = useDispatch();
const isMounted = useRef(false);
const onVisibleUpdate = useEffectEvent((shouldStash: boolean) =>
dispatch(setStashFormData(shouldStash, fieldNames)),
);
useEffect(() => {
if (!isMounted.current && !shouldStash) {
isMounted.current = true;
} else {
onVisibleUpdate(shouldStash);
}
onVisibleUpdate(shouldStash);
}, [shouldStash, onVisibleUpdate]);
return <>{children}</>;

View File

@ -261,14 +261,16 @@ export default function exploreReducer(state = {}, action) {
}
const restoredField = pick(hiddenFormData, fieldNames);
return {
...state,
form_data: {
...form_data,
...restoredField,
},
hiddenFormData: omit(hiddenFormData, fieldNames),
};
return Object.keys(restoredField).length === 0
? state
: {
...state,
form_data: {
...form_data,
...restoredField,
},
hiddenFormData: omit(hiddenFormData, fieldNames),
};
},
[actions.SLICE_UPDATED]() {
return {

View File

@ -33,3 +33,13 @@ test('reset hiddenFormData on SET_STASH_FORM_DATA', () => {
expect(newState2.form_data).toEqual({ c: 4 });
expect(newState2.hiddenFormData).toEqual({ a: 3 });
});
test('skips updates when the field is already updated on SET_STASH_FORM_DATA', () => {
const initialState = {
form_data: { a: 3, c: 4 },
hiddenFormData: { b: 2 },
};
const restoreAction = setStashFormData(false, ['c', 'd']);
const newState = exploreReducer(initialState, restoreAction);
expect(newState).toBe(initialState);
});