Skip to content

Commit

Permalink
[Discover] Fix Data grid columns movement (#115279) (#117266)
Browse files Browse the repository at this point in the history
* [Discover] fix data grid columns movement

* [Discover] apply suggestion

* [Discover] fix linting

Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>

Co-authored-by: Dmitry Tomashevich <39378793+Dmitriynj@users.noreply.github.com>
  • Loading branch information
kibanamachine and dimaanj authored Nov 3, 2021
1 parent 1eb7537 commit 750b30e
Show file tree
Hide file tree
Showing 9 changed files with 32 additions and 23 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ import { IndexPattern, IndexPatternField } from '../../../../../data/common';
import { LoadingStatus } from './services/context_query_state';
import { getServices } from '../../../kibana_services';
import { AppState, isEqualFilters } from './services/context_state';
import { useDataGridColumns } from '../../helpers/use_data_grid_columns';
import { useColumns } from '../../helpers/use_data_grid_columns';
import { useContextAppState } from './utils/use_context_app_state';
import { useContextAppFetch } from './utils/use_context_app_fetch';
import { popularizeField } from '../../helpers/popularize_field';
Expand Down Expand Up @@ -84,7 +84,7 @@ export const ContextApp = ({ indexPattern, anchorId }: ContextAppProps) => {
fetchedState.anchor._id,
]);

const { columns, onAddColumn, onRemoveColumn, onSetColumns } = useDataGridColumns({
const { columns, onAddColumn, onRemoveColumn, onSetColumns } = useColumns({
capabilities,
config: uiSettings,
indexPattern,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ export interface ContextAppContentProps {
columns: string[];
onAddColumn: (columnsName: string) => void;
onRemoveColumn: (columnsName: string) => void;
onSetColumns: (columnsNames: string[]) => void;
onSetColumns: (columnsNames: string[], hideTimeColumn: boolean) => void;
services: DiscoverServices;
indexPattern: IndexPattern;
predecessorCount: number;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ describe('Test column actions', () => {
sort: [],
});
setAppState.mockClear();
actions.onSetColumns(['first', 'second', 'third']);
actions.onSetColumns(['first', 'second', 'third'], true);
expect(setAppState).toHaveBeenCalledWith({
columns: ['first', 'second', 'third'],
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -102,12 +102,13 @@ export function getStateColumnActions({
setAppState({ columns });
}

function onSetColumns(columns: string[]) {
// remove first element of columns if it's the configured timeFieldName, which is prepended automatically
function onSetColumns(columns: string[], hideTimeColumn: boolean) {
// The next line should gone when classic table will be removed
const actualColumns =
indexPattern.timeFieldName && indexPattern.timeFieldName === columns[0]
!hideTimeColumn && indexPattern.timeFieldName && indexPattern.timeFieldName === columns[0]
? columns.slice(1)
: columns;

setAppState({ columns: actualColumns });
}
return {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ import {
SAMPLE_SIZE_SETTING,
SEARCH_FIELDS_FROM_SOURCE,
} from '../../../../../../common';
import { useDataGridColumns } from '../../../../helpers/use_data_grid_columns';
import { useColumns } from '../../../../helpers/use_data_grid_columns';
import { IndexPattern } from '../../../../../../../data/common';
import { SavedSearch } from '../../../../../saved_searches';
import { DataDocumentsMsg, DataDocuments$ } from '../../services/use_saved_search';
Expand Down Expand Up @@ -69,7 +69,7 @@ function DiscoverDocumentsComponent({

const rows = useMemo(() => documentState.result || [], [documentState.result]);

const { columns, onAddColumn, onRemoveColumn, onMoveColumn, onSetColumns } = useDataGridColumns({
const { columns, onAddColumn, onRemoveColumn, onMoveColumn, onSetColumns } = useColumns({
capabilities,
config: uiSettings,
indexPattern,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ import { getResultState } from '../../utils/get_result_state';
import { InspectorSession } from '../../../../../../../inspector/public';
import { DiscoverUninitialized } from '../uninitialized/uninitialized';
import { DataMainMsg } from '../../services/use_saved_search';
import { useDataGridColumns } from '../../../../helpers/use_data_grid_columns';
import { useColumns } from '../../../../helpers/use_data_grid_columns';
import { DiscoverDocuments } from './discover_documents';
import { FetchStatus } from '../../../../types';
import { useDataState } from '../../utils/use_data_state';
Expand Down Expand Up @@ -125,7 +125,7 @@ export function DiscoverLayout({
};
}, [inspectorSession]);

const { columns, onAddColumn, onRemoveColumn } = useDataGridColumns({
const { columns, onAddColumn, onRemoveColumn } = useColumns({
capabilities,
config: uiSettings,
indexPattern,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,11 @@ import {
import { defaultPageSize, gridStyle, pageSizeArr, toolbarVisibility } from './constants';
import { DiscoverServices } from '../../../build_services';
import { getDisplayedColumns } from '../../helpers/columns';
import { MAX_DOC_FIELDS_DISPLAYED, SHOW_MULTIFIELDS } from '../../../../common';
import {
DOC_HIDE_TIME_COLUMN_SETTING,
MAX_DOC_FIELDS_DISPLAYED,
SHOW_MULTIFIELDS,
} from '../../../../common';
import { DiscoverGridDocumentToolbarBtn, getDocId } from './discover_grid_document_selection';
import { SortPairArr } from '../../apps/main/components/doc_table/lib/get_sort';
import { getFieldsToShow } from '../../helpers/get_fields_to_show';
Expand Down Expand Up @@ -91,7 +95,7 @@ export interface DiscoverGridProps {
/**
* Function to set all columns
*/
onSetColumns: (columns: string[]) => void;
onSetColumns: (columns: string[], hideTimeColumn: boolean) => void;
/**
* function to change sorting of the documents, skipped when isSortEnabled is set to false
*/
Expand Down Expand Up @@ -302,15 +306,19 @@ export const DiscoverGrid = ({
[displayedColumns, indexPattern, showTimeCol, settings, defaultColumns, isSortEnabled]
);

const hideTimeColumn = useMemo(
() => services.uiSettings.get(DOC_HIDE_TIME_COLUMN_SETTING, false),
[services.uiSettings]
);
const schemaDetectors = useMemo(() => getSchemaDetectors(), []);
const columnsVisibility = useMemo(
() => ({
visibleColumns: getVisibleColumns(displayedColumns, indexPattern, showTimeCol) as string[],
setVisibleColumns: (newColumns: string[]) => {
onSetColumns(newColumns);
onSetColumns(newColumns, hideTimeColumn);
},
}),
[displayedColumns, indexPattern, showTimeCol, onSetColumns]
[displayedColumns, indexPattern, showTimeCol, hideTimeColumn, onSetColumns]
);
const sorting = useMemo(() => {
if (isSortEnabled) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,14 @@
*/

import { renderHook } from '@testing-library/react-hooks';
import { useDataGridColumns } from './use_data_grid_columns';
import { useColumns } from './use_data_grid_columns';
import { indexPatternMock } from '../../__mocks__/index_pattern';
import { configMock } from '../../__mocks__/config';
import { indexPatternsMock } from '../../__mocks__/index_patterns';
import { AppState } from '../apps/context/services/context_state';
import { Capabilities } from '../../../../../core/types';

describe('useDataGridColumns', () => {
describe('useColumns', () => {
const defaultProps = {
capabilities: { discover: { save: true } } as unknown as Capabilities,
config: configMock,
Expand All @@ -29,7 +29,7 @@ describe('useDataGridColumns', () => {

test('should return valid result', () => {
const { result } = renderHook(() => {
return useDataGridColumns(defaultProps);
return useColumns(defaultProps);
});

expect(result.current.columns).toEqual(['Time', 'message']);
Expand All @@ -41,7 +41,7 @@ describe('useDataGridColumns', () => {

test('should skip _source column when useNewFieldsApi is set to true', () => {
const { result } = renderHook(() => {
return useDataGridColumns({
return useColumns({
...defaultProps,
state: {
columns: ['Time', '_source'],
Expand All @@ -55,7 +55,7 @@ describe('useDataGridColumns', () => {

test('should return empty columns array', () => {
const { result } = renderHook(() => {
return useDataGridColumns({
return useColumns({
...defaultProps,
state: {
columns: [],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ import {
} from '../apps/context/services/context_state';
import { getStateColumnActions } from '../apps/main/components/doc_table/actions/columns';

interface UseDataGridColumnsProps {
interface UseColumnsProps {
capabilities: Capabilities;
config: IUiSettingsClient;
indexPattern: IndexPattern;
Expand All @@ -30,15 +30,15 @@ interface UseDataGridColumnsProps {
state: DiscoverState | ContextState;
}

export const useDataGridColumns = ({
export const useColumns = ({
capabilities,
config,
indexPattern,
indexPatterns,
setAppState,
state,
useNewFieldsApi,
}: UseDataGridColumnsProps) => {
}: UseColumnsProps) => {
const { onAddColumn, onRemoveColumn, onSetColumns, onMoveColumn } = useMemo(
() =>
getStateColumnActions({
Expand Down

0 comments on commit 750b30e

Please sign in to comment.