From df9480dc26d42ca3ee80858e140d64b08563510b Mon Sep 17 00:00:00 2001 From: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> Date: Fri, 7 Jun 2024 23:13:13 +1000 Subject: [PATCH] [8.14] [Discover] Fix resetting of breakdown field in a saved search (#184668) (#184998) # Backport This will backport the following commits from `main` to `8.14`: - [[Discover] Fix resetting of breakdown field in a saved search (#184668)](https://github.com/elastic/kibana/pull/184668) ### Questions ? Please refer to the [Backport tool documentation](https://github.com/sqren/backport) Co-authored-by: Julia Rechkunova --- .../discover_saved_search_container.ts | 4 +++ .../main/services/discover_state.test.ts | 1 - .../main/utils/update_saved_search.test.ts | 34 +++++++++++++++++++ .../main/utils/update_saved_search.ts | 7 +++- 4 files changed, 44 insertions(+), 2 deletions(-) diff --git a/src/plugins/discover/public/application/main/services/discover_saved_search_container.ts b/src/plugins/discover/public/application/main/services/discover_saved_search_container.ts index f5cc24fc762ef..788b6bdeb1806 100644 --- a/src/plugins/discover/public/application/main/services/discover_saved_search_container.ts +++ b/src/plugins/discover/public/application/main/services/discover_saved_search_container.ts @@ -402,6 +402,10 @@ function getSavedSearchFieldForComparison( return visContext; } + if (fieldName === 'breakdownField') { + return savedSearch.breakdownField || ''; // ignore the difference between an empty string and undefined + } + return savedSearch[fieldName]; } diff --git a/src/plugins/discover/public/application/main/services/discover_state.test.ts b/src/plugins/discover/public/application/main/services/discover_state.test.ts index 39aa114673cbb..3fe1e1893da46 100644 --- a/src/plugins/discover/public/application/main/services/discover_state.test.ts +++ b/src/plugins/discover/public/application/main/services/discover_state.test.ts @@ -434,7 +434,6 @@ describe('Test discover state actions', () => { const { searchSource, ...savedSearch } = state.savedSearchState.getState(); expect(savedSearch).toMatchInlineSnapshot(` Object { - "breakdownField": undefined, "columns": Array [ "default_column", ], diff --git a/src/plugins/discover/public/application/main/utils/update_saved_search.test.ts b/src/plugins/discover/public/application/main/utils/update_saved_search.test.ts index c04a687e6afa6..92daf47c89245 100644 --- a/src/plugins/discover/public/application/main/utils/update_saved_search.test.ts +++ b/src/plugins/discover/public/application/main/utils/update_saved_search.test.ts @@ -124,6 +124,40 @@ describe('updateSavedSearch', () => { }); }); + it('should pass breakdownField if state has breakdownField', async () => { + const savedSearch = { + ...savedSearchMock, + searchSource: savedSearchMock.searchSource.createCopy(), + }; + expect(savedSearch.breakdownField).toBeUndefined(); + updateSavedSearch({ + savedSearch, + globalStateContainer: createGlobalStateContainer(), + services: discoverServiceMock, + state: { + breakdownField: 'test', + }, + }); + expect(savedSearch.breakdownField).toEqual('test'); + }); + + it('should pass an empty string if state already has breakdownField', async () => { + const savedSearch = { + ...savedSearchMock, + searchSource: savedSearchMock.searchSource.createCopy(), + breakdownField: 'test', + }; + updateSavedSearch({ + savedSearch, + globalStateContainer: createGlobalStateContainer(), + services: discoverServiceMock, + state: { + breakdownField: undefined, + }, + }); + expect(savedSearch.breakdownField).toEqual(''); + }); + it('should set query and filters from services', async () => { const savedSearch = { ...savedSearchMock, diff --git a/src/plugins/discover/public/application/main/utils/update_saved_search.ts b/src/plugins/discover/public/application/main/utils/update_saved_search.ts index 05c17cd3ebcd9..ac8a61efece5d 100644 --- a/src/plugins/discover/public/application/main/utils/update_saved_search.ts +++ b/src/plugins/discover/public/application/main/utils/update_saved_search.ts @@ -73,7 +73,12 @@ export function updateSavedSearch({ savedSearch.viewMode = state.viewMode; } - savedSearch.breakdownField = state.breakdownField || undefined; // `undefined` instead of an empty string + if (typeof state.breakdownField !== 'undefined') { + savedSearch.breakdownField = state.breakdownField; + } else if (savedSearch.breakdownField) { + savedSearch.breakdownField = ''; + } + savedSearch.hideAggregatedPreview = state.hideAggregatedPreview; // add a flag here to identify text based language queries