[Discover] Rename default column in the advanced settings (#114100)

* [Discover] Rename default column in the advanced settings

* Fix eslint

* Rename default column to an empty string

* Fix typo

* Fix default column filtering

* Update comment

* Make an empty array a default columns

* Improve functional test

* Wording change

Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
This commit is contained in:
Maja Grubic 2021-10-14 15:49:35 +02:00 committed by GitHub
parent 4db2437036
commit 586682a0c4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 41 additions and 6 deletions

View file

@ -6,9 +6,13 @@
* Side Public License, v 1.
*/
import { cloneDeep } from 'lodash';
import { cloneDeep, isEqual } from 'lodash';
import { IUiSettingsClient } from 'kibana/public';
import { DEFAULT_COLUMNS_SETTING, SORT_DEFAULT_ORDER_SETTING } from '../../../../../common';
import {
DEFAULT_COLUMNS_SETTING,
SEARCH_FIELDS_FROM_SOURCE,
SORT_DEFAULT_ORDER_SETTING,
} from '../../../../../common';
import { SavedSearch } from '../../../../saved_searches';
import { DataPublicPluginStart } from '../../../../../../data/public';
@ -19,6 +23,9 @@ function getDefaultColumns(savedSearch: SavedSearch, config: IUiSettingsClient)
if (savedSearch.columns && savedSearch.columns.length > 0) {
return [...savedSearch.columns];
}
if (config.get(SEARCH_FIELDS_FROM_SOURCE) && isEqual(config.get(DEFAULT_COLUMNS_SETTING), [])) {
return ['_source'];
}
return [...config.get(DEFAULT_COLUMNS_SETTING)];
}

View file

@ -24,6 +24,7 @@ export function handleSourceColumnState<TState extends { columns?: string[] }>(
}
const useNewFieldsApi = !uiSettings.get(SEARCH_FIELDS_FROM_SOURCE);
const defaultColumns = uiSettings.get(DEFAULT_COLUMNS_SETTING);
if (useNewFieldsApi) {
// if fields API is used, filter out the source column
let cleanedColumns = state.columns.filter((column) => column !== '_source');
@ -39,9 +40,13 @@ export function handleSourceColumnState<TState extends { columns?: string[] }>(
} else if (state.columns.length === 0) {
// if _source fetching is used and there are no column, switch back to default columns
// this can happen if the fields API was previously used
const columns = defaultColumns;
if (columns.length === 0) {
columns.push('_source');
}
return {
...state,
columns: [...defaultColumns],
columns: [...columns],
};
}

View file

@ -33,9 +33,10 @@ export const getUiSettings: () => Record<string, UiSettingsParams> = () => ({
name: i18n.translate('discover.advancedSettings.defaultColumnsTitle', {
defaultMessage: 'Default columns',
}),
value: ['_source'],
value: [],
description: i18n.translate('discover.advancedSettings.defaultColumnsText', {
defaultMessage: 'Columns displayed by default in the Discovery tab',
defaultMessage:
'Columns displayed by default in the Discover app. If empty, a summary of the document will be displayed.',
}),
category: ['discover'],
schema: schema.arrayOf(schema.string()),

View file

@ -15,7 +15,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
const retry = getService('retry');
const esArchiver = getService('esArchiver');
const kibanaServer = getService('kibanaServer');
const PageObjects = getPageObjects(['common', 'discover', 'header', 'timePicker']);
const PageObjects = getPageObjects(['common', 'discover', 'header', 'timePicker', 'settings']);
const defaultSettings = {
defaultIndex: 'logstash-*',
'discover:searchFieldsFromSource': false,
@ -67,5 +67,27 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
await PageObjects.discover.clickDocViewerTab(1);
await PageObjects.discover.expectSourceViewerToExist();
});
it('switches to _source column when fields API is no longer used', async function () {
await PageObjects.settings.navigateTo();
await PageObjects.settings.clickKibanaSettings();
await PageObjects.settings.toggleAdvancedSettingCheckbox('discover:searchFieldsFromSource');
await PageObjects.common.navigateToApp('discover');
await PageObjects.timePicker.setDefaultAbsoluteRange();
expect(await PageObjects.discover.getDocHeader()).to.have.string('_source');
});
it('switches to Document column when fields API is used', async function () {
await PageObjects.settings.navigateTo();
await PageObjects.settings.clickKibanaSettings();
await PageObjects.settings.toggleAdvancedSettingCheckbox('discover:searchFieldsFromSource');
await PageObjects.common.navigateToApp('discover');
await PageObjects.timePicker.setDefaultAbsoluteRange();
expect(await PageObjects.discover.getDocHeader()).to.have.string('Document');
});
});
}