fix(native-filters): handle descending sorting correctly (#15112)

This commit is contained in:
Ville Brofeldt 2021-06-11 11:44:16 +03:00 committed by GitHub
parent 3456dd571c
commit 5e825cf063
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 42 additions and 5 deletions

View File

@ -25,7 +25,7 @@ describe('Select buildQuery', () => {
datasource: '5__table',
groupby: ['my_col'],
viz_type: 'filter_select',
sortAscending: false,
sortAscending: undefined,
sortMetric: undefined,
filters: undefined,
enableEmptyFilter: false,
@ -47,7 +47,7 @@ describe('Select buildQuery', () => {
expect(query.orderby).toEqual([]);
});
it('should handle sort metric correctly', () => {
it('should sort descending by metric', () => {
const queryContext = buildQuery({
...formData,
sortMetric: 'my_metric',
@ -60,6 +60,43 @@ describe('Select buildQuery', () => {
expect(query.orderby).toEqual([['my_metric', false]]);
});
it('should sort ascending by metric', () => {
const queryContext = buildQuery({
...formData,
sortMetric: 'my_metric',
sortAscending: true,
});
expect(queryContext.queries.length).toEqual(1);
const [query] = queryContext.queries;
expect(query.groupby).toEqual(['my_col']);
expect(query.metrics).toEqual(['my_metric']);
expect(query.orderby).toEqual([['my_metric', true]]);
});
it('should sort ascending by column', () => {
const queryContext = buildQuery({
...formData,
sortAscending: true,
});
expect(queryContext.queries.length).toEqual(1);
const [query] = queryContext.queries;
expect(query.groupby).toEqual(['my_col']);
expect(query.metrics).toEqual([]);
expect(query.orderby).toEqual([['my_col', true]]);
});
it('should sort descending by column', () => {
const queryContext = buildQuery({
...formData,
sortAscending: false,
});
expect(queryContext.queries.length).toEqual(1);
const [query] = queryContext.queries;
expect(query.groupby).toEqual(['my_col']);
expect(query.metrics).toEqual([]);
expect(query.orderby).toEqual([['my_col', false]]);
});
it('should add text search parameter to query filter', () => {
const queryContext = buildQuery(formData, {
ownState: {

View File

@ -65,8 +65,8 @@ const buildQuery: BuildQuery<PluginFilterSelectQueryFormData> = (
metrics: sortMetric ? [sortMetric] : [],
filters: filters.concat(extra_filters),
orderby:
sortMetric || sortAscending
? sortColumns.map(column => [column, sortAscending])
sortMetric || sortAscending !== undefined
? sortColumns.map(column => [column, !!sortAscending])
: [],
},
];

View File

@ -39,7 +39,7 @@ interface PluginFilterSelectCustomizeProps {
defaultToFirstItem: boolean;
inputRef?: RefObject<HTMLInputElement>;
searchAllOptions: boolean;
sortAscending: boolean;
sortAscending?: boolean;
sortMetric?: string;
}