This is an automated email from the ASF dual-hosted git repository.
villebro pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/superset.git
The following commit(s) were added to refs/heads/master by this push:
new d2a6e8c fix(native-filters): avoid double load on initialization
(#15012)
d2a6e8c is described below
commit d2a6e8cd20274d7c8b850a973b3fc6869ee68792
Author: Ville Brofeldt <[email protected]>
AuthorDate: Mon Jun 7 13:47:02 2021 +0300
fix(native-filters): avoid double load on initialization (#15012)
---
.../components/Select/SelectFilterPlugin.test.tsx | 51 ++++++++++------------
.../components/Select/SelectFilterPlugin.tsx | 6 +--
2 files changed, 26 insertions(+), 31 deletions(-)
diff --git
a/superset-frontend/src/filters/components/Select/SelectFilterPlugin.test.tsx
b/superset-frontend/src/filters/components/Select/SelectFilterPlugin.test.tsx
index 70cb434..b29e642 100644
---
a/superset-frontend/src/filters/components/Select/SelectFilterPlugin.test.tsx
+++
b/superset-frontend/src/filters/components/Select/SelectFilterPlugin.test.tsx
@@ -30,7 +30,7 @@ const selectMultipleProps = {
enableEmptyFilter: true,
defaultToFirstItem: false,
inverseSelection: false,
- searchAllOptions: true,
+ searchAllOptions: false,
datasource: '3__table',
groupby: ['gender'],
adhocFilters: [],
@@ -48,7 +48,7 @@ const selectMultipleProps = {
},
height: 20,
hooks: {},
- ownState: { coltypeMap: { gender: 1 }, search: null },
+ ownState: {},
filterState: { value: ['boy'] },
queriesData: [
{
@@ -92,11 +92,6 @@ describe('SelectFilterPlugin', () => {
filterState: {
value: ['boy'],
},
- ownState: {
- coltypeMap: {
- gender: 1,
- },
- },
});
expect(setDataMask).toHaveBeenCalledWith({
__cache: {
@@ -115,11 +110,6 @@ describe('SelectFilterPlugin', () => {
label: 'boy',
value: ['boy'],
},
- ownState: {
- coltypeMap: {
- gender: 1,
- },
- },
});
userEvent.click(screen.getByRole('combobox'));
userEvent.click(screen.getByTitle('girl'));
@@ -140,12 +130,6 @@ describe('SelectFilterPlugin', () => {
label: 'boy, girl',
value: ['boy', 'girl'],
},
- ownState: {
- coltypeMap: {
- gender: 1,
- },
- search: null,
- },
});
});
@@ -169,11 +153,6 @@ describe('SelectFilterPlugin', () => {
label: '',
value: null,
},
- ownState: {
- coltypeMap: {
- gender: 1,
- },
- },
});
});
@@ -189,11 +168,6 @@ describe('SelectFilterPlugin', () => {
label: '',
value: null,
},
- ownState: {
- coltypeMap: {
- gender: 1,
- },
- },
});
});
@@ -218,6 +192,27 @@ describe('SelectFilterPlugin', () => {
label: 'girl (excluded)',
value: ['girl'],
},
+ });
+ });
+
+ it('Add ownState with column types when search all options', () => {
+ getWrapper({ searchAllOptions: true, multiSelect: false });
+ userEvent.click(screen.getByRole('combobox'));
+ userEvent.click(screen.getByTitle('girl'));
+ expect(setDataMask).toHaveBeenCalledWith({
+ extraFormData: {
+ filters: [
+ {
+ col: 'gender',
+ op: 'IN',
+ val: ['girl'],
+ },
+ ],
+ },
+ filterState: {
+ label: 'girl',
+ value: ['girl'],
+ },
ownState: {
coltypeMap: {
gender: 1,
diff --git
a/superset-frontend/src/filters/components/Select/SelectFilterPlugin.tsx
b/superset-frontend/src/filters/components/Select/SelectFilterPlugin.tsx
index 4afdc1d..d10544a 100644
--- a/superset-frontend/src/filters/components/Select/SelectFilterPlugin.tsx
+++ b/superset-frontend/src/filters/components/Select/SelectFilterPlugin.tsx
@@ -97,6 +97,7 @@ export default function PluginFilterSelect(props:
PluginFilterSelectProps) {
} = formData;
const groupby = ensureIsArray<string>(formData.groupby);
const [col] = groupby;
+ const [initialColtypeMap] = useState(coltypeMap);
const [selectedValues, setSelectedValues] = useState<SelectValue>(
filterState.value,
);
@@ -118,9 +119,6 @@ export default function PluginFilterSelect(props:
PluginFilterSelectProps) {
const [dataMask, dispatchDataMask] = useImmerReducer(reducer, {
extraFormData: {},
filterState,
- ownState: {
- coltypeMap,
- },
});
const updateDataMask = useCallback(
(values: SelectValue) => {
@@ -174,6 +172,7 @@ export default function PluginFilterSelect(props:
PluginFilterSelectProps) {
dispatchDataMask({
type: 'ownState',
ownState: {
+ coltypeMap: initialColtypeMap,
search: val,
},
});
@@ -194,6 +193,7 @@ export default function PluginFilterSelect(props:
PluginFilterSelectProps) {
dispatchDataMask({
type: 'ownState',
ownState: {
+ coltypeMap: initialColtypeMap,
search: null,
},
});