[ES|QL] Resets selected columns when changing query (#167492)

## Summary

Fixes a bug in ES|QL mode where you:

- have a query of index pattern 1 and select some fields
- change the query by using a different index pattern
- the selected columns do not reset


**BUG**

![withbug](5f3fdf89-5d17-443d-b50b-f802e44482c3)

**NOW**

![now](0c1f8b05-0e22-4708-85e8-9387c9a5d5fa)


### Checklist

- [ ] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios
This commit is contained in:
Stratoula Kalafateli 2023-09-29 08:41:08 +03:00 committed by GitHub
parent 98a81d1b5e
commit d797846108
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 33 additions and 1 deletions

View file

@ -106,6 +106,7 @@ describe('useTextBasedQueryLanguage', () => {
await waitFor(() => {
expect(replaceUrlState).toHaveBeenCalledWith({
index: 'the-data-view-id',
columns: [],
});
});
@ -123,6 +124,7 @@ describe('useTextBasedQueryLanguage', () => {
expect(replaceUrlState).toHaveBeenCalledWith({
index: 'the-data-view-id',
viewMode: VIEW_MODE.DOCUMENT_LEVEL,
columns: [],
});
});
test('changing a text based query with different result columns should change state when loading and finished', async () => {
@ -155,6 +157,35 @@ describe('useTextBasedQueryLanguage', () => {
});
});
test('changing a text based query with same result columns should change state when loading and finished', async () => {
const { replaceUrlState, stateContainer } = renderHookWithContext(false);
const documents$ = stateContainer.dataState.data$.documents$;
stateContainer.dataState.data$.documents$.next(msgComplete);
await waitFor(() => expect(replaceUrlState).toHaveBeenCalledTimes(1));
replaceUrlState.mockReset();
documents$.next({
recordRawType: RecordRawType.PLAIN,
fetchStatus: FetchStatus.PARTIAL,
result: [
{
id: '1',
raw: { field1: 1 },
flattened: { field1: 1 },
} as unknown as DataTableRecord,
],
query: { esql: 'from the-data-view-2' },
});
await waitFor(() => expect(replaceUrlState).toHaveBeenCalledTimes(1));
await waitFor(() => {
expect(replaceUrlState).toHaveBeenCalledWith({
index: 'the-data-view-id',
columns: [],
});
});
});
test('changing a text based query with no transformational commands should only change dataview state when loading and finished', async () => {
const { replaceUrlState, stateContainer } = renderHookWithContext(false);
const documents$ = stateContainer.dataState.data$.documents$;
@ -180,6 +211,7 @@ describe('useTextBasedQueryLanguage', () => {
await waitFor(() => {
expect(replaceUrlState).toHaveBeenCalledWith({
index: 'the-data-view-id',
columns: [],
});
});
});

View file

@ -119,7 +119,7 @@ export function useTextBasedQueryLanguage({
}
const nextState = {
...(addDataViewToState && { index: dataViewObj.id }),
...(addColumnsToState && { columns: nextColumns }),
...((addColumnsToState || queryChanged) && { columns: nextColumns }),
...(viewMode === VIEW_MODE.AGGREGATED_LEVEL && {
viewMode: getValidViewMode({ viewMode, isTextBasedQueryMode: true }),
}),