Skip to content

Commit

Permalink
[BUG][Discover] Allow default columns settings (#5261)
Browse files Browse the repository at this point in the history
* [BUG][Discover] Allow default columns settings

This is a missing functionality
* When user sets up `Default columns` in advanced settings, discover should display
default columns if the selected idp has the columns.
* If selected idp has no such columns, display `_source` column.

Issue Resolve
#5246

Signed-off-by: ananzh <[email protected]>

* fix unit test

Signed-off-by: ananzh <[email protected]>

---------

Signed-off-by: ananzh <[email protected]>
(cherry picked from commit b3104ce)
Signed-off-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
  • Loading branch information
github-actions[bot] committed Oct 10, 2023
1 parent bad7bbf commit 278d5a8
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import { RootState, DefaultViewState } from '../../../../../data_explorer/public
import { buildColumns } from '../columns';
import * as utils from './common';
import { SortOrder } from '../../../saved_searches/types';
import { PLUGIN_ID } from '../../../../common';
import { DEFAULT_COLUMNS_SETTING, PLUGIN_ID } from '../../../../common';

export interface DiscoverState {
/**
Expand Down Expand Up @@ -57,6 +57,7 @@ const initialState: DiscoverState = {

export const getPreloadedState = async ({
getSavedSearchById,
uiSettings: config,
}: DiscoverServices): Promise<DefaultViewState<DiscoverState>> => {
const preloadedState: DefaultViewState<DiscoverState> = {
state: {
Expand Down Expand Up @@ -86,6 +87,8 @@ export const getPreloadedState = async ({

savedSearchInstance.destroy(); // this instance is no longer needed, will create another one later
}
} else if (config.get(DEFAULT_COLUMNS_SETTING)) {
preloadedState.state.columns = config.get(DEFAULT_COLUMNS_SETTING);

Check warning on line 91 in src/plugins/discover/public/application/utils/state_management/discover_slice.tsx

View check run for this annotation

Codecov / codecov/patch

src/plugins/discover/public/application/utils/state_management/discover_slice.tsx#L91

Added line #L91 was not covered by tests
}

return preloadedState;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,23 +12,22 @@ describe('filterColumns', () => {
getAll: () => [{ name: 'a' }, { name: 'c' }, { name: 'd' }],
},
} as IndexPattern;
const defaultColumns = ['_defaultColumn'];

it('should return columns that exist in the index pattern fields', () => {
const columns = ['a', 'b'];
const result = filterColumns(columns, indexPatternMock, defaultColumns);
const result = filterColumns(columns, indexPatternMock, ['a']);
expect(result).toEqual(['a']);
});

it('should return defaultColumns if no columns exist in the index pattern fields', () => {
const columns = ['b', 'e'];
const result = filterColumns(columns, indexPatternMock, defaultColumns);
expect(result).toEqual(defaultColumns);
const result = filterColumns(columns, indexPatternMock, ['e']);
expect(result).toEqual(['_source']);
});

it('should return defaultColumns if no columns and indexPattern is null', () => {
it('should return defaultColumns if no columns and indexPattern is undefined', () => {
const columns = ['b', 'e'];
const result = filterColumns(columns, null, defaultColumns);
expect(result).toEqual(defaultColumns);
const result = filterColumns(columns, undefined, ['a']);
expect(result).toEqual(['_source']);
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ export function filterColumns(
defaultColumns: string[]
) {
const fieldsName = indexPattern?.fields.getAll().map((fld) => fld.name) || [];
const filteredColumns = columns.filter((column) => fieldsName.includes(column));
return filteredColumns.length > 0 ? filteredColumns : defaultColumns;
// combine columns and defaultColumns without duplicates
const combinedColumns = [...new Set([...columns, ...defaultColumns])];
const filteredColumns = combinedColumns.filter((column) => fieldsName.includes(column));
return filteredColumns.length > 0 ? filteredColumns : ['_source'];
}

0 comments on commit 278d5a8

Please sign in to comment.