From 6403c2121b69ef7d40f0d423d03879619506d0f0 Mon Sep 17 00:00:00 2001 From: Joe Reuter Date: Mon, 14 Jun 2021 17:35:06 +0200 Subject: [PATCH] fix auto interval filter building --- .../buckets/create_filter/histogram.test.ts | 35 ++++++++++++++----- .../aggs/buckets/create_filter/histogram.ts | 9 ++++- 2 files changed, 35 insertions(+), 9 deletions(-) diff --git a/src/plugins/data/common/search/aggs/buckets/create_filter/histogram.test.ts b/src/plugins/data/common/search/aggs/buckets/create_filter/histogram.test.ts index 7e975ef8456f7..c147708b5b2f9 100644 --- a/src/plugins/data/common/search/aggs/buckets/create_filter/histogram.test.ts +++ b/src/plugins/data/common/search/aggs/buckets/create_filter/histogram.test.ts @@ -12,11 +12,24 @@ import { mockAggTypesRegistry, mockGetFieldFormatsStart } from '../../test_helpe import { BUCKET_TYPES } from '../bucket_agg_types'; import { IBucketAggConfig } from '../bucket_agg_type'; import { createFilterHistogram } from './histogram'; +import { RangeFilter } from '../../../../es_query'; + +function validateFilter(filter: RangeFilter) { + expect(mockGetFieldFormatsStart().deserialize).toHaveBeenCalledTimes(1); + expect(filter).toHaveProperty('meta'); + expect(filter.meta).toHaveProperty('index', '1234'); + expect(filter).toHaveProperty('range'); + expect(filter.range).toHaveProperty('bytes'); + expect(filter.range.bytes).toHaveProperty('gte', 2048); + expect(filter.range.bytes).toHaveProperty('lt', 3072); + expect(filter.meta).toHaveProperty('formattedValue'); +} describe('AggConfig Filters', () => { describe('histogram', () => { const getConfig = (() => {}) as FieldFormatsGetConfigFn; const getAggConfigs = () => { + jest.clearAllMocks(); const field = { name: 'bytes', format: new BytesFormat({}, getConfig), @@ -56,14 +69,20 @@ describe('AggConfig Filters', () => { '2048' ); - expect(mockGetFieldFormatsStart().deserialize).toHaveBeenCalledTimes(1); - expect(filter).toHaveProperty('meta'); - expect(filter.meta).toHaveProperty('index', '1234'); - expect(filter).toHaveProperty('range'); - expect(filter.range).toHaveProperty('bytes'); - expect(filter.range.bytes).toHaveProperty('gte', 2048); - expect(filter.range.bytes).toHaveProperty('lt', 3072); - expect(filter.meta).toHaveProperty('formattedValue'); + validateFilter(filter); + }); + + test('should work for auto histograms', () => { + const aggConfigs = getAggConfigs(); + const histogramAggConfig = aggConfigs.aggs[0]; + histogramAggConfig.params.interval = 'auto'; + histogramAggConfig.params.used_interval = 1024; + + const filter = createFilterHistogram(mockGetFieldFormatsStart)( + histogramAggConfig as IBucketAggConfig, + '2048' + ); + validateFilter(filter); }); }); }); diff --git a/src/plugins/data/common/search/aggs/buckets/create_filter/histogram.ts b/src/plugins/data/common/search/aggs/buckets/create_filter/histogram.ts index 0c2673b1352fe..d104c8f5c57f5 100644 --- a/src/plugins/data/common/search/aggs/buckets/create_filter/histogram.ts +++ b/src/plugins/data/common/search/aggs/buckets/create_filter/histogram.ts @@ -17,7 +17,14 @@ export const createFilterHistogram = ( return (aggConfig: IBucketAggConfig, key: string) => { const { deserialize } = getFieldFormatsStart(); const value = parseInt(key, 10); - const params: RangeFilterParams = { gte: value, lt: value + aggConfig.params.interval }; + const params: RangeFilterParams = { + gte: value, + lt: + value + + (typeof aggConfig.params.used_interval === 'number' + ? aggConfig.params.used_interval + : aggConfig.params.interval), + }; return buildRangeFilter( aggConfig.params.field,