Skip to content

Commit 83d9ef0

Browse files
author
Wylie Conlon
authored
[Lens] Fix duplicate suggestions on single-bucket charts (#86996)
1 parent 5dd9c7d commit 83d9ef0

File tree

2 files changed

+20
-6
lines changed

2 files changed

+20
-6
lines changed

x-pack/plugins/lens/public/indexpattern_datasource/indexpattern_suggestions.test.tsx

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1876,7 +1876,7 @@ describe('IndexPattern Data Source suggestions', () => {
18761876
expect(suggestions.length).toBe(6);
18771877
});
18781878

1879-
it('returns an only metric version of a given table', () => {
1879+
it('returns an only metric version of a given table, but does not include current state as reduced', () => {
18801880
const initialState = testInitialState();
18811881
const state: IndexPatternPrivateState = {
18821882
indexPatternRefs: [],
@@ -1953,6 +1953,21 @@ describe('IndexPattern Data Source suggestions', () => {
19531953
};
19541954

19551955
const suggestions = getSuggestionSubset(getDatasourceSuggestionsFromCurrentState(state));
1956+
expect(suggestions).not.toContainEqual(
1957+
expect.objectContaining({
1958+
table: expect.objectContaining({
1959+
changeType: 'reduced',
1960+
columns: [
1961+
expect.objectContaining({
1962+
operation: expect.objectContaining({ label: 'field2' }),
1963+
}),
1964+
expect.objectContaining({
1965+
operation: expect.objectContaining({ label: 'Average of field1' }),
1966+
}),
1967+
],
1968+
}),
1969+
})
1970+
);
19561971
expect(suggestions).toContainEqual(
19571972
expect.objectContaining({
19581973
table: expect.objectContaining({

x-pack/plugins/lens/public/indexpattern_datasource/indexpattern_suggestions.ts

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -583,8 +583,9 @@ function createSimplifiedTableSuggestions(state: IndexPatternPrivateState, layer
583583
columnOrder: [...bucketedColumns, ...availableMetricColumns],
584584
};
585585

586-
if (availableReferenceColumns.length) {
587-
// Don't remove buckets when dealing with any refs. This can break refs.
586+
if (availableBucketedColumns.length <= 1 || availableReferenceColumns.length) {
587+
// Don't simplify when dealing with single-bucket table. Also don't break
588+
// reference-based columns by removing buckets.
588589
return [];
589590
} else if (availableMetricColumns.length > 1) {
590591
return [{ ...layer, columnOrder: [...bucketedColumns, availableMetricColumns[0]] }];
@@ -597,7 +598,6 @@ function createSimplifiedTableSuggestions(state: IndexPatternPrivateState, layer
597598
availableReferenceColumns.length
598599
? []
599600
: availableMetricColumns.map((columnId) => {
600-
// build suggestions with only metrics
601601
return { ...layer, columnOrder: [columnId] };
602602
})
603603
)
@@ -606,8 +606,7 @@ function createSimplifiedTableSuggestions(state: IndexPatternPrivateState, layer
606606
state,
607607
layerId,
608608
updatedLayer,
609-
changeType:
610-
layer.columnOrder.length === updatedLayer.columnOrder.length ? 'unchanged' : 'reduced',
609+
changeType: 'reduced',
611610
label:
612611
updatedLayer.columnOrder.length === 1
613612
? getMetricSuggestionTitle(updatedLayer, availableMetricColumns.length === 1)

0 commit comments

Comments
 (0)