From 65517f67c239115b4a92c3b4c0d29f69bc359501 Mon Sep 17 00:00:00 2001 From: Matthias Wilhelm Date: Thu, 28 Jul 2022 18:08:40 +0200 Subject: [PATCH 01/14] Refactor sort functionality --- .../context/context_app_content.tsx | 2 +- .../components/layout/discover_documents.tsx | 2 +- .../main/hooks/use_discover_state.ts | 2 +- .../main/utils/get_state_defaults.ts | 2 +- .../utils/get_switch_data_view_app_state.ts | 2 +- .../main/utils/update_search_source.ts | 2 +- .../discover_grid/discover_grid.tsx | 2 +- .../components/table_header/table_header.tsx | 2 +- .../public/components/doc_table/index.ts | 11 ------- .../embeddable/saved_search_embeddable.tsx | 33 +++++++++---------- .../embeddable/utils/update_search_source.ts | 4 +-- .../utils/get_default_sort.test.ts | 0 .../doc_table => }/utils/get_default_sort.ts | 2 +- .../discover/public/utils/get_sharing_data.ts | 2 +- .../doc_table => }/utils/get_sort.test.ts | 0 .../doc_table => }/utils/get_sort.ts | 0 .../utils/get_sort_for_search_source.test.ts | 2 +- .../utils/get_sort_for_search_source.ts | 2 +- src/plugins/discover/public/utils/index.ts | 4 +++ 19 files changed, 34 insertions(+), 42 deletions(-) delete mode 100644 src/plugins/discover/public/components/doc_table/index.ts rename src/plugins/discover/public/{components/doc_table => }/utils/get_default_sort.test.ts (100%) rename src/plugins/discover/public/{components/doc_table => }/utils/get_default_sort.ts (91%) rename src/plugins/discover/public/{components/doc_table => }/utils/get_sort.test.ts (100%) rename src/plugins/discover/public/{components/doc_table => }/utils/get_sort.ts (100%) rename src/plugins/discover/public/{components/doc_table => }/utils/get_sort_for_search_source.test.ts (95%) rename src/plugins/discover/public/{components/doc_table => }/utils/get_sort_for_search_source.ts (95%) diff --git a/src/plugins/discover/public/application/context/context_app_content.tsx b/src/plugins/discover/public/application/context/context_app_content.tsx index 3ba518c4a3df8..cc064d51dd3ee 100644 --- a/src/plugins/discover/public/application/context/context_app_content.tsx +++ b/src/plugins/discover/public/application/context/context_app_content.tsx @@ -20,7 +20,7 @@ import { AppState } from './services/context_state'; import { SurrDocType } from './services/context'; import { MAX_CONTEXT_SIZE, MIN_CONTEXT_SIZE } from './services/constants'; import { DocTableContext } from '../../components/doc_table/doc_table_context'; -import type { SortPairArr } from '../../components/doc_table/utils/get_sort'; +import type { SortPairArr } from '../../utils/get_sort'; import { useDiscoverServices } from '../../hooks/use_discover_services'; import type { DataTableRecord } from '../../types'; diff --git a/src/plugins/discover/public/application/main/components/layout/discover_documents.tsx b/src/plugins/discover/public/application/main/components/layout/discover_documents.tsx index bc5acbc0b6a60..0718ea12c461f 100644 --- a/src/plugins/discover/public/application/main/components/layout/discover_documents.tsx +++ b/src/plugins/discover/public/application/main/components/layout/discover_documents.tsx @@ -32,7 +32,7 @@ import { DataDocuments$, DataDocumentsMsg, RecordRawType } from '../../hooks/use import { AppState, GetStateReturn } from '../../services/discover_state'; import { useDataState } from '../../hooks/use_data_state'; import { DocTableInfinite } from '../../../../components/doc_table/doc_table_infinite'; -import { SortPairArr } from '../../../../components/doc_table/utils/get_sort'; +import { SortPairArr } from '../../../../utils/get_sort'; import { DocumentExplorerCallout } from '../document_explorer_callout'; import { DocumentExplorerUpdateCallout } from '../document_explorer_callout/document_explorer_update_callout'; import { DiscoverTourProvider } from '../../../../components/discover_tour'; diff --git a/src/plugins/discover/public/application/main/hooks/use_discover_state.ts b/src/plugins/discover/public/application/main/hooks/use_discover_state.ts index 9d464d5267f60..5d097969cbd42 100644 --- a/src/plugins/discover/public/application/main/hooks/use_discover_state.ts +++ b/src/plugins/discover/public/application/main/hooks/use_discover_state.ts @@ -32,7 +32,7 @@ import { useSearchSession } from './use_search_session'; import { useDataState } from './use_data_state'; import { FetchStatus } from '../../types'; import { getDataViewAppState } from '../utils/get_switch_data_view_app_state'; -import { SortPairArr } from '../../../components/doc_table/utils/get_sort'; +import { SortPairArr } from '../../../utils/get_sort'; import { DataTableRecord } from '../../../types'; const MAX_NUM_OF_COLUMNS = 50; diff --git a/src/plugins/discover/public/application/main/utils/get_state_defaults.ts b/src/plugins/discover/public/application/main/utils/get_state_defaults.ts index 34f19af08bacb..b0d39b039d56e 100644 --- a/src/plugins/discover/public/application/main/utils/get_state_defaults.ts +++ b/src/plugins/discover/public/application/main/utils/get_state_defaults.ts @@ -19,8 +19,8 @@ import { import { SavedSearch } from '../../../services/saved_searches'; import { AppState } from '../services/discover_state'; -import { getDefaultSort, getSortArray } from '../../../components/doc_table'; import { CHART_HIDDEN_KEY } from '../components/chart/discover_chart'; +import {getDefaultSort, getSortArray} from "@kbn/discover-plugin/public/utils"; function getDefaultColumns(savedSearch: SavedSearch, config: IUiSettingsClient) { if (savedSearch.columns && savedSearch.columns.length > 0) { diff --git a/src/plugins/discover/public/application/main/utils/get_switch_data_view_app_state.ts b/src/plugins/discover/public/application/main/utils/get_switch_data_view_app_state.ts index 6ed489e504231..86a20eba3cad2 100644 --- a/src/plugins/discover/public/application/main/utils/get_switch_data_view_app_state.ts +++ b/src/plugins/discover/public/application/main/utils/get_switch_data_view_app_state.ts @@ -7,7 +7,7 @@ */ import { isOfAggregateQueryType, Query, AggregateQuery } from '@kbn/es-query'; import type { DataView } from '@kbn/data-views-plugin/public'; -import { getSortArray, SortPairArr } from '../../../components/doc_table/utils/get_sort'; +import { getSortArray, SortPairArr } from '../../../utils/get_sort'; /** * Helper function to remove or adapt the currently selected columns/sort to be valid with the next diff --git a/src/plugins/discover/public/application/main/utils/update_search_source.ts b/src/plugins/discover/public/application/main/utils/update_search_source.ts index 3890924519fe1..80d71d71d181e 100644 --- a/src/plugins/discover/public/application/main/utils/update_search_source.ts +++ b/src/plugins/discover/public/application/main/utils/update_search_source.ts @@ -11,7 +11,7 @@ import { DataViewType, DataView } from '@kbn/data-views-plugin/public'; import { SORT_DEFAULT_ORDER_SETTING } from '../../../../common'; import type { SortOrder } from '../../../services/saved_searches'; import { DiscoverServices } from '../../../build_services'; -import { getSortForSearchSource } from '../../../components/doc_table'; +import { getSortForSearchSource } from '../../../utils'; /** * Helper function to update the given searchSource before fetching/sharing/persisting diff --git a/src/plugins/discover/public/components/discover_grid/discover_grid.tsx b/src/plugins/discover/public/components/discover_grid/discover_grid.tsx index d02529d924e3f..8ca13d23fe17e 100644 --- a/src/plugins/discover/public/components/discover_grid/discover_grid.tsx +++ b/src/plugins/discover/public/components/discover_grid/discover_grid.tsx @@ -43,7 +43,7 @@ import { SHOW_MULTIFIELDS, } from '../../../common'; import { DiscoverGridDocumentToolbarBtn } from './discover_grid_document_selection'; -import { SortPairArr } from '../doc_table/utils/get_sort'; +import { SortPairArr } from '../../utils/get_sort'; import { getFieldsToShow } from '../../utils/get_fields_to_show'; import type { DataTableRecord, ValueToStringConverter } from '../../types'; import { useRowHeightsOptions } from '../../hooks/use_row_heights_options'; diff --git a/src/plugins/discover/public/components/doc_table/components/table_header/table_header.tsx b/src/plugins/discover/public/components/doc_table/components/table_header/table_header.tsx index ac9dc4c8e204f..054de82eff13e 100644 --- a/src/plugins/discover/public/components/doc_table/components/table_header/table_header.tsx +++ b/src/plugins/discover/public/components/doc_table/components/table_header/table_header.tsx @@ -11,7 +11,7 @@ import type { DataView } from '@kbn/data-views-plugin/public'; import { FORMATS_UI_SETTINGS } from '@kbn/field-formats-plugin/common'; import { TableHeaderColumn } from './table_header_column'; import { SortOrder, getDisplayedColumns } from './helpers'; -import { getDefaultSort } from '../../utils/get_default_sort'; +import { getDefaultSort } from '../../../../utils/get_default_sort'; import { useDiscoverServices } from '../../../../hooks/use_discover_services'; import { DOC_HIDE_TIME_COLUMN_SETTING, SORT_DEFAULT_ORDER_SETTING } from '../../../../../common'; diff --git a/src/plugins/discover/public/components/doc_table/index.ts b/src/plugins/discover/public/components/doc_table/index.ts deleted file mode 100644 index e79276b0c9687..0000000000000 --- a/src/plugins/discover/public/components/doc_table/index.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -export { getSort, getSortArray } from './utils/get_sort'; -export { getSortForSearchSource } from './utils/get_sort_for_search_source'; -export { getDefaultSort } from './utils/get_default_sort'; diff --git a/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx b/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx index e134a361a2ff8..049e2c206b537 100644 --- a/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx +++ b/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx @@ -48,8 +48,8 @@ import { handleSourceColumnState } from '../utils/state_helpers'; import { DiscoverGridProps } from '../components/discover_grid/discover_grid'; import { DiscoverGridSettings } from '../components/discover_grid/types'; import { DocTableProps } from '../components/doc_table/doc_table_wrapper'; -import { getDefaultSort } from '../components/doc_table'; -import { SortOrder } from '../components/doc_table/components/table_header/helpers'; +import { getDefaultSort, getSortArray } from '../utils'; +import type { SortOrder } from '../components/doc_table/components/table_header/helpers'; import { VIEW_MODE } from '../components/view_mode_toggle'; import { updateSearchSource } from './utils/update_search_source'; import { FieldStatisticsTable } from '../application/main/components/field_stats_table'; @@ -278,10 +278,13 @@ export class SavedSearchEmbeddable } }; - private getDefaultSort(dataView?: DataView) { - const defaultSortOrder = this.services.uiSettings.get(SORT_DEFAULT_ORDER_SETTING, 'desc'); - const hidingTimeColumn = this.services.uiSettings.get(DOC_HIDE_TIME_COLUMN_SETTING, false); - return getDefaultSort(dataView, defaultSortOrder, hidingTimeColumn); + private getSort(sort: SortOrder[] | undefined, dataView?: DataView) { + if (!sort || !sort.length || !dataView) { + const defaultSortOrder = this.services.uiSettings.get(SORT_DEFAULT_ORDER_SETTING, 'desc'); + const hidingTimeColumn = this.services.uiSettings.get(DOC_HIDE_TIME_COLUMN_SETTING, false); + return getDefaultSort(dataView, defaultSortOrder, hidingTimeColumn); + } + return getSortArray(sort, dataView); } private initializeSearchEmbeddableProps() { @@ -293,15 +296,11 @@ export class SavedSearchEmbeddable return; } - if (!this.savedSearch.sort || !this.savedSearch.sort.length) { - this.savedSearch.sort = this.getDefaultSort(dataView); - } - const props: SearchProps = { columns: this.savedSearch.columns, dataView, isLoading: false, - sort: this.getDefaultSort(dataView), + sort: this.getSort(this.savedSearch.sort, dataView), rows: [], searchDescription: this.savedSearch.description, description: this.savedSearch.description, @@ -396,11 +395,12 @@ export class SavedSearchEmbeddable if (!searchProps) { return false; } + const sort = this.getSort(this.input.sort || this.savedSearch.sort, this.searchProps?.dataView); return ( !onlyDisabledFiltersChanged(this.input.filters, this.prevFilters) || !isEqual(this.prevQuery, this.input.query) || !isEqual(this.prevTimeRange, this.input.timeRange) || - !isEqual(searchProps.sort, this.input.sort || this.savedSearch.sort) || + !isEqual(searchProps.sort, sort) || this.prevSearchSessionId !== this.input.searchSessionId ); } @@ -424,12 +424,11 @@ export class SavedSearchEmbeddable { columns: this.input.columns || this.savedSearch.columns }, this.services.core.uiSettings ).columns; + searchProps.sort = this.getSort( + this.input.sort || this.savedSearch.sort, + this.searchProps?.dataView + ); - const savedSearchSort = - this.savedSearch.sort && this.savedSearch.sort.length - ? this.savedSearch.sort - : this.getDefaultSort(this.searchProps?.dataView); - searchProps.sort = this.input.sort || savedSearchSort; searchProps.sharedItemTitle = this.panelTitle; searchProps.rowHeightState = this.input.rowHeight || this.savedSearch.rowHeight; searchProps.rowsPerPageState = this.input.rowsPerPage || this.savedSearch.rowsPerPage; diff --git a/src/plugins/discover/public/embeddable/utils/update_search_source.ts b/src/plugins/discover/public/embeddable/utils/update_search_source.ts index 0126ed4d021e6..1e9ed350a49c4 100644 --- a/src/plugins/discover/public/embeddable/utils/update_search_source.ts +++ b/src/plugins/discover/public/embeddable/utils/update_search_source.ts @@ -7,8 +7,8 @@ */ import type { DataView } from '@kbn/data-views-plugin/public'; import { ISearchSource } from '@kbn/data-plugin/public'; -import { getSortForSearchSource } from '../../components/doc_table'; -import { SortPairArr } from '../../components/doc_table/utils/get_sort'; +import { getSortForSearchSource } from '../../utils'; +import { SortPairArr } from '../../utils/get_sort'; export const updateSearchSource = ( searchSource: ISearchSource, diff --git a/src/plugins/discover/public/components/doc_table/utils/get_default_sort.test.ts b/src/plugins/discover/public/utils/get_default_sort.test.ts similarity index 100% rename from src/plugins/discover/public/components/doc_table/utils/get_default_sort.test.ts rename to src/plugins/discover/public/utils/get_default_sort.test.ts diff --git a/src/plugins/discover/public/components/doc_table/utils/get_default_sort.ts b/src/plugins/discover/public/utils/get_default_sort.ts similarity index 91% rename from src/plugins/discover/public/components/doc_table/utils/get_default_sort.ts rename to src/plugins/discover/public/utils/get_default_sort.ts index 82055e94f5407..4e59ca5afb616 100644 --- a/src/plugins/discover/public/components/doc_table/utils/get_default_sort.ts +++ b/src/plugins/discover/public/utils/get_default_sort.ts @@ -8,7 +8,7 @@ import type { DataView } from '@kbn/data-views-plugin/public'; import { isSortable } from './get_sort'; -import { SortOrder } from '../components/table_header/helpers'; +import { SortOrder } from '../components/doc_table/components/table_header/helpers'; /** * use in case the user didn't manually sort. diff --git a/src/plugins/discover/public/utils/get_sharing_data.ts b/src/plugins/discover/public/utils/get_sharing_data.ts index 66a6a6f1eed10..903e2666cd6d2 100644 --- a/src/plugins/discover/public/utils/get_sharing_data.ts +++ b/src/plugins/discover/public/utils/get_sharing_data.ts @@ -14,13 +14,13 @@ import type { SerializedSearchSourceFields, } from '@kbn/data-plugin/public'; import type { Filter } from '@kbn/es-query'; +import { getSortForSearchSource } from './get_sort_for_search_source'; import { DOC_HIDE_TIME_COLUMN_SETTING, SEARCH_FIELDS_FROM_SOURCE, SORT_DEFAULT_ORDER_SETTING, } from '../../common'; import type { SavedSearch, SortOrder } from '../services/saved_searches'; -import { getSortForSearchSource } from '../components/doc_table'; import { AppState, isEqualFilters } from '../application/main/services/discover_state'; /** diff --git a/src/plugins/discover/public/components/doc_table/utils/get_sort.test.ts b/src/plugins/discover/public/utils/get_sort.test.ts similarity index 100% rename from src/plugins/discover/public/components/doc_table/utils/get_sort.test.ts rename to src/plugins/discover/public/utils/get_sort.test.ts diff --git a/src/plugins/discover/public/components/doc_table/utils/get_sort.ts b/src/plugins/discover/public/utils/get_sort.ts similarity index 100% rename from src/plugins/discover/public/components/doc_table/utils/get_sort.ts rename to src/plugins/discover/public/utils/get_sort.ts diff --git a/src/plugins/discover/public/components/doc_table/utils/get_sort_for_search_source.test.ts b/src/plugins/discover/public/utils/get_sort_for_search_source.test.ts similarity index 95% rename from src/plugins/discover/public/components/doc_table/utils/get_sort_for_search_source.test.ts rename to src/plugins/discover/public/utils/get_sort_for_search_source.test.ts index 729d74cb710fa..9ac9f28d241b2 100644 --- a/src/plugins/discover/public/components/doc_table/utils/get_sort_for_search_source.test.ts +++ b/src/plugins/discover/public/utils/get_sort_for_search_source.test.ts @@ -7,7 +7,7 @@ */ import { getSortForSearchSource } from './get_sort_for_search_source'; -import { SortOrder } from '../components/table_header/helpers'; +import { SortOrder } from '../components/doc_table/components/table_header/helpers'; import { stubDataView, stubDataViewWithoutTimeField } from '@kbn/data-plugin/common/stubs'; describe('getSortForSearchSource function', function () { diff --git a/src/plugins/discover/public/components/doc_table/utils/get_sort_for_search_source.ts b/src/plugins/discover/public/utils/get_sort_for_search_source.ts similarity index 95% rename from src/plugins/discover/public/components/doc_table/utils/get_sort_for_search_source.ts rename to src/plugins/discover/public/utils/get_sort_for_search_source.ts index c3f8badc0a536..91ecdddbb79d4 100644 --- a/src/plugins/discover/public/components/doc_table/utils/get_sort_for_search_source.ts +++ b/src/plugins/discover/public/utils/get_sort_for_search_source.ts @@ -8,7 +8,7 @@ import type { DataView } from '@kbn/data-views-plugin/public'; import type { EsQuerySortValue } from '@kbn/data-plugin/public'; -import { SortOrder } from '../components/table_header/helpers'; +import { SortOrder } from '../components/doc_table/components/table_header/helpers'; import { getSort } from './get_sort'; /** diff --git a/src/plugins/discover/public/utils/index.ts b/src/plugins/discover/public/utils/index.ts index 9a3e709fc71e4..34229760eb33c 100644 --- a/src/plugins/discover/public/utils/index.ts +++ b/src/plugins/discover/public/utils/index.ts @@ -11,3 +11,7 @@ export async function loadSharingDataHelpers() { return await import('./get_sharing_data'); } + +export { getSort, getSortArray } from './get_sort'; +export { getSortForSearchSource } from './get_sort_for_search_source'; +export { getDefaultSort } from './get_default_sort'; From 10ed706f91e9de68c0f22a6c7725b5ab03a4224d Mon Sep 17 00:00:00 2001 From: kibanamachine <42973632+kibanamachine@users.noreply.github.com> Date: Thu, 28 Jul 2022 16:15:40 +0000 Subject: [PATCH 02/14] [CI] Auto-commit changed files from 'node scripts/precommit_hook.js --ref HEAD~1..HEAD --fix' --- .../public/application/main/utils/get_state_defaults.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/discover/public/application/main/utils/get_state_defaults.ts b/src/plugins/discover/public/application/main/utils/get_state_defaults.ts index b0d39b039d56e..c2a25c9778070 100644 --- a/src/plugins/discover/public/application/main/utils/get_state_defaults.ts +++ b/src/plugins/discover/public/application/main/utils/get_state_defaults.ts @@ -10,6 +10,7 @@ import { cloneDeep, isEqual } from 'lodash'; import { IUiSettingsClient } from '@kbn/core/public'; import { DataPublicPluginStart } from '@kbn/data-plugin/public'; import { Storage } from '@kbn/kibana-utils-plugin/public'; +import { getDefaultSort, getSortArray } from '../../../utils'; import { DEFAULT_COLUMNS_SETTING, DOC_HIDE_TIME_COLUMN_SETTING, @@ -20,7 +21,6 @@ import { SavedSearch } from '../../../services/saved_searches'; import { AppState } from '../services/discover_state'; import { CHART_HIDDEN_KEY } from '../components/chart/discover_chart'; -import {getDefaultSort, getSortArray} from "@kbn/discover-plugin/public/utils"; function getDefaultColumns(savedSearch: SavedSearch, config: IUiSettingsClient) { if (savedSearch.columns && savedSearch.columns.length > 0) { From 326009fef5d695056614016c7a075961dfb03998 Mon Sep 17 00:00:00 2001 From: Matthias Wilhelm Date: Fri, 29 Jul 2022 09:36:33 +0200 Subject: [PATCH 03/14] Improve code and add tests --- .../components/table_header/helpers.tsx | 5 ++- .../table_header/table_header.test.tsx | 2 +- .../components/table_header/table_header.tsx | 3 +- .../table_header/table_header_column.tsx | 2 +- .../doc_table/doc_table_wrapper.tsx | 3 +- .../embeddable/saved_search_embeddable.tsx | 14 +++----- .../discover/public/embeddable/types.ts | 2 +- src/plugins/discover/public/types.ts | 2 ++ .../discover/public/utils/get_default_sort.ts | 2 +- .../discover/public/utils/get_sort.test.ts | 34 ++++++++++++++++--- src/plugins/discover/public/utils/get_sort.ts | 22 ++++++++++++ .../utils/get_sort_for_search_source.test.ts | 2 +- .../utils/get_sort_for_search_source.ts | 2 +- 13 files changed, 69 insertions(+), 26 deletions(-) diff --git a/src/plugins/discover/public/components/doc_table/components/table_header/helpers.tsx b/src/plugins/discover/public/components/doc_table/components/table_header/helpers.tsx index 47b96d266067b..0b4c4af7c0025 100644 --- a/src/plugins/discover/public/components/doc_table/components/table_header/helpers.tsx +++ b/src/plugins/discover/public/components/doc_table/components/table_header/helpers.tsx @@ -6,10 +6,9 @@ * Side Public License, v 1. */ -import { i18n } from '@kbn/i18n'; -import type { DataView } from '@kbn/data-views-plugin/public'; +import {i18n} from '@kbn/i18n'; +import type {DataView} from '@kbn/data-views-plugin/public'; -export type SortOrder = [string, string]; export interface ColumnProps { name: string; displayName: string; diff --git a/src/plugins/discover/public/components/doc_table/components/table_header/table_header.test.tsx b/src/plugins/discover/public/components/doc_table/components/table_header/table_header.test.tsx index 2b1937c177e15..4147f6e628bfc 100644 --- a/src/plugins/discover/public/components/doc_table/components/table_header/table_header.test.tsx +++ b/src/plugins/discover/public/components/doc_table/components/table_header/table_header.test.tsx @@ -11,10 +11,10 @@ import { mountWithIntl } from '@kbn/test-jest-helpers'; import type { DataView, DataViewField } from '@kbn/data-views-plugin/public'; import { TableHeader } from './table_header'; import { findTestSubject } from '@elastic/eui/lib/test'; -import { SortOrder } from './helpers'; import { KibanaContextProvider } from '@kbn/kibana-react-plugin/public'; import { DOC_HIDE_TIME_COLUMN_SETTING } from '../../../../../common'; import { FORMATS_UI_SETTINGS } from '@kbn/field-formats-plugin/common'; +import {SortOrder} from "@kbn/discover-plugin/public/types"; const defaultUiSettings = { get: (key: string) => { diff --git a/src/plugins/discover/public/components/doc_table/components/table_header/table_header.tsx b/src/plugins/discover/public/components/doc_table/components/table_header/table_header.tsx index 054de82eff13e..f8d58be70a09d 100644 --- a/src/plugins/discover/public/components/doc_table/components/table_header/table_header.tsx +++ b/src/plugins/discover/public/components/doc_table/components/table_header/table_header.tsx @@ -10,10 +10,11 @@ import React, { useMemo } from 'react'; import type { DataView } from '@kbn/data-views-plugin/public'; import { FORMATS_UI_SETTINGS } from '@kbn/field-formats-plugin/common'; import { TableHeaderColumn } from './table_header_column'; -import { SortOrder, getDisplayedColumns } from './helpers'; +import { getDisplayedColumns } from './helpers'; import { getDefaultSort } from '../../../../utils/get_default_sort'; import { useDiscoverServices } from '../../../../hooks/use_discover_services'; import { DOC_HIDE_TIME_COLUMN_SETTING, SORT_DEFAULT_ORDER_SETTING } from '../../../../../common'; +import {SortOrder} from "@kbn/discover-plugin/public/types"; interface Props { columns: string[]; diff --git a/src/plugins/discover/public/components/doc_table/components/table_header/table_header_column.tsx b/src/plugins/discover/public/components/doc_table/components/table_header/table_header_column.tsx index 80a1aee5e920f..47649e4ca2bea 100644 --- a/src/plugins/discover/public/components/doc_table/components/table_header/table_header_column.tsx +++ b/src/plugins/discover/public/components/doc_table/components/table_header/table_header_column.tsx @@ -9,8 +9,8 @@ import React from 'react'; import { i18n } from '@kbn/i18n'; import { EuiButtonIcon, EuiToolTip, EuiIconTip } from '@elastic/eui'; -import { SortOrder } from './helpers'; import { DocViewTableScoreSortWarning } from './score_sort_warning'; +import {SortOrder} from "@kbn/discover-plugin/public/types"; interface Props { colLeftIdx: number; // idx of the column to the left, -1 if moving is not possible diff --git a/src/plugins/discover/public/components/doc_table/doc_table_wrapper.tsx b/src/plugins/discover/public/components/doc_table/doc_table_wrapper.tsx index c7036deaff50b..3c53c9af922ee 100644 --- a/src/plugins/discover/public/components/doc_table/doc_table_wrapper.tsx +++ b/src/plugins/discover/public/components/doc_table/doc_table_wrapper.tsx @@ -12,12 +12,11 @@ import type { DataView, DataViewField } from '@kbn/data-views-plugin/public'; import { FormattedMessage } from '@kbn/i18n-react'; import { TableHeader } from './components/table_header/table_header'; import { SHOW_MULTIFIELDS } from '../../../common'; -import { SortOrder } from './components/table_header/helpers'; import { TableRow } from './components/table_row'; import { DocViewFilterFn } from '../../services/doc_views/doc_views_types'; import { getFieldsToShow } from '../../utils/get_fields_to_show'; import { useDiscoverServices } from '../../hooks/use_discover_services'; -import type { DataTableRecord } from '../../types'; +import type {DataTableRecord, SortOrder} from '../../types'; export interface DocTableProps { /** diff --git a/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx b/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx index 049e2c206b537..0e9a91de9a6b6 100644 --- a/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx +++ b/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx @@ -27,9 +27,10 @@ import { ISearchSource } from '@kbn/data-plugin/public'; import { DataView, DataViewField } from '@kbn/data-views-plugin/public'; import { UiActionsStart } from '@kbn/ui-actions-plugin/public'; import { KibanaContextProvider, KibanaThemeProvider } from '@kbn/kibana-react-plugin/public'; +import { getSortForEmbeddable, SortPair } from '../utils/get_sort'; import { RecordRawType } from '../application/main/hooks/use_saved_search'; import { buildDataTableRecord } from '../utils/build_data_record'; -import { DataTableRecord } from '../types'; +import { DataTableRecord, SortOrder } from '../types'; import { ISearchEmbeddable, SearchInput, SearchOutput } from './types'; import { SavedSearch } from '../services/saved_searches'; import { SEARCH_EMBEDDABLE_TYPE } from './constants'; @@ -48,8 +49,6 @@ import { handleSourceColumnState } from '../utils/state_helpers'; import { DiscoverGridProps } from '../components/discover_grid/discover_grid'; import { DiscoverGridSettings } from '../components/discover_grid/types'; import { DocTableProps } from '../components/doc_table/doc_table_wrapper'; -import { getDefaultSort, getSortArray } from '../utils'; -import type { SortOrder } from '../components/doc_table/components/table_header/helpers'; import { VIEW_MODE } from '../components/view_mode_toggle'; import { updateSearchSource } from './utils/update_search_source'; import { FieldStatisticsTable } from '../application/main/components/field_stats_table'; @@ -278,13 +277,8 @@ export class SavedSearchEmbeddable } }; - private getSort(sort: SortOrder[] | undefined, dataView?: DataView) { - if (!sort || !sort.length || !dataView) { - const defaultSortOrder = this.services.uiSettings.get(SORT_DEFAULT_ORDER_SETTING, 'desc'); - const hidingTimeColumn = this.services.uiSettings.get(DOC_HIDE_TIME_COLUMN_SETTING, false); - return getDefaultSort(dataView, defaultSortOrder, hidingTimeColumn); - } - return getSortArray(sort, dataView); + private getSort(sort: SortPair[] | undefined, dataView?: DataView) { + return getSortForEmbeddable(sort, dataView, this.services.uiSettings); } private initializeSearchEmbeddableProps() { diff --git a/src/plugins/discover/public/embeddable/types.ts b/src/plugins/discover/public/embeddable/types.ts index a72d7d86f6801..07e01e3463881 100644 --- a/src/plugins/discover/public/embeddable/types.ts +++ b/src/plugins/discover/public/embeddable/types.ts @@ -15,7 +15,7 @@ import { import type { Filter, TimeRange, Query } from '@kbn/es-query'; import { DataView } from '@kbn/data-views-plugin/public'; import { SavedSearch } from '../services/saved_searches'; -import { SortOrder } from '../components/doc_table/components/table_header/helpers'; +import {SortOrder} from "@kbn/discover-plugin/public/types"; export interface SearchInput extends EmbeddableInput { timeRange: TimeRange; diff --git a/src/plugins/discover/public/types.ts b/src/plugins/discover/public/types.ts index f96edccb5f9bf..a93422546ef48 100644 --- a/src/plugins/discover/public/types.ts +++ b/src/plugins/discover/public/types.ts @@ -38,3 +38,5 @@ export interface DataTableRecord { */ isAnchor?: boolean; } + +export type SortOrder = [string, string]; diff --git a/src/plugins/discover/public/utils/get_default_sort.ts b/src/plugins/discover/public/utils/get_default_sort.ts index 4e59ca5afb616..ac68b496b0d0f 100644 --- a/src/plugins/discover/public/utils/get_default_sort.ts +++ b/src/plugins/discover/public/utils/get_default_sort.ts @@ -8,7 +8,7 @@ import type { DataView } from '@kbn/data-views-plugin/public'; import { isSortable } from './get_sort'; -import { SortOrder } from '../components/doc_table/components/table_header/helpers'; +import {SortOrder} from "@kbn/discover-plugin/public/types"; /** * use in case the user didn't manually sort. diff --git a/src/plugins/discover/public/utils/get_sort.test.ts b/src/plugins/discover/public/utils/get_sort.test.ts index f778bbd8fecaa..8caf0e904f8e6 100644 --- a/src/plugins/discover/public/utils/get_sort.test.ts +++ b/src/plugins/discover/public/utils/get_sort.test.ts @@ -6,11 +6,12 @@ * Side Public License, v 1. */ -import { getSort, getSortArray } from './get_sort'; +import { getSort, getSortArray, getSortForEmbeddable } from './get_sort'; import { stubDataView, stubDataViewWithoutTimeField, } from '@kbn/data-views-plugin/common/data_view.stub'; +import { uiSettingsMock } from '@kbn/discover-plugin/public/__mocks__/ui_settings'; describe('docTable', function () { describe('getSort function', function () { @@ -47,7 +48,6 @@ describe('docTable', function () { expect(getSort(['foo', 'asc'], stubDataView)).toEqual([{ foo: 'asc' }]); }); }); - describe('getSortArray function', function () { test('should have an array method', function () { expect(getSortArray).toBeInstanceOf(Function); @@ -64,14 +64,40 @@ describe('docTable', function () { test('should sort by an empty array when an unsortable field is given', function () { expect(getSortArray([{ 'non-sortable': 'asc' }], stubDataView)).toEqual([]); expect(getSortArray([{ lol_nope: 'asc' }], stubDataView)).toEqual([]); - expect(getSortArray([{ 'non-sortable': 'asc' }], stubDataViewWithoutTimeField)).toEqual([]); }); test('should return an empty array when passed an empty sort array', () => { expect(getSortArray([], stubDataView)).toEqual([]); - expect(getSortArray([], stubDataViewWithoutTimeField)).toEqual([]); }); }); + describe('getSortForEmbeddable function', function () { + test('should return an array of arrays for sortable fields', function () { + expect(getSortForEmbeddable([['bytes', 'desc']], stubDataView)).toEqual([['bytes', 'desc']]); + }); + + test('should return an array of arrays from an array of elasticsearch sort objects', function () { + expect(getSortForEmbeddable([{ bytes: 'desc' }], stubDataView)).toEqual([['bytes', 'desc']]); + }); + + test('should sort by an empty array when an unsortable field is given', function () { + expect(getSortForEmbeddable([{ 'non-sortable': 'asc' }], stubDataView)).toEqual([]); + expect(getSortForEmbeddable([{ lol_nope: 'asc' }], stubDataView)).toEqual([]); + expect( + getSortForEmbeddable([{ 'non-sortable': 'asc' }], stubDataViewWithoutTimeField) + ).toEqual([]); + }); + + test('should return an empty array when passed an empty sort array', () => { + expect(getSortForEmbeddable([], stubDataView)).toEqual([]); + expect(getSortForEmbeddable([], stubDataViewWithoutTimeField)).toEqual([]); + }); + + test('should provide fallback results', () => { + expect(getSortForEmbeddable(undefined)).toEqual([]); + expect(getSortForEmbeddable(undefined, stubDataView)).toEqual([]); + expect(getSortForEmbeddable(undefined, stubDataView, uiSettingsMock)).toEqual([['@timestamp', 'desc']]); + }); + }); }); diff --git a/src/plugins/discover/public/utils/get_sort.ts b/src/plugins/discover/public/utils/get_sort.ts index 31d4375a5f266..f5a8694cf2496 100644 --- a/src/plugins/discover/public/utils/get_sort.ts +++ b/src/plugins/discover/public/utils/get_sort.ts @@ -8,6 +8,9 @@ import { isPlainObject } from 'lodash'; import { DataView } from '@kbn/data-views-plugin/public'; +import { IUiSettingsClient } from '@kbn/core/public'; +import { DOC_HIDE_TIME_COLUMN_SETTING, SORT_DEFAULT_ORDER_SETTING } from '../../common'; +import { getDefaultSort } from './get_default_sort'; export type SortPairObj = Record; export type SortPairArr = [string, string]; @@ -71,3 +74,22 @@ export function getSortArray(sort: SortPair[], dataView: DataView): SortPairArr[ return acc; }, []); } + +/** + * sorting for embeddable, like getSortArray,but returning a default in the case the given sort or dataView is not valid + */ +export function getSortForEmbeddable( + sort?: SortPair[], + dataView?: DataView, + uiSettings?: IUiSettingsClient +): SortPairArr[] { + if (!sort || !sort.length || !dataView) { + if (!uiSettings) { + return []; + } + const defaultSortOrder = uiSettings.get(SORT_DEFAULT_ORDER_SETTING, 'desc'); + const hidingTimeColumn = uiSettings.get(DOC_HIDE_TIME_COLUMN_SETTING, false); + return getDefaultSort(dataView, defaultSortOrder, hidingTimeColumn); + } + return getSortArray(sort, dataView); +} diff --git a/src/plugins/discover/public/utils/get_sort_for_search_source.test.ts b/src/plugins/discover/public/utils/get_sort_for_search_source.test.ts index 9ac9f28d241b2..3b217dc24db44 100644 --- a/src/plugins/discover/public/utils/get_sort_for_search_source.test.ts +++ b/src/plugins/discover/public/utils/get_sort_for_search_source.test.ts @@ -7,8 +7,8 @@ */ import { getSortForSearchSource } from './get_sort_for_search_source'; -import { SortOrder } from '../components/doc_table/components/table_header/helpers'; import { stubDataView, stubDataViewWithoutTimeField } from '@kbn/data-plugin/common/stubs'; +import {SortOrder} from "@kbn/discover-plugin/public/types"; describe('getSortForSearchSource function', function () { test('should be a function', function () { diff --git a/src/plugins/discover/public/utils/get_sort_for_search_source.ts b/src/plugins/discover/public/utils/get_sort_for_search_source.ts index 91ecdddbb79d4..500b2f4f83d94 100644 --- a/src/plugins/discover/public/utils/get_sort_for_search_source.ts +++ b/src/plugins/discover/public/utils/get_sort_for_search_source.ts @@ -8,8 +8,8 @@ import type { DataView } from '@kbn/data-views-plugin/public'; import type { EsQuerySortValue } from '@kbn/data-plugin/public'; -import { SortOrder } from '../components/doc_table/components/table_header/helpers'; import { getSort } from './get_sort'; +import {SortOrder} from "@kbn/discover-plugin/public/types"; /** * Prepares sort for search source, that's sending the request to ES From cc0c094e626a2dbffc4dde87736c900ce766f404 Mon Sep 17 00:00:00 2001 From: kibanamachine <42973632+kibanamachine@users.noreply.github.com> Date: Fri, 29 Jul 2022 07:41:56 +0000 Subject: [PATCH 04/14] [CI] Auto-commit changed files from 'node scripts/precommit_hook.js --ref HEAD~1..HEAD --fix' --- .../doc_table/components/table_header/helpers.tsx | 4 ++-- .../doc_table/components/table_header/table_header.test.tsx | 2 +- .../doc_table/components/table_header/table_header.tsx | 2 +- .../components/table_header/table_header_column.tsx | 2 +- .../public/components/doc_table/doc_table_wrapper.tsx | 2 +- src/plugins/discover/public/embeddable/types.ts | 2 +- src/plugins/discover/public/utils/get_default_sort.ts | 2 +- src/plugins/discover/public/utils/get_sort.test.ts | 6 ++++-- .../public/utils/get_sort_for_search_source.test.ts | 2 +- .../discover/public/utils/get_sort_for_search_source.ts | 2 +- 10 files changed, 14 insertions(+), 12 deletions(-) diff --git a/src/plugins/discover/public/components/doc_table/components/table_header/helpers.tsx b/src/plugins/discover/public/components/doc_table/components/table_header/helpers.tsx index 0b4c4af7c0025..57cdc35bad016 100644 --- a/src/plugins/discover/public/components/doc_table/components/table_header/helpers.tsx +++ b/src/plugins/discover/public/components/doc_table/components/table_header/helpers.tsx @@ -6,8 +6,8 @@ * Side Public License, v 1. */ -import {i18n} from '@kbn/i18n'; -import type {DataView} from '@kbn/data-views-plugin/public'; +import { i18n } from '@kbn/i18n'; +import type { DataView } from '@kbn/data-views-plugin/public'; export interface ColumnProps { name: string; diff --git a/src/plugins/discover/public/components/doc_table/components/table_header/table_header.test.tsx b/src/plugins/discover/public/components/doc_table/components/table_header/table_header.test.tsx index 4147f6e628bfc..fb06f26f2a8d2 100644 --- a/src/plugins/discover/public/components/doc_table/components/table_header/table_header.test.tsx +++ b/src/plugins/discover/public/components/doc_table/components/table_header/table_header.test.tsx @@ -14,7 +14,7 @@ import { findTestSubject } from '@elastic/eui/lib/test'; import { KibanaContextProvider } from '@kbn/kibana-react-plugin/public'; import { DOC_HIDE_TIME_COLUMN_SETTING } from '../../../../../common'; import { FORMATS_UI_SETTINGS } from '@kbn/field-formats-plugin/common'; -import {SortOrder} from "@kbn/discover-plugin/public/types"; +import { SortOrder } from '../../../../types'; const defaultUiSettings = { get: (key: string) => { diff --git a/src/plugins/discover/public/components/doc_table/components/table_header/table_header.tsx b/src/plugins/discover/public/components/doc_table/components/table_header/table_header.tsx index f8d58be70a09d..1d5b9e2804cb1 100644 --- a/src/plugins/discover/public/components/doc_table/components/table_header/table_header.tsx +++ b/src/plugins/discover/public/components/doc_table/components/table_header/table_header.tsx @@ -9,12 +9,12 @@ import React, { useMemo } from 'react'; import type { DataView } from '@kbn/data-views-plugin/public'; import { FORMATS_UI_SETTINGS } from '@kbn/field-formats-plugin/common'; +import { SortOrder } from '../../../../types'; import { TableHeaderColumn } from './table_header_column'; import { getDisplayedColumns } from './helpers'; import { getDefaultSort } from '../../../../utils/get_default_sort'; import { useDiscoverServices } from '../../../../hooks/use_discover_services'; import { DOC_HIDE_TIME_COLUMN_SETTING, SORT_DEFAULT_ORDER_SETTING } from '../../../../../common'; -import {SortOrder} from "@kbn/discover-plugin/public/types"; interface Props { columns: string[]; diff --git a/src/plugins/discover/public/components/doc_table/components/table_header/table_header_column.tsx b/src/plugins/discover/public/components/doc_table/components/table_header/table_header_column.tsx index 47649e4ca2bea..f3b361c89c68a 100644 --- a/src/plugins/discover/public/components/doc_table/components/table_header/table_header_column.tsx +++ b/src/plugins/discover/public/components/doc_table/components/table_header/table_header_column.tsx @@ -9,8 +9,8 @@ import React from 'react'; import { i18n } from '@kbn/i18n'; import { EuiButtonIcon, EuiToolTip, EuiIconTip } from '@elastic/eui'; +import { SortOrder } from '../../../../types'; import { DocViewTableScoreSortWarning } from './score_sort_warning'; -import {SortOrder} from "@kbn/discover-plugin/public/types"; interface Props { colLeftIdx: number; // idx of the column to the left, -1 if moving is not possible diff --git a/src/plugins/discover/public/components/doc_table/doc_table_wrapper.tsx b/src/plugins/discover/public/components/doc_table/doc_table_wrapper.tsx index 3c53c9af922ee..a6b08425cba14 100644 --- a/src/plugins/discover/public/components/doc_table/doc_table_wrapper.tsx +++ b/src/plugins/discover/public/components/doc_table/doc_table_wrapper.tsx @@ -16,7 +16,7 @@ import { TableRow } from './components/table_row'; import { DocViewFilterFn } from '../../services/doc_views/doc_views_types'; import { getFieldsToShow } from '../../utils/get_fields_to_show'; import { useDiscoverServices } from '../../hooks/use_discover_services'; -import type {DataTableRecord, SortOrder} from '../../types'; +import type { DataTableRecord, SortOrder } from '../../types'; export interface DocTableProps { /** diff --git a/src/plugins/discover/public/embeddable/types.ts b/src/plugins/discover/public/embeddable/types.ts index 07e01e3463881..299693023f92f 100644 --- a/src/plugins/discover/public/embeddable/types.ts +++ b/src/plugins/discover/public/embeddable/types.ts @@ -14,8 +14,8 @@ import { } from '@kbn/embeddable-plugin/public'; import type { Filter, TimeRange, Query } from '@kbn/es-query'; import { DataView } from '@kbn/data-views-plugin/public'; +import { SortOrder } from '../types'; import { SavedSearch } from '../services/saved_searches'; -import {SortOrder} from "@kbn/discover-plugin/public/types"; export interface SearchInput extends EmbeddableInput { timeRange: TimeRange; diff --git a/src/plugins/discover/public/utils/get_default_sort.ts b/src/plugins/discover/public/utils/get_default_sort.ts index ac68b496b0d0f..64c1a89a38817 100644 --- a/src/plugins/discover/public/utils/get_default_sort.ts +++ b/src/plugins/discover/public/utils/get_default_sort.ts @@ -7,8 +7,8 @@ */ import type { DataView } from '@kbn/data-views-plugin/public'; +import { SortOrder } from '../types'; import { isSortable } from './get_sort'; -import {SortOrder} from "@kbn/discover-plugin/public/types"; /** * use in case the user didn't manually sort. diff --git a/src/plugins/discover/public/utils/get_sort.test.ts b/src/plugins/discover/public/utils/get_sort.test.ts index 8caf0e904f8e6..ed1faa8a80939 100644 --- a/src/plugins/discover/public/utils/get_sort.test.ts +++ b/src/plugins/discover/public/utils/get_sort.test.ts @@ -11,7 +11,7 @@ import { stubDataView, stubDataViewWithoutTimeField, } from '@kbn/data-views-plugin/common/data_view.stub'; -import { uiSettingsMock } from '@kbn/discover-plugin/public/__mocks__/ui_settings'; +import { uiSettingsMock } from '../__mocks__/ui_settings'; describe('docTable', function () { describe('getSort function', function () { @@ -97,7 +97,9 @@ describe('docTable', function () { test('should provide fallback results', () => { expect(getSortForEmbeddable(undefined)).toEqual([]); expect(getSortForEmbeddable(undefined, stubDataView)).toEqual([]); - expect(getSortForEmbeddable(undefined, stubDataView, uiSettingsMock)).toEqual([['@timestamp', 'desc']]); + expect(getSortForEmbeddable(undefined, stubDataView, uiSettingsMock)).toEqual([ + ['@timestamp', 'desc'], + ]); }); }); }); diff --git a/src/plugins/discover/public/utils/get_sort_for_search_source.test.ts b/src/plugins/discover/public/utils/get_sort_for_search_source.test.ts index 3b217dc24db44..924e5e2f533e9 100644 --- a/src/plugins/discover/public/utils/get_sort_for_search_source.test.ts +++ b/src/plugins/discover/public/utils/get_sort_for_search_source.test.ts @@ -8,7 +8,7 @@ import { getSortForSearchSource } from './get_sort_for_search_source'; import { stubDataView, stubDataViewWithoutTimeField } from '@kbn/data-plugin/common/stubs'; -import {SortOrder} from "@kbn/discover-plugin/public/types"; +import { SortOrder } from '../types'; describe('getSortForSearchSource function', function () { test('should be a function', function () { diff --git a/src/plugins/discover/public/utils/get_sort_for_search_source.ts b/src/plugins/discover/public/utils/get_sort_for_search_source.ts index 500b2f4f83d94..6be1396f93ed6 100644 --- a/src/plugins/discover/public/utils/get_sort_for_search_source.ts +++ b/src/plugins/discover/public/utils/get_sort_for_search_source.ts @@ -8,8 +8,8 @@ import type { DataView } from '@kbn/data-views-plugin/public'; import type { EsQuerySortValue } from '@kbn/data-plugin/public'; +import { SortOrder } from '../types'; import { getSort } from './get_sort'; -import {SortOrder} from "@kbn/discover-plugin/public/types"; /** * Prepares sort for search source, that's sending the request to ES From 135b9d531d223d5f47414f1081cd74c4f96fca9e Mon Sep 17 00:00:00 2001 From: Matthias Wilhelm Date: Tue, 2 Aug 2022 15:00:46 +0200 Subject: [PATCH 05/14] Improve sorting types --- src/plugins/discover/public/utils/get_sort.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/plugins/discover/public/utils/get_sort.ts b/src/plugins/discover/public/utils/get_sort.ts index f5a8694cf2496..735b488b69d7d 100644 --- a/src/plugins/discover/public/utils/get_sort.ts +++ b/src/plugins/discover/public/utils/get_sort.ts @@ -65,7 +65,7 @@ export function getSort(sort: SortPair[] | SortPair, dataView: DataView): SortPa * compared to getSort it doesn't return an array of objects, it returns an array of arrays * [[fieldToSort: directionToSort]] */ -export function getSortArray(sort: SortPair[], dataView: DataView): SortPairArr[] { +export function getSortArray(sort: SortPair[] | SortPair, dataView: DataView): SortPairArr[] { return getSort(sort, dataView).reduce((acc: SortPairArr[], sortPair) => { const entries = Object.entries(sortPair); if (entries && entries[0]) { @@ -79,7 +79,7 @@ export function getSortArray(sort: SortPair[], dataView: DataView): SortPairArr[ * sorting for embeddable, like getSortArray,but returning a default in the case the given sort or dataView is not valid */ export function getSortForEmbeddable( - sort?: SortPair[], + sort?: SortInput, dataView?: DataView, uiSettings?: IUiSettingsClient ): SortPairArr[] { From 2dd7bef13703b2bef7d10a78a4381ad01dfa5c96 Mon Sep 17 00:00:00 2001 From: Matthias Wilhelm Date: Tue, 2 Aug 2022 21:38:42 +0200 Subject: [PATCH 06/14] Improve types --- src/plugins/discover/public/utils/get_sort.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/discover/public/utils/get_sort.ts b/src/plugins/discover/public/utils/get_sort.ts index 735b488b69d7d..6183ea0599866 100644 --- a/src/plugins/discover/public/utils/get_sort.ts +++ b/src/plugins/discover/public/utils/get_sort.ts @@ -65,7 +65,7 @@ export function getSort(sort: SortPair[] | SortPair, dataView: DataView): SortPa * compared to getSort it doesn't return an array of objects, it returns an array of arrays * [[fieldToSort: directionToSort]] */ -export function getSortArray(sort: SortPair[] | SortPair, dataView: DataView): SortPairArr[] { +export function getSortArray(sort: SortInput, dataView: DataView): SortPairArr[] { return getSort(sort, dataView).reduce((acc: SortPairArr[], sortPair) => { const entries = Object.entries(sortPair); if (entries && entries[0]) { From c2ffbe6adf9a76f738aff1bb03ba848486587deb Mon Sep 17 00:00:00 2001 From: Matthias Wilhelm Date: Tue, 2 Aug 2022 21:38:55 +0200 Subject: [PATCH 07/14] Prevent duplicate of fetching --- .../public/embeddable/saved_search_embeddable.tsx | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx b/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx index 0e9a91de9a6b6..16c6395daab5e 100644 --- a/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx +++ b/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx @@ -97,6 +97,7 @@ export class SavedSearchEmbeddable private prevTimeRange?: TimeRange; private prevFilters?: Filter[]; private prevQuery?: Query; + private prevSort?: SortOrder[]; private prevSearchSessionId?: string; private searchProps?: SearchProps; @@ -386,15 +387,15 @@ export class SavedSearchEmbeddable } private isFetchRequired(searchProps?: SearchProps) { - if (!searchProps) { + if (!searchProps || !searchProps.dataView) { return false; } - const sort = this.getSort(this.input.sort || this.savedSearch.sort, this.searchProps?.dataView); + return ( !onlyDisabledFiltersChanged(this.input.filters, this.prevFilters) || !isEqual(this.prevQuery, this.input.query) || !isEqual(this.prevTimeRange, this.input.timeRange) || - !isEqual(searchProps.sort, sort) || + !isEqual(this.prevSort, this.input.sort) || this.prevSearchSessionId !== this.input.searchSessionId ); } @@ -439,6 +440,7 @@ export class SavedSearchEmbeddable this.prevQuery = this.input.query; this.prevTimeRange = this.input.timeRange; this.prevSearchSessionId = this.input.searchSessionId; + this.prevSort = this.input.sort; this.searchProps = searchProps; await this.fetch(); } else if (this.searchProps && this.node) { From 2a51392b00b397e4bc2fe655c152240351c3f2e6 Mon Sep 17 00:00:00 2001 From: Matthias Wilhelm Date: Tue, 2 Aug 2022 21:53:00 +0200 Subject: [PATCH 08/14] migrate functions to utils/sorting --- .../application/context/context_app_content.tsx | 2 +- .../main/components/layout/discover_documents.tsx | 2 +- .../application/main/hooks/use_discover_state.ts | 2 +- .../application/main/utils/get_state_defaults.ts | 2 +- .../main/utils/get_switch_data_view_app_state.ts | 2 +- .../application/main/utils/update_search_source.ts | 2 +- .../public/components/discover_grid/discover_grid.tsx | 2 +- .../components/table_header/table_header.tsx | 2 +- .../public/embeddable/saved_search_embeddable.tsx | 2 +- .../public/embeddable/utils/update_search_source.ts | 3 +-- src/plugins/discover/public/utils/get_sharing_data.ts | 2 +- src/plugins/discover/public/utils/index.ts | 4 ---- .../utils/{ => sorting}/get_default_sort.test.ts | 0 .../public/utils/{ => sorting}/get_default_sort.ts | 2 +- .../public/utils/{ => sorting}/get_sort.test.ts | 2 +- .../discover/public/utils/{ => sorting}/get_sort.ts | 2 +- .../{ => sorting}/get_sort_for_search_source.test.ts | 2 +- .../utils/{ => sorting}/get_sort_for_search_source.ts | 2 +- src/plugins/discover/public/utils/sorting/index.ts | 11 +++++++++++ 19 files changed, 27 insertions(+), 21 deletions(-) rename src/plugins/discover/public/utils/{ => sorting}/get_default_sort.test.ts (100%) rename src/plugins/discover/public/utils/{ => sorting}/get_default_sort.ts (95%) rename src/plugins/discover/public/utils/{ => sorting}/get_sort.test.ts (98%) rename src/plugins/discover/public/utils/{ => sorting}/get_sort.ts (99%) rename src/plugins/discover/public/utils/{ => sorting}/get_sort_for_search_source.test.ts (97%) rename src/plugins/discover/public/utils/{ => sorting}/get_sort_for_search_source.ts (97%) create mode 100644 src/plugins/discover/public/utils/sorting/index.ts diff --git a/src/plugins/discover/public/application/context/context_app_content.tsx b/src/plugins/discover/public/application/context/context_app_content.tsx index cc064d51dd3ee..776c8ff26e6b0 100644 --- a/src/plugins/discover/public/application/context/context_app_content.tsx +++ b/src/plugins/discover/public/application/context/context_app_content.tsx @@ -20,7 +20,7 @@ import { AppState } from './services/context_state'; import { SurrDocType } from './services/context'; import { MAX_CONTEXT_SIZE, MIN_CONTEXT_SIZE } from './services/constants'; import { DocTableContext } from '../../components/doc_table/doc_table_context'; -import type { SortPairArr } from '../../utils/get_sort'; +import type { SortPairArr } from '../../utils/sorting'; import { useDiscoverServices } from '../../hooks/use_discover_services'; import type { DataTableRecord } from '../../types'; diff --git a/src/plugins/discover/public/application/main/components/layout/discover_documents.tsx b/src/plugins/discover/public/application/main/components/layout/discover_documents.tsx index 257ec7eef8e93..425e55e97e960 100644 --- a/src/plugins/discover/public/application/main/components/layout/discover_documents.tsx +++ b/src/plugins/discover/public/application/main/components/layout/discover_documents.tsx @@ -32,7 +32,7 @@ import { DataDocuments$, DataDocumentsMsg, RecordRawType } from '../../hooks/use import { AppState, GetStateReturn } from '../../services/discover_state'; import { useDataState } from '../../hooks/use_data_state'; import { DocTableInfinite } from '../../../../components/doc_table/doc_table_infinite'; -import { SortPairArr } from '../../../../utils/get_sort'; +import { SortPairArr } from '../../../../utils/sorting'; import { DocumentExplorerCallout } from '../document_explorer_callout'; import { DocumentExplorerUpdateCallout } from '../document_explorer_callout/document_explorer_update_callout'; import { DiscoverTourProvider } from '../../../../components/discover_tour'; diff --git a/src/plugins/discover/public/application/main/hooks/use_discover_state.ts b/src/plugins/discover/public/application/main/hooks/use_discover_state.ts index 5d097969cbd42..e2ef6c0c306f7 100644 --- a/src/plugins/discover/public/application/main/hooks/use_discover_state.ts +++ b/src/plugins/discover/public/application/main/hooks/use_discover_state.ts @@ -32,7 +32,7 @@ import { useSearchSession } from './use_search_session'; import { useDataState } from './use_data_state'; import { FetchStatus } from '../../types'; import { getDataViewAppState } from '../utils/get_switch_data_view_app_state'; -import { SortPairArr } from '../../../utils/get_sort'; +import { SortPairArr } from '../../../utils/sorting'; import { DataTableRecord } from '../../../types'; const MAX_NUM_OF_COLUMNS = 50; diff --git a/src/plugins/discover/public/application/main/utils/get_state_defaults.ts b/src/plugins/discover/public/application/main/utils/get_state_defaults.ts index be0bfcb651abc..85208c7575282 100644 --- a/src/plugins/discover/public/application/main/utils/get_state_defaults.ts +++ b/src/plugins/discover/public/application/main/utils/get_state_defaults.ts @@ -10,7 +10,7 @@ import { cloneDeep, isEqual } from 'lodash'; import { IUiSettingsClient } from '@kbn/core/public'; import { DataPublicPluginStart } from '@kbn/data-plugin/public'; import { Storage } from '@kbn/kibana-utils-plugin/public'; -import { getDefaultSort, getSortArray } from '../../../utils'; +import { getDefaultSort, getSortArray } from '../../../utils/sorting'; import { DEFAULT_COLUMNS_SETTING, DOC_HIDE_TIME_COLUMN_SETTING, diff --git a/src/plugins/discover/public/application/main/utils/get_switch_data_view_app_state.ts b/src/plugins/discover/public/application/main/utils/get_switch_data_view_app_state.ts index 86a20eba3cad2..fe6936412dcfd 100644 --- a/src/plugins/discover/public/application/main/utils/get_switch_data_view_app_state.ts +++ b/src/plugins/discover/public/application/main/utils/get_switch_data_view_app_state.ts @@ -7,7 +7,7 @@ */ import { isOfAggregateQueryType, Query, AggregateQuery } from '@kbn/es-query'; import type { DataView } from '@kbn/data-views-plugin/public'; -import { getSortArray, SortPairArr } from '../../../utils/get_sort'; +import { getSortArray, SortPairArr } from '../../../utils/sorting'; /** * Helper function to remove or adapt the currently selected columns/sort to be valid with the next diff --git a/src/plugins/discover/public/application/main/utils/update_search_source.ts b/src/plugins/discover/public/application/main/utils/update_search_source.ts index 80d71d71d181e..0c3cf0b4f8323 100644 --- a/src/plugins/discover/public/application/main/utils/update_search_source.ts +++ b/src/plugins/discover/public/application/main/utils/update_search_source.ts @@ -11,7 +11,7 @@ import { DataViewType, DataView } from '@kbn/data-views-plugin/public'; import { SORT_DEFAULT_ORDER_SETTING } from '../../../../common'; import type { SortOrder } from '../../../services/saved_searches'; import { DiscoverServices } from '../../../build_services'; -import { getSortForSearchSource } from '../../../utils'; +import { getSortForSearchSource } from '../../../utils/sorting'; /** * Helper function to update the given searchSource before fetching/sharing/persisting diff --git a/src/plugins/discover/public/components/discover_grid/discover_grid.tsx b/src/plugins/discover/public/components/discover_grid/discover_grid.tsx index 8ca13d23fe17e..4b3f38941d3b2 100644 --- a/src/plugins/discover/public/components/discover_grid/discover_grid.tsx +++ b/src/plugins/discover/public/components/discover_grid/discover_grid.tsx @@ -43,7 +43,7 @@ import { SHOW_MULTIFIELDS, } from '../../../common'; import { DiscoverGridDocumentToolbarBtn } from './discover_grid_document_selection'; -import { SortPairArr } from '../../utils/get_sort'; +import { SortPairArr } from '../../utils/sorting'; import { getFieldsToShow } from '../../utils/get_fields_to_show'; import type { DataTableRecord, ValueToStringConverter } from '../../types'; import { useRowHeightsOptions } from '../../hooks/use_row_heights_options'; diff --git a/src/plugins/discover/public/components/doc_table/components/table_header/table_header.tsx b/src/plugins/discover/public/components/doc_table/components/table_header/table_header.tsx index 1d5b9e2804cb1..1254876cbb890 100644 --- a/src/plugins/discover/public/components/doc_table/components/table_header/table_header.tsx +++ b/src/plugins/discover/public/components/doc_table/components/table_header/table_header.tsx @@ -12,7 +12,7 @@ import { FORMATS_UI_SETTINGS } from '@kbn/field-formats-plugin/common'; import { SortOrder } from '../../../../types'; import { TableHeaderColumn } from './table_header_column'; import { getDisplayedColumns } from './helpers'; -import { getDefaultSort } from '../../../../utils/get_default_sort'; +import { getDefaultSort } from '../../../../utils/sorting/get_default_sort'; import { useDiscoverServices } from '../../../../hooks/use_discover_services'; import { DOC_HIDE_TIME_COLUMN_SETTING, SORT_DEFAULT_ORDER_SETTING } from '../../../../../common'; diff --git a/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx b/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx index 16c6395daab5e..ed10615c217c7 100644 --- a/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx +++ b/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx @@ -27,7 +27,7 @@ import { ISearchSource } from '@kbn/data-plugin/public'; import { DataView, DataViewField } from '@kbn/data-views-plugin/public'; import { UiActionsStart } from '@kbn/ui-actions-plugin/public'; import { KibanaContextProvider, KibanaThemeProvider } from '@kbn/kibana-react-plugin/public'; -import { getSortForEmbeddable, SortPair } from '../utils/get_sort'; +import { getSortForEmbeddable, SortPair } from '../utils/sorting'; import { RecordRawType } from '../application/main/hooks/use_saved_search'; import { buildDataTableRecord } from '../utils/build_data_record'; import { DataTableRecord, SortOrder } from '../types'; diff --git a/src/plugins/discover/public/embeddable/utils/update_search_source.ts b/src/plugins/discover/public/embeddable/utils/update_search_source.ts index 1e9ed350a49c4..e8d75ebefd42a 100644 --- a/src/plugins/discover/public/embeddable/utils/update_search_source.ts +++ b/src/plugins/discover/public/embeddable/utils/update_search_source.ts @@ -7,8 +7,7 @@ */ import type { DataView } from '@kbn/data-views-plugin/public'; import { ISearchSource } from '@kbn/data-plugin/public'; -import { getSortForSearchSource } from '../../utils'; -import { SortPairArr } from '../../utils/get_sort'; +import { getSortForSearchSource, SortPairArr } from '../../utils/sorting'; export const updateSearchSource = ( searchSource: ISearchSource, diff --git a/src/plugins/discover/public/utils/get_sharing_data.ts b/src/plugins/discover/public/utils/get_sharing_data.ts index 903e2666cd6d2..e862db3637172 100644 --- a/src/plugins/discover/public/utils/get_sharing_data.ts +++ b/src/plugins/discover/public/utils/get_sharing_data.ts @@ -14,7 +14,7 @@ import type { SerializedSearchSourceFields, } from '@kbn/data-plugin/public'; import type { Filter } from '@kbn/es-query'; -import { getSortForSearchSource } from './get_sort_for_search_source'; +import { getSortForSearchSource } from './sorting'; import { DOC_HIDE_TIME_COLUMN_SETTING, SEARCH_FIELDS_FROM_SOURCE, diff --git a/src/plugins/discover/public/utils/index.ts b/src/plugins/discover/public/utils/index.ts index 34229760eb33c..9a3e709fc71e4 100644 --- a/src/plugins/discover/public/utils/index.ts +++ b/src/plugins/discover/public/utils/index.ts @@ -11,7 +11,3 @@ export async function loadSharingDataHelpers() { return await import('./get_sharing_data'); } - -export { getSort, getSortArray } from './get_sort'; -export { getSortForSearchSource } from './get_sort_for_search_source'; -export { getDefaultSort } from './get_default_sort'; diff --git a/src/plugins/discover/public/utils/get_default_sort.test.ts b/src/plugins/discover/public/utils/sorting/get_default_sort.test.ts similarity index 100% rename from src/plugins/discover/public/utils/get_default_sort.test.ts rename to src/plugins/discover/public/utils/sorting/get_default_sort.test.ts diff --git a/src/plugins/discover/public/utils/get_default_sort.ts b/src/plugins/discover/public/utils/sorting/get_default_sort.ts similarity index 95% rename from src/plugins/discover/public/utils/get_default_sort.ts rename to src/plugins/discover/public/utils/sorting/get_default_sort.ts index 64c1a89a38817..ee3c9da9c2de9 100644 --- a/src/plugins/discover/public/utils/get_default_sort.ts +++ b/src/plugins/discover/public/utils/sorting/get_default_sort.ts @@ -7,7 +7,7 @@ */ import type { DataView } from '@kbn/data-views-plugin/public'; -import { SortOrder } from '../types'; +import { SortOrder } from '../../types'; import { isSortable } from './get_sort'; /** diff --git a/src/plugins/discover/public/utils/get_sort.test.ts b/src/plugins/discover/public/utils/sorting/get_sort.test.ts similarity index 98% rename from src/plugins/discover/public/utils/get_sort.test.ts rename to src/plugins/discover/public/utils/sorting/get_sort.test.ts index ed1faa8a80939..0656a2e36c4ca 100644 --- a/src/plugins/discover/public/utils/get_sort.test.ts +++ b/src/plugins/discover/public/utils/sorting/get_sort.test.ts @@ -11,7 +11,7 @@ import { stubDataView, stubDataViewWithoutTimeField, } from '@kbn/data-views-plugin/common/data_view.stub'; -import { uiSettingsMock } from '../__mocks__/ui_settings'; +import { uiSettingsMock } from '../../__mocks__/ui_settings'; describe('docTable', function () { describe('getSort function', function () { diff --git a/src/plugins/discover/public/utils/get_sort.ts b/src/plugins/discover/public/utils/sorting/get_sort.ts similarity index 99% rename from src/plugins/discover/public/utils/get_sort.ts rename to src/plugins/discover/public/utils/sorting/get_sort.ts index 6183ea0599866..9d8de939fa3e1 100644 --- a/src/plugins/discover/public/utils/get_sort.ts +++ b/src/plugins/discover/public/utils/sorting/get_sort.ts @@ -9,7 +9,7 @@ import { isPlainObject } from 'lodash'; import { DataView } from '@kbn/data-views-plugin/public'; import { IUiSettingsClient } from '@kbn/core/public'; -import { DOC_HIDE_TIME_COLUMN_SETTING, SORT_DEFAULT_ORDER_SETTING } from '../../common'; +import { DOC_HIDE_TIME_COLUMN_SETTING, SORT_DEFAULT_ORDER_SETTING } from '../../../common'; import { getDefaultSort } from './get_default_sort'; export type SortPairObj = Record; diff --git a/src/plugins/discover/public/utils/get_sort_for_search_source.test.ts b/src/plugins/discover/public/utils/sorting/get_sort_for_search_source.test.ts similarity index 97% rename from src/plugins/discover/public/utils/get_sort_for_search_source.test.ts rename to src/plugins/discover/public/utils/sorting/get_sort_for_search_source.test.ts index 924e5e2f533e9..3351ac339c3b9 100644 --- a/src/plugins/discover/public/utils/get_sort_for_search_source.test.ts +++ b/src/plugins/discover/public/utils/sorting/get_sort_for_search_source.test.ts @@ -8,7 +8,7 @@ import { getSortForSearchSource } from './get_sort_for_search_source'; import { stubDataView, stubDataViewWithoutTimeField } from '@kbn/data-plugin/common/stubs'; -import { SortOrder } from '../types'; +import { SortOrder } from '../../types'; describe('getSortForSearchSource function', function () { test('should be a function', function () { diff --git a/src/plugins/discover/public/utils/get_sort_for_search_source.ts b/src/plugins/discover/public/utils/sorting/get_sort_for_search_source.ts similarity index 97% rename from src/plugins/discover/public/utils/get_sort_for_search_source.ts rename to src/plugins/discover/public/utils/sorting/get_sort_for_search_source.ts index 6be1396f93ed6..7788db4b1409a 100644 --- a/src/plugins/discover/public/utils/get_sort_for_search_source.ts +++ b/src/plugins/discover/public/utils/sorting/get_sort_for_search_source.ts @@ -8,7 +8,7 @@ import type { DataView } from '@kbn/data-views-plugin/public'; import type { EsQuerySortValue } from '@kbn/data-plugin/public'; -import { SortOrder } from '../types'; +import { SortOrder } from '../../types'; import { getSort } from './get_sort'; /** diff --git a/src/plugins/discover/public/utils/sorting/index.ts b/src/plugins/discover/public/utils/sorting/index.ts new file mode 100644 index 0000000000000..d5c07998bf307 --- /dev/null +++ b/src/plugins/discover/public/utils/sorting/index.ts @@ -0,0 +1,11 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ +export { getSort, getSortArray, getSortForEmbeddable } from './get_sort'; +export { getSortForSearchSource } from './get_sort_for_search_source'; +export { getDefaultSort } from './get_default_sort'; +export type { SortPairArr, SortPair } from './get_sort'; From 95d1c49955824f7ad689e23b862611f374320bc3 Mon Sep 17 00:00:00 2001 From: Matthias Wilhelm Date: Tue, 2 Aug 2022 22:15:04 +0200 Subject: [PATCH 09/14] Rename SortOrder to SortPair --- .../components/table_header/table_header.test.tsx | 4 ++-- .../doc_table/components/table_header/table_header.tsx | 8 ++++---- .../components/table_header/table_header_column.tsx | 6 +++--- .../public/components/doc_table/doc_table_wrapper.tsx | 4 ++-- .../public/embeddable/saved_search_embeddable.tsx | 8 ++++---- src/plugins/discover/public/embeddable/types.ts | 4 ++-- src/plugins/discover/public/types.ts | 2 +- .../discover/public/utils/sorting/get_default_sort.ts | 4 ++-- .../utils/sorting/get_sort_for_search_source.test.ts | 6 +++--- .../public/utils/sorting/get_sort_for_search_source.ts | 4 ++-- 10 files changed, 25 insertions(+), 25 deletions(-) diff --git a/src/plugins/discover/public/components/doc_table/components/table_header/table_header.test.tsx b/src/plugins/discover/public/components/doc_table/components/table_header/table_header.test.tsx index fb06f26f2a8d2..d1cfa89189392 100644 --- a/src/plugins/discover/public/components/doc_table/components/table_header/table_header.test.tsx +++ b/src/plugins/discover/public/components/doc_table/components/table_header/table_header.test.tsx @@ -14,7 +14,7 @@ import { findTestSubject } from '@elastic/eui/lib/test'; import { KibanaContextProvider } from '@kbn/kibana-react-plugin/public'; import { DOC_HIDE_TIME_COLUMN_SETTING } from '../../../../../common'; import { FORMATS_UI_SETTINGS } from '@kbn/field-formats-plugin/common'; -import { SortOrder } from '../../../../types'; +import { SortPairArr } from '../../../../types'; const defaultUiSettings = { get: (key: string) => { @@ -63,7 +63,7 @@ function getMockProps(props = {}) { hideTimeColumn: false, columns: ['first', 'middle', 'last'], defaultSortOrder: 'desc', - sortOrder: [['time', 'asc']] as SortOrder[], + sortOrder: [['time', 'asc']] as SortPairArr[], isShortDots: true, onRemoveColumn: jest.fn(), onChangeSortOrder: jest.fn(), diff --git a/src/plugins/discover/public/components/doc_table/components/table_header/table_header.tsx b/src/plugins/discover/public/components/doc_table/components/table_header/table_header.tsx index 1254876cbb890..e5444282aaac7 100644 --- a/src/plugins/discover/public/components/doc_table/components/table_header/table_header.tsx +++ b/src/plugins/discover/public/components/doc_table/components/table_header/table_header.tsx @@ -9,20 +9,20 @@ import React, { useMemo } from 'react'; import type { DataView } from '@kbn/data-views-plugin/public'; import { FORMATS_UI_SETTINGS } from '@kbn/field-formats-plugin/common'; -import { SortOrder } from '../../../../types'; +import { SortPairArr } from '../../../../types'; import { TableHeaderColumn } from './table_header_column'; import { getDisplayedColumns } from './helpers'; -import { getDefaultSort } from '../../../../utils/sorting/get_default_sort'; +import { getDefaultSort } from '../../../../utils/sorting'; import { useDiscoverServices } from '../../../../hooks/use_discover_services'; import { DOC_HIDE_TIME_COLUMN_SETTING, SORT_DEFAULT_ORDER_SETTING } from '../../../../../common'; interface Props { columns: string[]; dataView: DataView; - onChangeSortOrder?: (sortOrder: SortOrder[]) => void; + onChangeSortOrder?: (sortOrder: SortPairArr[]) => void; onMoveColumn?: (name: string, index: number) => void; onRemoveColumn?: (name: string) => void; - sortOrder: SortOrder[]; + sortOrder: SortPairArr[]; } export function TableHeader({ diff --git a/src/plugins/discover/public/components/doc_table/components/table_header/table_header_column.tsx b/src/plugins/discover/public/components/doc_table/components/table_header/table_header_column.tsx index f3b361c89c68a..8fa2a0e6e174b 100644 --- a/src/plugins/discover/public/components/doc_table/components/table_header/table_header_column.tsx +++ b/src/plugins/discover/public/components/doc_table/components/table_header/table_header_column.tsx @@ -9,7 +9,7 @@ import React from 'react'; import { i18n } from '@kbn/i18n'; import { EuiButtonIcon, EuiToolTip, EuiIconTip } from '@elastic/eui'; -import { SortOrder } from '../../../../types'; +import { SortPairArr } from '../../../../types'; import { DocViewTableScoreSortWarning } from './score_sort_warning'; interface Props { @@ -21,10 +21,10 @@ interface Props { isTimeColumn: boolean; customLabel?: string; name: string; - onChangeSortOrder?: (sortOrder: SortOrder[]) => void; + onChangeSortOrder?: (sortOrder: SortPairArr[]) => void; onMoveColumn?: (name: string, idx: number) => void; onRemoveColumn?: (name: string) => void; - sortOrder: SortOrder[]; + sortOrder: SortPairArr[]; } interface IconProps { diff --git a/src/plugins/discover/public/components/doc_table/doc_table_wrapper.tsx b/src/plugins/discover/public/components/doc_table/doc_table_wrapper.tsx index a6b08425cba14..33ecbf673ecf9 100644 --- a/src/plugins/discover/public/components/doc_table/doc_table_wrapper.tsx +++ b/src/plugins/discover/public/components/doc_table/doc_table_wrapper.tsx @@ -16,7 +16,7 @@ import { TableRow } from './components/table_row'; import { DocViewFilterFn } from '../../services/doc_views/doc_views_types'; import { getFieldsToShow } from '../../utils/get_fields_to_show'; import { useDiscoverServices } from '../../hooks/use_discover_services'; -import type { DataTableRecord, SortOrder } from '../../types'; +import type { DataTableRecord, SortPairArr } from '../../types'; export interface DocTableProps { /** @@ -148,7 +148,7 @@ export const DocTableWrapper = forwardRef( onChangeSortOrder={onSort} onMoveColumn={onMoveColumn} onRemoveColumn={onRemoveColumn} - sortOrder={sort as SortOrder[]} + sortOrder={sort as SortPairArr[]} /> ), [columns, dataView, onMoveColumn, onRemoveColumn, onSort, sort] diff --git a/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx b/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx index ed10615c217c7..b0107101768fe 100644 --- a/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx +++ b/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx @@ -30,7 +30,7 @@ import { KibanaContextProvider, KibanaThemeProvider } from '@kbn/kibana-react-pl import { getSortForEmbeddable, SortPair } from '../utils/sorting'; import { RecordRawType } from '../application/main/hooks/use_saved_search'; import { buildDataTableRecord } from '../utils/build_data_record'; -import { DataTableRecord, SortOrder } from '../types'; +import { DataTableRecord, SortPairArr } from '../types'; import { ISearchEmbeddable, SearchInput, SearchOutput } from './types'; import { SavedSearch } from '../services/saved_searches'; import { SEARCH_EMBEDDABLE_TYPE } from './constants'; @@ -97,7 +97,7 @@ export class SavedSearchEmbeddable private prevTimeRange?: TimeRange; private prevFilters?: Filter[]; private prevQuery?: Query; - private prevSort?: SortOrder[]; + private prevSort?: SortPairArr[]; private prevSearchSessionId?: string; private searchProps?: SearchProps; @@ -327,9 +327,9 @@ export class SavedSearchEmbeddable this.updateInput({ columns }); }, onSort: (sort: string[][]) => { - const sortOrderArr: SortOrder[] = []; + const sortOrderArr: SortPairArr[] = []; sort.forEach((arr) => { - sortOrderArr.push(arr as SortOrder); + sortOrderArr.push(arr as SortPairArr); }); this.updateInput({ sort: sortOrderArr }); }, diff --git a/src/plugins/discover/public/embeddable/types.ts b/src/plugins/discover/public/embeddable/types.ts index 299693023f92f..a16aa5a53a75d 100644 --- a/src/plugins/discover/public/embeddable/types.ts +++ b/src/plugins/discover/public/embeddable/types.ts @@ -14,7 +14,7 @@ import { } from '@kbn/embeddable-plugin/public'; import type { Filter, TimeRange, Query } from '@kbn/es-query'; import { DataView } from '@kbn/data-views-plugin/public'; -import { SortOrder } from '../types'; +import { SortPairArr } from '../types'; import { SavedSearch } from '../services/saved_searches'; export interface SearchInput extends EmbeddableInput { @@ -23,7 +23,7 @@ export interface SearchInput extends EmbeddableInput { filters?: Filter[]; hidePanelTitles?: boolean; columns?: string[]; - sort?: SortOrder[]; + sort?: SortPairArr[]; rowHeight?: number; rowsPerPage?: number; } diff --git a/src/plugins/discover/public/types.ts b/src/plugins/discover/public/types.ts index a93422546ef48..9ef7b74a2b14c 100644 --- a/src/plugins/discover/public/types.ts +++ b/src/plugins/discover/public/types.ts @@ -39,4 +39,4 @@ export interface DataTableRecord { isAnchor?: boolean; } -export type SortOrder = [string, string]; +export type SortPairArr = [string, string]; diff --git a/src/plugins/discover/public/utils/sorting/get_default_sort.ts b/src/plugins/discover/public/utils/sorting/get_default_sort.ts index ee3c9da9c2de9..10977f0db1484 100644 --- a/src/plugins/discover/public/utils/sorting/get_default_sort.ts +++ b/src/plugins/discover/public/utils/sorting/get_default_sort.ts @@ -7,7 +7,7 @@ */ import type { DataView } from '@kbn/data-views-plugin/public'; -import { SortOrder } from '../../types'; +import { SortPairArr } from '../../types'; import { isSortable } from './get_sort'; /** @@ -18,7 +18,7 @@ export function getDefaultSort( dataView: DataView | undefined, defaultSortOrder: string = 'desc', hidingTimeColumn: boolean = false -): SortOrder[] { +): SortPairArr[] { if ( dataView?.timeFieldName && isSortable(dataView.timeFieldName, dataView) && diff --git a/src/plugins/discover/public/utils/sorting/get_sort_for_search_source.test.ts b/src/plugins/discover/public/utils/sorting/get_sort_for_search_source.test.ts index 3351ac339c3b9..7808e1958407b 100644 --- a/src/plugins/discover/public/utils/sorting/get_sort_for_search_source.test.ts +++ b/src/plugins/discover/public/utils/sorting/get_sort_for_search_source.test.ts @@ -8,7 +8,7 @@ import { getSortForSearchSource } from './get_sort_for_search_source'; import { stubDataView, stubDataViewWithoutTimeField } from '@kbn/data-plugin/common/stubs'; -import { SortOrder } from '../../types'; +import { SortPairArr } from '../../types'; describe('getSortForSearchSource function', function () { test('should be a function', function () { @@ -16,7 +16,7 @@ describe('getSortForSearchSource function', function () { }); test('should return an object to use for searchSource when columns are given', function () { - const cols = [['bytes', 'desc']] as SortOrder[]; + const cols = [['bytes', 'desc']] as SortPairArr[]; expect(getSortForSearchSource(cols, stubDataView)).toEqual([{ bytes: 'desc' }]); expect(getSortForSearchSource(cols, stubDataView, 'asc')).toEqual([{ bytes: 'desc' }]); @@ -27,7 +27,7 @@ describe('getSortForSearchSource function', function () { }); test('should return an object to use for searchSource when no columns are given', function () { - const cols = [] as SortOrder[]; + const cols = [] as SortPairArr[]; expect(getSortForSearchSource(cols, stubDataView)).toEqual([{ _doc: 'desc' }]); expect(getSortForSearchSource(cols, stubDataView, 'asc')).toEqual([{ _doc: 'asc' }]); diff --git a/src/plugins/discover/public/utils/sorting/get_sort_for_search_source.ts b/src/plugins/discover/public/utils/sorting/get_sort_for_search_source.ts index 7788db4b1409a..80a7616a29c2b 100644 --- a/src/plugins/discover/public/utils/sorting/get_sort_for_search_source.ts +++ b/src/plugins/discover/public/utils/sorting/get_sort_for_search_source.ts @@ -8,7 +8,7 @@ import type { DataView } from '@kbn/data-views-plugin/public'; import type { EsQuerySortValue } from '@kbn/data-plugin/public'; -import { SortOrder } from '../../types'; +import { SortPairArr } from '../../types'; import { getSort } from './get_sort'; /** @@ -19,7 +19,7 @@ import { getSort } from './get_sort'; * when there are indices with date and indices with date_nanos field */ export function getSortForSearchSource( - sort?: SortOrder[], + sort?: SortPairArr[], dataView?: DataView, defaultDirection: string = 'desc' ): EsQuerySortValue[] { From ffe9fd92d00a5a4203b000c70b1251eaa3260189 Mon Sep 17 00:00:00 2001 From: Matthias Wilhelm Date: Tue, 2 Aug 2022 22:24:05 +0200 Subject: [PATCH 10/14] Refactor to use just a single SortPair --- .../public/application/context/context_app_content.tsx | 3 +-- .../main/components/layout/discover_documents.tsx | 3 +-- .../public/application/main/hooks/use_discover_state.ts | 3 +-- .../application/main/utils/get_switch_data_view_app_state.ts | 3 ++- .../public/components/discover_grid/discover_grid.tsx | 3 +-- .../discover/public/embeddable/utils/update_search_source.ts | 5 +++-- src/plugins/discover/public/utils/sorting/get_sort.ts | 2 +- src/plugins/discover/public/utils/sorting/index.ts | 2 +- 8 files changed, 11 insertions(+), 13 deletions(-) diff --git a/src/plugins/discover/public/application/context/context_app_content.tsx b/src/plugins/discover/public/application/context/context_app_content.tsx index 776c8ff26e6b0..791ba716d378b 100644 --- a/src/plugins/discover/public/application/context/context_app_content.tsx +++ b/src/plugins/discover/public/application/context/context_app_content.tsx @@ -20,9 +20,8 @@ import { AppState } from './services/context_state'; import { SurrDocType } from './services/context'; import { MAX_CONTEXT_SIZE, MIN_CONTEXT_SIZE } from './services/constants'; import { DocTableContext } from '../../components/doc_table/doc_table_context'; -import type { SortPairArr } from '../../utils/sorting'; import { useDiscoverServices } from '../../hooks/use_discover_services'; -import type { DataTableRecord } from '../../types'; +import type { DataTableRecord, SortPairArr } from '../../types'; export interface ContextAppContentProps { columns: string[]; diff --git a/src/plugins/discover/public/application/main/components/layout/discover_documents.tsx b/src/plugins/discover/public/application/main/components/layout/discover_documents.tsx index 425e55e97e960..686ff59ec8ff4 100644 --- a/src/plugins/discover/public/application/main/components/layout/discover_documents.tsx +++ b/src/plugins/discover/public/application/main/components/layout/discover_documents.tsx @@ -32,11 +32,10 @@ import { DataDocuments$, DataDocumentsMsg, RecordRawType } from '../../hooks/use import { AppState, GetStateReturn } from '../../services/discover_state'; import { useDataState } from '../../hooks/use_data_state'; import { DocTableInfinite } from '../../../../components/doc_table/doc_table_infinite'; -import { SortPairArr } from '../../../../utils/sorting'; import { DocumentExplorerCallout } from '../document_explorer_callout'; import { DocumentExplorerUpdateCallout } from '../document_explorer_callout/document_explorer_update_callout'; import { DiscoverTourProvider } from '../../../../components/discover_tour'; -import { DataTableRecord } from '../../../../types'; +import { DataTableRecord, SortPairArr } from '../../../../types'; import { getRawRecordType } from '../../utils/get_raw_record_type'; const DocTableInfiniteMemoized = React.memo(DocTableInfinite); diff --git a/src/plugins/discover/public/application/main/hooks/use_discover_state.ts b/src/plugins/discover/public/application/main/hooks/use_discover_state.ts index e2ef6c0c306f7..6bb67e1501254 100644 --- a/src/plugins/discover/public/application/main/hooks/use_discover_state.ts +++ b/src/plugins/discover/public/application/main/hooks/use_discover_state.ts @@ -32,8 +32,7 @@ import { useSearchSession } from './use_search_session'; import { useDataState } from './use_data_state'; import { FetchStatus } from '../../types'; import { getDataViewAppState } from '../utils/get_switch_data_view_app_state'; -import { SortPairArr } from '../../../utils/sorting'; -import { DataTableRecord } from '../../../types'; +import { DataTableRecord, SortPairArr } from '../../../types'; const MAX_NUM_OF_COLUMNS = 50; diff --git a/src/plugins/discover/public/application/main/utils/get_switch_data_view_app_state.ts b/src/plugins/discover/public/application/main/utils/get_switch_data_view_app_state.ts index fe6936412dcfd..3326e493e2ccd 100644 --- a/src/plugins/discover/public/application/main/utils/get_switch_data_view_app_state.ts +++ b/src/plugins/discover/public/application/main/utils/get_switch_data_view_app_state.ts @@ -7,7 +7,8 @@ */ import { isOfAggregateQueryType, Query, AggregateQuery } from '@kbn/es-query'; import type { DataView } from '@kbn/data-views-plugin/public'; -import { getSortArray, SortPairArr } from '../../../utils/sorting'; +import type { SortPairArr } from '../../../types'; +import { getSortArray } from '../../../utils/sorting'; /** * Helper function to remove or adapt the currently selected columns/sort to be valid with the next diff --git a/src/plugins/discover/public/components/discover_grid/discover_grid.tsx b/src/plugins/discover/public/components/discover_grid/discover_grid.tsx index 4b3f38941d3b2..c7437aaae31b1 100644 --- a/src/plugins/discover/public/components/discover_grid/discover_grid.tsx +++ b/src/plugins/discover/public/components/discover_grid/discover_grid.tsx @@ -43,9 +43,8 @@ import { SHOW_MULTIFIELDS, } from '../../../common'; import { DiscoverGridDocumentToolbarBtn } from './discover_grid_document_selection'; -import { SortPairArr } from '../../utils/sorting'; import { getFieldsToShow } from '../../utils/get_fields_to_show'; -import type { DataTableRecord, ValueToStringConverter } from '../../types'; +import type { DataTableRecord, SortPairArr, ValueToStringConverter } from '../../types'; import { useRowHeightsOptions } from '../../hooks/use_row_heights_options'; import { useDiscoverServices } from '../../hooks/use_discover_services'; import { convertValueToString } from '../../utils/convert_value_to_string'; diff --git a/src/plugins/discover/public/embeddable/utils/update_search_source.ts b/src/plugins/discover/public/embeddable/utils/update_search_source.ts index e8d75ebefd42a..f101b94fff858 100644 --- a/src/plugins/discover/public/embeddable/utils/update_search_source.ts +++ b/src/plugins/discover/public/embeddable/utils/update_search_source.ts @@ -6,8 +6,9 @@ * Side Public License, v 1. */ import type { DataView } from '@kbn/data-views-plugin/public'; -import { ISearchSource } from '@kbn/data-plugin/public'; -import { getSortForSearchSource, SortPairArr } from '../../utils/sorting'; +import type { ISearchSource } from '@kbn/data-plugin/public'; +import type { SortPairArr } from '../../types'; +import { getSortForSearchSource } from '../../utils/sorting'; export const updateSearchSource = ( searchSource: ISearchSource, diff --git a/src/plugins/discover/public/utils/sorting/get_sort.ts b/src/plugins/discover/public/utils/sorting/get_sort.ts index 9d8de939fa3e1..598bf18925537 100644 --- a/src/plugins/discover/public/utils/sorting/get_sort.ts +++ b/src/plugins/discover/public/utils/sorting/get_sort.ts @@ -9,11 +9,11 @@ import { isPlainObject } from 'lodash'; import { DataView } from '@kbn/data-views-plugin/public'; import { IUiSettingsClient } from '@kbn/core/public'; +import { SortPairArr } from '../../types'; import { DOC_HIDE_TIME_COLUMN_SETTING, SORT_DEFAULT_ORDER_SETTING } from '../../../common'; import { getDefaultSort } from './get_default_sort'; export type SortPairObj = Record; -export type SortPairArr = [string, string]; export type SortPair = SortPairArr | SortPairObj; export type SortInput = SortPair | SortPair[]; diff --git a/src/plugins/discover/public/utils/sorting/index.ts b/src/plugins/discover/public/utils/sorting/index.ts index d5c07998bf307..1d7f3ce6d671a 100644 --- a/src/plugins/discover/public/utils/sorting/index.ts +++ b/src/plugins/discover/public/utils/sorting/index.ts @@ -8,4 +8,4 @@ export { getSort, getSortArray, getSortForEmbeddable } from './get_sort'; export { getSortForSearchSource } from './get_sort_for_search_source'; export { getDefaultSort } from './get_default_sort'; -export type { SortPairArr, SortPair } from './get_sort'; +export type { SortPair } from './get_sort'; From 615447ca21caea88585a10955066b33e90b47f97 Mon Sep 17 00:00:00 2001 From: Matthias Wilhelm Date: Wed, 3 Aug 2022 16:27:20 +0200 Subject: [PATCH 11/14] add debug log --- test/functional/apps/discover/group2/_data_grid_context.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/functional/apps/discover/group2/_data_grid_context.ts b/test/functional/apps/discover/group2/_data_grid_context.ts index 0a5fd5d4994e4..5d26d0316c14d 100644 --- a/test/functional/apps/discover/group2/_data_grid_context.ts +++ b/test/functional/apps/discover/group2/_data_grid_context.ts @@ -16,6 +16,7 @@ const TEST_FILTER_COLUMN_NAMES = [ ]; export default function ({ getService, getPageObjects }: FtrProviderContext) { + const log = getService('log'); const retry = getService('retry'); const filterBar = getService('filterBar'); const dataGrid = getService('dataGrid'); @@ -112,6 +113,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.header.waitUntilLoadingHasFinished(); await retry.waitFor('document table has a length of 6', async () => { const nrOfDocs = (await dataGrid.getBodyRows()).length; + log.debug('document table length', nrOfDocs); return nrOfDocs === 6; }); }); From c5f674e78a26e6f1a3db234bde3db3c41daa1d5b Mon Sep 17 00:00:00 2001 From: Matthias Wilhelm Date: Thu, 4 Aug 2022 21:12:22 +0200 Subject: [PATCH 12/14] Fix functional test --- .../public/embeddable/saved_search_embeddable.tsx | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx b/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx index b0107101768fe..6cb8ef93d360e 100644 --- a/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx +++ b/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx @@ -290,12 +290,13 @@ export class SavedSearchEmbeddable if (!dataView) { return; } + const sort = this.getSort(this.savedSearch.sort, dataView); const props: SearchProps = { columns: this.savedSearch.columns, dataView, isLoading: false, - sort: this.getSort(this.savedSearch.sort, dataView), + sort, rows: [], searchDescription: this.savedSearch.description, description: this.savedSearch.description, @@ -326,9 +327,9 @@ export class SavedSearchEmbeddable onSetColumns: (columns: string[]) => { this.updateInput({ columns }); }, - onSort: (sort: string[][]) => { + onSort: (nextSort: string[][]) => { const sortOrderArr: SortPairArr[] = []; - sort.forEach((arr) => { + nextSort.forEach((arr) => { sortOrderArr.push(arr as SortPairArr); }); this.updateInput({ sort: sortOrderArr }); @@ -421,7 +422,7 @@ export class SavedSearchEmbeddable ).columns; searchProps.sort = this.getSort( this.input.sort || this.savedSearch.sort, - this.searchProps?.dataView + searchProps?.dataView ); searchProps.sharedItemTitle = this.panelTitle; From 6d1414257708394639c696f091007adc3f4cc640 Mon Sep 17 00:00:00 2001 From: kibanamachine <42973632+kibanamachine@users.noreply.github.com> Date: Mon, 22 Aug 2022 09:47:13 +0000 Subject: [PATCH 13/14] [CI] Auto-commit changed files from 'node scripts/eslint --no-cache --fix' --- src/plugins/discover/public/utils/get_sharing_data.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/discover/public/utils/get_sharing_data.ts b/src/plugins/discover/public/utils/get_sharing_data.ts index 056545714fa64..ace169359e318 100644 --- a/src/plugins/discover/public/utils/get_sharing_data.ts +++ b/src/plugins/discover/public/utils/get_sharing_data.ts @@ -14,8 +14,8 @@ import type { SerializedSearchSourceFields, } from '@kbn/data-plugin/public'; import type { Filter } from '@kbn/es-query'; -import { getSortForSearchSource } from './sorting'; import type { SavedSearch, SortOrder } from '@kbn/saved-search-plugin/public'; +import { getSortForSearchSource } from './sorting'; import { DOC_HIDE_TIME_COLUMN_SETTING, SEARCH_FIELDS_FROM_SOURCE, From 4e8cfb64e21b390bab5c8973e08e04d9fe355b67 Mon Sep 17 00:00:00 2001 From: Matthias Wilhelm Date: Tue, 23 Aug 2022 11:17:20 +0200 Subject: [PATCH 14/14] Migrate type SortPairArr to SortOrder of the saved_search plugin --- .../application/context/context_app_content.tsx | 5 +++-- .../main/components/layout/discover_documents.tsx | 6 +++--- .../application/main/hooks/use_discover_state.ts | 5 +++-- .../main/utils/get_switch_data_view_app_state.ts | 4 ++-- .../application/main/utils/persist_saved_search.ts | 4 +--- .../components/discover_grid/discover_grid.tsx | 5 +++-- .../components/table_header/table_header.test.tsx | 4 ++-- .../components/table_header/table_header.tsx | 6 +++--- .../components/table_header/table_header_column.tsx | 6 +++--- .../components/doc_table/doc_table_wrapper.tsx | 5 +++-- .../public/embeddable/saved_search_embeddable.tsx | 9 +++++---- src/plugins/discover/public/embeddable/types.ts | 4 ++-- .../public/embeddable/utils/update_search_source.ts | 4 ++-- src/plugins/discover/public/types.ts | 2 -- .../public/utils/sorting/get_default_sort.ts | 4 ++-- .../discover/public/utils/sorting/get_sort.ts | 12 ++++++------ .../utils/sorting/get_sort_for_search_source.test.ts | 7 +++---- .../utils/sorting/get_sort_for_search_source.ts | 4 ++-- 18 files changed, 48 insertions(+), 48 deletions(-) diff --git a/src/plugins/discover/public/application/context/context_app_content.tsx b/src/plugins/discover/public/application/context/context_app_content.tsx index 791ba716d378b..7471f15092c3b 100644 --- a/src/plugins/discover/public/application/context/context_app_content.tsx +++ b/src/plugins/discover/public/application/context/context_app_content.tsx @@ -11,6 +11,7 @@ import { FormattedMessage } from '@kbn/i18n-react'; import { EuiHorizontalRule, EuiText } from '@elastic/eui'; import type { DataView } from '@kbn/data-views-plugin/public'; import { SortDirection } from '@kbn/data-plugin/public'; +import type { SortOrder } from '@kbn/saved-search-plugin/public'; import { CONTEXT_STEP_SETTING, DOC_HIDE_TIME_COLUMN_SETTING } from '../../../common'; import { LoadingStatus } from './services/context_query_state'; import { ActionBar } from './components/action_bar/action_bar'; @@ -21,7 +22,7 @@ import { SurrDocType } from './services/context'; import { MAX_CONTEXT_SIZE, MIN_CONTEXT_SIZE } from './services/constants'; import { DocTableContext } from '../../components/doc_table/doc_table_context'; import { useDiscoverServices } from '../../hooks/use_discover_services'; -import type { DataTableRecord, SortPairArr } from '../../types'; +import type { DataTableRecord } from '../../types'; export interface ContextAppContentProps { columns: string[]; @@ -150,7 +151,7 @@ export function ContextAppContent({ expandedDoc={expandedDoc} isLoading={isAnchorLoading} sampleSize={0} - sort={sort as SortPairArr[]} + sort={sort as SortOrder[]} isSortEnabled={false} showTimeCol={showTimeCol} useNewFieldsApi={useNewFieldsApi} diff --git a/src/plugins/discover/public/application/main/components/layout/discover_documents.tsx b/src/plugins/discover/public/application/main/components/layout/discover_documents.tsx index 5a77c6bc2266d..dfff574659744 100644 --- a/src/plugins/discover/public/application/main/components/layout/discover_documents.tsx +++ b/src/plugins/discover/public/application/main/components/layout/discover_documents.tsx @@ -15,7 +15,7 @@ import { } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n-react'; import { DataView } from '@kbn/data-views-plugin/public'; -import { SavedSearch } from '@kbn/saved-search-plugin/public'; +import { SavedSearch, SortOrder } from '@kbn/saved-search-plugin/public'; import { useDiscoverServices } from '../../../../hooks/use_discover_services'; import { DocViewFilterFn } from '../../../../services/doc_views/doc_views_types'; import { DiscoverGrid } from '../../../../components/discover_grid/discover_grid'; @@ -35,7 +35,7 @@ import { DocTableInfinite } from '../../../../components/doc_table/doc_table_inf import { DocumentExplorerCallout } from '../document_explorer_callout'; import { DocumentExplorerUpdateCallout } from '../document_explorer_callout/document_explorer_update_callout'; import { DiscoverTourProvider } from '../../../../components/discover_tour'; -import { DataTableRecord, SortPairArr } from '../../../../types'; +import { DataTableRecord } from '../../../../types'; import { getRawRecordType } from '../../utils/get_raw_record_type'; const DocTableInfiniteMemoized = React.memo(DocTableInfinite); @@ -194,7 +194,7 @@ function DiscoverDocumentsComponent({ dataView={dataView} isLoading={isLoading} rows={rows} - sort={(state.sort as SortPairArr[]) || []} + sort={(state.sort as SortOrder[]) || []} sampleSize={sampleSize} searchDescription={savedSearch.description} searchTitle={savedSearch.title} diff --git a/src/plugins/discover/public/application/main/hooks/use_discover_state.ts b/src/plugins/discover/public/application/main/hooks/use_discover_state.ts index bf05d456ac7be..4a3edee309259 100644 --- a/src/plugins/discover/public/application/main/hooks/use_discover_state.ts +++ b/src/plugins/discover/public/application/main/hooks/use_discover_state.ts @@ -17,6 +17,7 @@ import { Query, } from '@kbn/es-query'; import { SavedSearch, getSavedSearch } from '@kbn/saved-search-plugin/public'; +import type { SortOrder } from '@kbn/saved-search-plugin/public'; import { getState } from '../services/discover_state'; import { getStateDefaults } from '../utils/get_state_defaults'; import { DiscoverServices } from '../../../build_services'; @@ -32,7 +33,7 @@ import { useSearchSession } from './use_search_session'; import { useDataState } from './use_data_state'; import { FetchStatus } from '../../types'; import { getDataViewAppState } from '../utils/get_switch_data_view_app_state'; -import { DataTableRecord, SortPairArr } from '../../../types'; +import { DataTableRecord } from '../../../types'; const MAX_NUM_OF_COLUMNS = 50; @@ -209,7 +210,7 @@ export function useDiscoverState({ dataView, nextDataView, state.columns || [], - (state.sort || []) as SortPairArr[], + (state.sort || []) as SortOrder[], config.get(MODIFY_COLUMNS_ON_SWITCH), config.get(SORT_DEFAULT_ORDER_SETTING), state.query diff --git a/src/plugins/discover/public/application/main/utils/get_switch_data_view_app_state.ts b/src/plugins/discover/public/application/main/utils/get_switch_data_view_app_state.ts index 3326e493e2ccd..064fe36d974ec 100644 --- a/src/plugins/discover/public/application/main/utils/get_switch_data_view_app_state.ts +++ b/src/plugins/discover/public/application/main/utils/get_switch_data_view_app_state.ts @@ -7,7 +7,7 @@ */ import { isOfAggregateQueryType, Query, AggregateQuery } from '@kbn/es-query'; import type { DataView } from '@kbn/data-views-plugin/public'; -import type { SortPairArr } from '../../../types'; +import type { SortOrder } from '@kbn/saved-search-plugin/public'; import { getSortArray } from '../../../utils/sorting'; /** @@ -18,7 +18,7 @@ export function getDataViewAppState( currentDataView: DataView, nextDataView: DataView, currentColumns: string[], - currentSort: SortPairArr[], + currentSort: SortOrder[], modifyColumns: boolean = true, sortDirection: string = 'desc', query?: Query | AggregateQuery diff --git a/src/plugins/discover/public/application/main/utils/persist_saved_search.ts b/src/plugins/discover/public/application/main/utils/persist_saved_search.ts index 691a8a6604194..8a163751ab95e 100644 --- a/src/plugins/discover/public/application/main/utils/persist_saved_search.ts +++ b/src/plugins/discover/public/application/main/utils/persist_saved_search.ts @@ -8,9 +8,7 @@ import { isOfAggregateQueryType } from '@kbn/es-query'; import { DataView } from '@kbn/data-views-plugin/public'; import { SavedObjectSaveOpts } from '@kbn/saved-objects-plugin/public'; -import { SavedSearch } from '@kbn/saved-search-plugin/public'; -import type { SortOrder } from '@kbn/saved-search-plugin/public'; -import { saveSavedSearch } from '@kbn/saved-search-plugin/public'; +import { SavedSearch, SortOrder, saveSavedSearch } from '@kbn/saved-search-plugin/public'; import { updateSearchSource } from './update_search_source'; import { AppState } from '../services/discover_state'; import { DiscoverServices } from '../../../build_services'; diff --git a/src/plugins/discover/public/components/discover_grid/discover_grid.tsx b/src/plugins/discover/public/components/discover_grid/discover_grid.tsx index c7437aaae31b1..1987542931676 100644 --- a/src/plugins/discover/public/components/discover_grid/discover_grid.tsx +++ b/src/plugins/discover/public/components/discover_grid/discover_grid.tsx @@ -23,6 +23,7 @@ import { EuiLink, } from '@elastic/eui'; import type { DataView } from '@kbn/data-views-plugin/public'; +import type { SortOrder } from '@kbn/saved-search-plugin/public'; import { DocViewFilterFn } from '../../services/doc_views/doc_views_types'; import { getSchemaDetectors } from './discover_grid_schema'; import { DiscoverGridFlyout } from './discover_grid_flyout'; @@ -44,7 +45,7 @@ import { } from '../../../common'; import { DiscoverGridDocumentToolbarBtn } from './discover_grid_document_selection'; import { getFieldsToShow } from '../../utils/get_fields_to_show'; -import type { DataTableRecord, SortPairArr, ValueToStringConverter } from '../../types'; +import type { DataTableRecord, ValueToStringConverter } from '../../types'; import { useRowHeightsOptions } from '../../hooks/use_row_heights_options'; import { useDiscoverServices } from '../../hooks/use_discover_services'; import { convertValueToString } from '../../utils/convert_value_to_string'; @@ -140,7 +141,7 @@ export interface DiscoverGridProps { /** * Current sort setting */ - sort: SortPairArr[]; + sort: SortOrder[]; /** * How the data is fetched */ diff --git a/src/plugins/discover/public/components/doc_table/components/table_header/table_header.test.tsx b/src/plugins/discover/public/components/doc_table/components/table_header/table_header.test.tsx index d1cfa89189392..78d15870e6353 100644 --- a/src/plugins/discover/public/components/doc_table/components/table_header/table_header.test.tsx +++ b/src/plugins/discover/public/components/doc_table/components/table_header/table_header.test.tsx @@ -9,12 +9,12 @@ import React from 'react'; import { mountWithIntl } from '@kbn/test-jest-helpers'; import type { DataView, DataViewField } from '@kbn/data-views-plugin/public'; +import type { SortOrder } from '@kbn/saved-search-plugin/public'; import { TableHeader } from './table_header'; import { findTestSubject } from '@elastic/eui/lib/test'; import { KibanaContextProvider } from '@kbn/kibana-react-plugin/public'; import { DOC_HIDE_TIME_COLUMN_SETTING } from '../../../../../common'; import { FORMATS_UI_SETTINGS } from '@kbn/field-formats-plugin/common'; -import { SortPairArr } from '../../../../types'; const defaultUiSettings = { get: (key: string) => { @@ -63,7 +63,7 @@ function getMockProps(props = {}) { hideTimeColumn: false, columns: ['first', 'middle', 'last'], defaultSortOrder: 'desc', - sortOrder: [['time', 'asc']] as SortPairArr[], + sortOrder: [['time', 'asc']] as SortOrder[], isShortDots: true, onRemoveColumn: jest.fn(), onChangeSortOrder: jest.fn(), diff --git a/src/plugins/discover/public/components/doc_table/components/table_header/table_header.tsx b/src/plugins/discover/public/components/doc_table/components/table_header/table_header.tsx index e5444282aaac7..ef5ca408d2bd8 100644 --- a/src/plugins/discover/public/components/doc_table/components/table_header/table_header.tsx +++ b/src/plugins/discover/public/components/doc_table/components/table_header/table_header.tsx @@ -9,7 +9,7 @@ import React, { useMemo } from 'react'; import type { DataView } from '@kbn/data-views-plugin/public'; import { FORMATS_UI_SETTINGS } from '@kbn/field-formats-plugin/common'; -import { SortPairArr } from '../../../../types'; +import type { SortOrder } from '@kbn/saved-search-plugin/public'; import { TableHeaderColumn } from './table_header_column'; import { getDisplayedColumns } from './helpers'; import { getDefaultSort } from '../../../../utils/sorting'; @@ -19,10 +19,10 @@ import { DOC_HIDE_TIME_COLUMN_SETTING, SORT_DEFAULT_ORDER_SETTING } from '../../ interface Props { columns: string[]; dataView: DataView; - onChangeSortOrder?: (sortOrder: SortPairArr[]) => void; + onChangeSortOrder?: (sortOrder: SortOrder[]) => void; onMoveColumn?: (name: string, index: number) => void; onRemoveColumn?: (name: string) => void; - sortOrder: SortPairArr[]; + sortOrder: SortOrder[]; } export function TableHeader({ diff --git a/src/plugins/discover/public/components/doc_table/components/table_header/table_header_column.tsx b/src/plugins/discover/public/components/doc_table/components/table_header/table_header_column.tsx index 8fa2a0e6e174b..f7322b778a558 100644 --- a/src/plugins/discover/public/components/doc_table/components/table_header/table_header_column.tsx +++ b/src/plugins/discover/public/components/doc_table/components/table_header/table_header_column.tsx @@ -9,7 +9,7 @@ import React from 'react'; import { i18n } from '@kbn/i18n'; import { EuiButtonIcon, EuiToolTip, EuiIconTip } from '@elastic/eui'; -import { SortPairArr } from '../../../../types'; +import type { SortOrder } from '@kbn/saved-search-plugin/public'; import { DocViewTableScoreSortWarning } from './score_sort_warning'; interface Props { @@ -21,10 +21,10 @@ interface Props { isTimeColumn: boolean; customLabel?: string; name: string; - onChangeSortOrder?: (sortOrder: SortPairArr[]) => void; + onChangeSortOrder?: (sortOrder: SortOrder[]) => void; onMoveColumn?: (name: string, idx: number) => void; onRemoveColumn?: (name: string) => void; - sortOrder: SortPairArr[]; + sortOrder: SortOrder[]; } interface IconProps { diff --git a/src/plugins/discover/public/components/doc_table/doc_table_wrapper.tsx b/src/plugins/discover/public/components/doc_table/doc_table_wrapper.tsx index 33ecbf673ecf9..23f8b3e2e888b 100644 --- a/src/plugins/discover/public/components/doc_table/doc_table_wrapper.tsx +++ b/src/plugins/discover/public/components/doc_table/doc_table_wrapper.tsx @@ -9,6 +9,7 @@ import React, { forwardRef, useCallback, useMemo } from 'react'; import { EuiIcon, EuiSpacer, EuiText } from '@elastic/eui'; import type { DataView, DataViewField } from '@kbn/data-views-plugin/public'; +import type { SortOrder } from '@kbn/saved-search-plugin/public'; import { FormattedMessage } from '@kbn/i18n-react'; import { TableHeader } from './components/table_header/table_header'; import { SHOW_MULTIFIELDS } from '../../../common'; @@ -16,7 +17,7 @@ import { TableRow } from './components/table_row'; import { DocViewFilterFn } from '../../services/doc_views/doc_views_types'; import { getFieldsToShow } from '../../utils/get_fields_to_show'; import { useDiscoverServices } from '../../hooks/use_discover_services'; -import type { DataTableRecord, SortPairArr } from '../../types'; +import type { DataTableRecord } from '../../types'; export interface DocTableProps { /** @@ -148,7 +149,7 @@ export const DocTableWrapper = forwardRef( onChangeSortOrder={onSort} onMoveColumn={onMoveColumn} onRemoveColumn={onRemoveColumn} - sortOrder={sort as SortPairArr[]} + sortOrder={sort as SortOrder[]} /> ), [columns, dataView, onMoveColumn, onRemoveColumn, onSort, sort] diff --git a/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx b/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx index 78c4d1e9b2ea4..fc9afe946fae0 100644 --- a/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx +++ b/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx @@ -22,6 +22,7 @@ import { I18nProvider } from '@kbn/i18n-react'; import type { KibanaExecutionContext } from '@kbn/core/public'; import { Container, Embeddable, FilterableEmbeddable } from '@kbn/embeddable-plugin/public'; import { Adapters, RequestAdapter } from '@kbn/inspector-plugin/common'; +import type { SortOrder } from '@kbn/saved-search-plugin/public'; import { APPLY_FILTER_TRIGGER, FilterManager, @@ -36,7 +37,7 @@ import { SavedSearch } from '@kbn/saved-search-plugin/public'; import { getSortForEmbeddable, SortPair } from '../utils/sorting'; import { RecordRawType } from '../application/main/hooks/use_saved_search'; import { buildDataTableRecord } from '../utils/build_data_record'; -import { DataTableRecord, SortPairArr, EsHitRecord } from '../types'; +import { DataTableRecord, EsHitRecord } from '../types'; import { ISearchEmbeddable, SearchInput, SearchOutput } from './types'; import { SEARCH_EMBEDDABLE_TYPE } from './constants'; import { DiscoverServices } from '../build_services'; @@ -102,7 +103,7 @@ export class SavedSearchEmbeddable private prevTimeRange?: TimeRange; private prevFilters?: Filter[]; private prevQuery?: Query; - private prevSort?: SortPairArr[]; + private prevSort?: SortOrder[]; private prevSearchSessionId?: string; private searchProps?: SearchProps; @@ -335,9 +336,9 @@ export class SavedSearchEmbeddable this.updateInput({ columns }); }, onSort: (nextSort: string[][]) => { - const sortOrderArr: SortPairArr[] = []; + const sortOrderArr: SortOrder[] = []; nextSort.forEach((arr) => { - sortOrderArr.push(arr as SortPairArr); + sortOrderArr.push(arr as SortOrder); }); this.updateInput({ sort: sortOrderArr }); }, diff --git a/src/plugins/discover/public/embeddable/types.ts b/src/plugins/discover/public/embeddable/types.ts index 603f87000a5a3..6038aa5a0625c 100644 --- a/src/plugins/discover/public/embeddable/types.ts +++ b/src/plugins/discover/public/embeddable/types.ts @@ -15,7 +15,7 @@ import { import type { Filter, TimeRange, Query } from '@kbn/es-query'; import { DataView } from '@kbn/data-views-plugin/public'; import { SavedSearch } from '@kbn/saved-search-plugin/public'; -import { SortPairArr } from '../types'; +import type { SortOrder } from '@kbn/saved-search-plugin/public'; export interface SearchInput extends EmbeddableInput { timeRange: TimeRange; @@ -23,7 +23,7 @@ export interface SearchInput extends EmbeddableInput { filters?: Filter[]; hidePanelTitles?: boolean; columns?: string[]; - sort?: SortPairArr[]; + sort?: SortOrder[]; rowHeight?: number; rowsPerPage?: number; } diff --git a/src/plugins/discover/public/embeddable/utils/update_search_source.ts b/src/plugins/discover/public/embeddable/utils/update_search_source.ts index f101b94fff858..87ee137aed796 100644 --- a/src/plugins/discover/public/embeddable/utils/update_search_source.ts +++ b/src/plugins/discover/public/embeddable/utils/update_search_source.ts @@ -7,13 +7,13 @@ */ import type { DataView } from '@kbn/data-views-plugin/public'; import type { ISearchSource } from '@kbn/data-plugin/public'; -import type { SortPairArr } from '../../types'; +import type { SortOrder } from '@kbn/saved-search-plugin/public'; import { getSortForSearchSource } from '../../utils/sorting'; export const updateSearchSource = ( searchSource: ISearchSource, dataView: DataView | undefined, - sort: (SortPairArr[] & string[][]) | undefined, + sort: (SortOrder[] & string[][]) | undefined, useNewFieldsApi: boolean, defaults: { sampleSize: number; diff --git a/src/plugins/discover/public/types.ts b/src/plugins/discover/public/types.ts index 9ef7b74a2b14c..f96edccb5f9bf 100644 --- a/src/plugins/discover/public/types.ts +++ b/src/plugins/discover/public/types.ts @@ -38,5 +38,3 @@ export interface DataTableRecord { */ isAnchor?: boolean; } - -export type SortPairArr = [string, string]; diff --git a/src/plugins/discover/public/utils/sorting/get_default_sort.ts b/src/plugins/discover/public/utils/sorting/get_default_sort.ts index 10977f0db1484..d5b72c4b13949 100644 --- a/src/plugins/discover/public/utils/sorting/get_default_sort.ts +++ b/src/plugins/discover/public/utils/sorting/get_default_sort.ts @@ -7,7 +7,7 @@ */ import type { DataView } from '@kbn/data-views-plugin/public'; -import { SortPairArr } from '../../types'; +import type { SortOrder } from '@kbn/saved-search-plugin/public'; import { isSortable } from './get_sort'; /** @@ -18,7 +18,7 @@ export function getDefaultSort( dataView: DataView | undefined, defaultSortOrder: string = 'desc', hidingTimeColumn: boolean = false -): SortPairArr[] { +): SortOrder[] { if ( dataView?.timeFieldName && isSortable(dataView.timeFieldName, dataView) && diff --git a/src/plugins/discover/public/utils/sorting/get_sort.ts b/src/plugins/discover/public/utils/sorting/get_sort.ts index 598bf18925537..59d414d8e1eea 100644 --- a/src/plugins/discover/public/utils/sorting/get_sort.ts +++ b/src/plugins/discover/public/utils/sorting/get_sort.ts @@ -9,12 +9,12 @@ import { isPlainObject } from 'lodash'; import { DataView } from '@kbn/data-views-plugin/public'; import { IUiSettingsClient } from '@kbn/core/public'; -import { SortPairArr } from '../../types'; +import type { SortOrder } from '@kbn/saved-search-plugin/public'; import { DOC_HIDE_TIME_COLUMN_SETTING, SORT_DEFAULT_ORDER_SETTING } from '../../../common'; import { getDefaultSort } from './get_default_sort'; export type SortPairObj = Record; -export type SortPair = SortPairArr | SortPairObj; +export type SortPair = SortOrder | SortPairObj; export type SortInput = SortPair | SortPair[]; export function isSortable(fieldName: string, dataView: DataView): boolean { @@ -28,7 +28,7 @@ function createSortObject(sortPair: SortInput, dataView: DataView): SortPairObj sortPair.length === 2 && isSortable(String(sortPair[0]), dataView) ) { - const [field, direction] = sortPair as SortPairArr; + const [field, direction] = sortPair as SortOrder; return { [field]: direction }; } else if (isPlainObject(sortPair) && isSortable(Object.keys(sortPair)[0], dataView)) { return sortPair as SortPairObj; @@ -65,8 +65,8 @@ export function getSort(sort: SortPair[] | SortPair, dataView: DataView): SortPa * compared to getSort it doesn't return an array of objects, it returns an array of arrays * [[fieldToSort: directionToSort]] */ -export function getSortArray(sort: SortInput, dataView: DataView): SortPairArr[] { - return getSort(sort, dataView).reduce((acc: SortPairArr[], sortPair) => { +export function getSortArray(sort: SortInput, dataView: DataView): SortOrder[] { + return getSort(sort, dataView).reduce((acc: SortOrder[], sortPair) => { const entries = Object.entries(sortPair); if (entries && entries[0]) { acc.push(entries[0]); @@ -82,7 +82,7 @@ export function getSortForEmbeddable( sort?: SortInput, dataView?: DataView, uiSettings?: IUiSettingsClient -): SortPairArr[] { +): SortOrder[] { if (!sort || !sort.length || !dataView) { if (!uiSettings) { return []; diff --git a/src/plugins/discover/public/utils/sorting/get_sort_for_search_source.test.ts b/src/plugins/discover/public/utils/sorting/get_sort_for_search_source.test.ts index 7808e1958407b..dd54b5d2a70a2 100644 --- a/src/plugins/discover/public/utils/sorting/get_sort_for_search_source.test.ts +++ b/src/plugins/discover/public/utils/sorting/get_sort_for_search_source.test.ts @@ -5,10 +5,9 @@ * in compliance with, at your election, the Elastic License 2.0 or the Server * Side Public License, v 1. */ - +import type { SortOrder } from '@kbn/saved-search-plugin/public'; import { getSortForSearchSource } from './get_sort_for_search_source'; import { stubDataView, stubDataViewWithoutTimeField } from '@kbn/data-plugin/common/stubs'; -import { SortPairArr } from '../../types'; describe('getSortForSearchSource function', function () { test('should be a function', function () { @@ -16,7 +15,7 @@ describe('getSortForSearchSource function', function () { }); test('should return an object to use for searchSource when columns are given', function () { - const cols = [['bytes', 'desc']] as SortPairArr[]; + const cols = [['bytes', 'desc']] as SortOrder[]; expect(getSortForSearchSource(cols, stubDataView)).toEqual([{ bytes: 'desc' }]); expect(getSortForSearchSource(cols, stubDataView, 'asc')).toEqual([{ bytes: 'desc' }]); @@ -27,7 +26,7 @@ describe('getSortForSearchSource function', function () { }); test('should return an object to use for searchSource when no columns are given', function () { - const cols = [] as SortPairArr[]; + const cols = [] as SortOrder[]; expect(getSortForSearchSource(cols, stubDataView)).toEqual([{ _doc: 'desc' }]); expect(getSortForSearchSource(cols, stubDataView, 'asc')).toEqual([{ _doc: 'asc' }]); diff --git a/src/plugins/discover/public/utils/sorting/get_sort_for_search_source.ts b/src/plugins/discover/public/utils/sorting/get_sort_for_search_source.ts index 80a7616a29c2b..bcf0ccf4d0e30 100644 --- a/src/plugins/discover/public/utils/sorting/get_sort_for_search_source.ts +++ b/src/plugins/discover/public/utils/sorting/get_sort_for_search_source.ts @@ -8,7 +8,7 @@ import type { DataView } from '@kbn/data-views-plugin/public'; import type { EsQuerySortValue } from '@kbn/data-plugin/public'; -import { SortPairArr } from '../../types'; +import type { SortOrder } from '@kbn/saved-search-plugin/public'; import { getSort } from './get_sort'; /** @@ -19,7 +19,7 @@ import { getSort } from './get_sort'; * when there are indices with date and indices with date_nanos field */ export function getSortForSearchSource( - sort?: SortPairArr[], + sort?: SortOrder[], dataView?: DataView, defaultDirection: string = 'desc' ): EsQuerySortValue[] {