This is an automated email from the ASF dual-hosted git repository.
amitmiran 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 665459f feat(native-filters): add null option to value filter (#15419)
665459f is described below
commit 665459fbcaca3d97f101e403481ba5c3c3d518ae
Author: Mironov Danil <[email protected]>
AuthorDate: Thu Jul 1 16:06:10 2021 +0300
feat(native-filters): add null option to value filter (#15419)
* fix: add null var to native filter (#15291)
* small fix
* refactoring code
* restructure the JS code
* update testcase
---
.../filters/components/Select/buildQuery.test.ts | 2 +-
.../src/filters/components/Select/buildQuery.ts | 47 +++++++++++-----------
2 files changed, 24 insertions(+), 25 deletions(-)
diff --git a/superset-frontend/src/filters/components/Select/buildQuery.test.ts
b/superset-frontend/src/filters/components/Select/buildQuery.test.ts
index 133e49f..08b7037 100644
--- a/superset-frontend/src/filters/components/Select/buildQuery.test.ts
+++ b/superset-frontend/src/filters/components/Select/buildQuery.test.ts
@@ -42,7 +42,7 @@ describe('Select buildQuery', () => {
expect(queryContext.queries.length).toEqual(1);
const [query] = queryContext.queries;
expect(query.groupby).toEqual(['my_col']);
- expect(query.filters).toEqual([{ col: 'my_col', op: 'IS NOT NULL' }]);
+ expect(query.filters).toEqual([]);
expect(query.metrics).toEqual([]);
expect(query.orderby).toEqual([]);
});
diff --git a/superset-frontend/src/filters/components/Select/buildQuery.ts
b/superset-frontend/src/filters/components/Select/buildQuery.ts
index f85be46..a66a855 100644
--- a/superset-frontend/src/filters/components/Select/buildQuery.ts
+++ b/superset-frontend/src/filters/components/Select/buildQuery.ts
@@ -33,29 +33,28 @@ const buildQuery:
BuildQuery<PluginFilterSelectQueryFormData> = (
const { sortAscending, sortMetric } = { ...DEFAULT_FORM_DATA, ...formData };
return buildQueryContext(formData, baseQueryObject => {
const { columns = [], filters = [] } = baseQueryObject;
- const extra_filters: QueryObjectFilterClause[] = columns.map(column => {
- if (search && coltypeMap[column] === GenericDataType.STRING) {
- return {
- col: column,
- op: 'ILIKE',
- val: `%${search}%`,
- };
- }
- if (
- search &&
- coltypeMap[column] === GenericDataType.NUMERIC &&
- !Number.isNaN(Number(search))
- ) {
- // for numeric columns we apply a >= where clause
- return {
- col: column,
- op: '>=',
- val: Number(search),
- };
- }
- // if no search is defined, make sure the col value is not null
- return { col: column, op: 'IS NOT NULL' };
- });
+ const extraFilters: QueryObjectFilterClause[] = [];
+ if (search) {
+ columns.forEach(column => {
+ if (coltypeMap[column] === GenericDataType.STRING) {
+ extraFilters.push({
+ col: column,
+ op: 'ILIKE',
+ val: `%${search}%`,
+ });
+ } else if (
+ coltypeMap[column] === GenericDataType.NUMERIC &&
+ !Number.isNaN(Number(search))
+ ) {
+ // for numeric columns we apply a >= where clause
+ extraFilters.push({
+ col: column,
+ op: '>=',
+ val: Number(search),
+ });
+ }
+ });
+ }
const sortColumns = sortMetric ? [sortMetric] : columns;
const query: QueryObject[] = [
@@ -63,7 +62,7 @@ const buildQuery: BuildQuery<PluginFilterSelectQueryFormData>
= (
...baseQueryObject,
groupby: columns,
metrics: sortMetric ? [sortMetric] : [],
- filters: filters.concat(extra_filters),
+ filters: filters.concat(extraFilters),
orderby:
sortMetric || sortAscending !== undefined
? sortColumns.map(column => [column, !!sortAscending])