未验证 提交 5b4277e4 编写于 作者: V Ville Brofeldt 提交者: Ville Brofeldt

fix: extra filters for chart data endpoint (#10359)

* fix: extra filters

* fix old test and add new test

* add test for null filter value

* leave lowercase until all operators are fully uppercased

* bump packages

* rename test
上级 e2690f08
此差异已折叠。
......@@ -94,7 +94,7 @@
"@superset-ui/plugin-chart-table": "^0.14.11",
"@superset-ui/plugin-chart-word-cloud": "^0.14.9",
"@superset-ui/preset-chart-xy": "^0.14.9",
"@superset-ui/query": "^0.14.9",
"@superset-ui/query": "^0.14.12",
"@superset-ui/style": "^0.14.9",
"@superset-ui/superset-ui": "^0.14.9",
"@superset-ui/time-format": "^0.14.9",
......
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import getEffectiveExtraFilters from 'src/dashboard/util/charts/getEffectiveExtraFilters';
describe('getEffectiveExtraFilters', () => {
it('should create valid filters', () => {
const result = getEffectiveExtraFilters({
gender: ['girl'],
name: null,
__time_range: ' : 2020-07-17T00:00:00',
});
expect(result).toMatchObject([
{
col: 'gender',
op: 'in',
val: ['girl'],
},
{
col: '__time_range',
op: '=',
val: ' : 2020-07-17T00:00:00',
},
]);
});
});
......@@ -19,9 +19,11 @@
import { DataRecordFilters } from '@superset-ui/chart';
export default function getEffectiveExtraFilters(filters: DataRecordFilters) {
return Object.entries(filters).map(([column, values]) => ({
col: column,
op: 'in',
val: values,
}));
return Object.entries(filters)
.map(([column, values]) => ({
col: column,
op: Array.isArray(values) ? 'in' : '=',
val: values,
}))
.filter(filter => filter.val !== null);
}
......@@ -721,7 +721,7 @@ class ChartDataQueryObjectSchema(Schema):
fields.Dict(),
description="HAVING filters to be added to legacy Druid datasource queries. "
"This field is deprecated and should be passed to `extras` "
"as `filters_druid`.",
"as `having_druid`.",
deprecated=True,
)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册