Skip to content

Commit

Permalink
fix(explore): don't respect y-axis formatting (apache#29367)
Browse files Browse the repository at this point in the history
  • Loading branch information
justinpark authored Jun 26, 2024
1 parent de6a518 commit 58f33d2
Show file tree
Hide file tree
Showing 4 changed files with 51 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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 '.';
Expand Down Expand Up @@ -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',
),
);
});
Original file line number Diff line number Diff line change
Expand Up @@ -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';
Expand All @@ -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}</>;
Expand Down
18 changes: 10 additions & 8 deletions superset-frontend/src/explore/reducers/exploreReducer.js
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
10 changes: 10 additions & 0 deletions superset-frontend/src/explore/reducers/exploreReducer.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -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);
});

0 comments on commit 58f33d2

Please sign in to comment.