diff --git a/src/plugins/data/common/search/expressions/utils/index.ts b/src/plugins/data/common/search/expressions/utils/index.ts index 75c1809770c787d..0fd51f3e158a627 100644 --- a/src/plugins/data/common/search/expressions/utils/index.ts +++ b/src/plugins/data/common/search/expressions/utils/index.ts @@ -18,3 +18,4 @@ */ export * from './courier_inspector_stats'; +export * from './serialize_agg_config'; diff --git a/src/plugins/data/common/search/expressions/utils/serialize_agg_config.ts b/src/plugins/data/common/search/expressions/utils/serialize_agg_config.ts new file mode 100644 index 000000000000000..47afade2b4ca7a9 --- /dev/null +++ b/src/plugins/data/common/search/expressions/utils/serialize_agg_config.ts @@ -0,0 +1,30 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { KibanaDatatableColumnMeta } from '../../../../../expressions/common'; +import { IAggConfig } from '../../../index'; + +/** @internal */ +export const serializeAggConfig = (aggConfig: IAggConfig): KibanaDatatableColumnMeta => { + return { + type: aggConfig.type.name, + indexPatternId: aggConfig.getIndexPattern().id, + aggConfigParams: aggConfig.serialize().params, + }; +}; diff --git a/src/plugins/data/common/search/tabify/response_writer.ts b/src/plugins/data/common/search/tabify/response_writer.ts index da9b59cc927910c..2216ac78cbdbfd2 100644 --- a/src/plugins/data/common/search/tabify/response_writer.ts +++ b/src/plugins/data/common/search/tabify/response_writer.ts @@ -21,7 +21,12 @@ import { isEmpty } from 'lodash'; import { IAggConfigs } from '../aggs'; import { tabifyGetColumns } from './get_columns'; -import { TabbedResponseWriterOptions, TabbedAggColumn, TabbedAggRow, TabbedTable } from './types'; +import { TabbedResponseWriterOptions, TabbedAggColumn, TabbedAggRow } from './types'; +import { serializeAggConfig } from '../expressions/utils'; +import { + KibanaDatatable, + KibanaDatatableColumn, +} from '../../../../expressions/common/expression_types/specs'; interface BufferColumn { id: string; @@ -76,9 +81,18 @@ export class TabbedAggResponseWriter { } } - response(): TabbedTable { + response(): KibanaDatatable { return { - columns: this.columns, + type: 'kibana_datatable', + columns: this.columns.map((column) => { + const cleanedColumn: KibanaDatatableColumn = { + id: column.id, + name: column.name, + meta: serializeAggConfig(column.aggConfig), + formatHint: column.aggConfig.toSerializedFieldFormat(), + }; + return cleanedColumn; + }), rows: this.rows, }; } diff --git a/src/plugins/data/common/search/tabify/tabify_docs.ts b/src/plugins/data/common/search/tabify/tabify_docs.ts index 8b779fe321fb898..f622bbabb43e653 100644 --- a/src/plugins/data/common/search/tabify/tabify_docs.ts +++ b/src/plugins/data/common/search/tabify/tabify_docs.ts @@ -70,7 +70,6 @@ export function flattenHit( } export interface TabifyDocsOptions { - formatted: boolean; deep: boolean; source: boolean; } diff --git a/src/plugins/data/public/search/expressions/esaggs.ts b/src/plugins/data/public/search/expressions/esaggs.ts index 1021ef0f91d52c6..e15deaa9a6f02fe 100644 --- a/src/plugins/data/public/search/expressions/esaggs.ts +++ b/src/plugins/data/public/search/expressions/esaggs.ts @@ -19,7 +19,6 @@ import { get, hasIn } from 'lodash'; import { i18n } from '@kbn/i18n'; -import { KibanaDatatable, KibanaDatatableColumn } from 'src/plugins/expressions/public'; import { PersistedState } from '../../../../../plugins/visualizations/public'; import { Adapters } from '../../../../../plugins/inspector/public'; @@ -49,7 +48,6 @@ import { getSearchService, } from '../../services'; import { buildTabularInspectorData } from './build_tabular_inspector_data'; -import { serializeAggConfig } from './utils'; export interface RequestHandlerParams { searchSource: ISearchSource; @@ -279,22 +277,6 @@ export const esaggs = (): EsaggsExpressionFunctionDefinition => ({ abortSignal: (abortSignal as unknown) as AbortSignal, }); - const table: KibanaDatatable = { - type: 'kibana_datatable', - rows: response.rows, - columns: response.columns.map((column: any) => { - const cleanedColumn: KibanaDatatableColumn = { - id: column.id, - name: column.name, - meta: serializeAggConfig(column.aggConfig), - }; - if (args.includeFormatHints) { - cleanedColumn.formatHint = column.aggConfig.toSerializedFieldFormat(); - } - return cleanedColumn; - }), - }; - - return table; + return response; }, }); diff --git a/src/plugins/data/public/search/expressions/utils/serialize_agg_config.ts b/src/plugins/data/public/search/expressions/utils/deserialize_agg_config.ts similarity index 77% rename from src/plugins/data/public/search/expressions/utils/serialize_agg_config.ts rename to src/plugins/data/public/search/expressions/utils/deserialize_agg_config.ts index 6ba323b65783fad..efa12e51239a9a2 100644 --- a/src/plugins/data/public/search/expressions/utils/serialize_agg_config.ts +++ b/src/plugins/data/public/search/expressions/utils/deserialize_agg_config.ts @@ -17,20 +17,9 @@ * under the License. */ -import { KibanaDatatableColumnMeta } from '../../../../../../plugins/expressions/public'; -import { IAggConfig } from '../../../../common'; import { IndexPattern } from '../../../index_patterns'; import { getSearchService } from '../../../../public/services'; -/** @internal */ -export const serializeAggConfig = (aggConfig: IAggConfig): KibanaDatatableColumnMeta => { - return { - type: aggConfig.type.name, - indexPatternId: aggConfig.getIndexPattern().id, - aggConfigParams: aggConfig.serialize().params, - }; -}; - interface DeserializeAggConfigParams { type: string; aggConfigParams: Record; diff --git a/src/plugins/data/public/search/expressions/utils/index.ts b/src/plugins/data/public/search/expressions/utils/index.ts index 094536fc18437b5..2919e824c4dfd7f 100644 --- a/src/plugins/data/public/search/expressions/utils/index.ts +++ b/src/plugins/data/public/search/expressions/utils/index.ts @@ -17,4 +17,4 @@ * under the License. */ -export * from './serialize_agg_config'; +export * from './deserialize_agg_config';