Skip to content

Commit 69aed37

Browse files
[TSVB] Enable dual mode, support index patterns and strings (#92395)
Part of #91367 Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
1 parent adf9374 commit 69aed37

9 files changed

Lines changed: 59 additions & 67 deletions

File tree

src/plugins/vis_type_timeseries/server/lib/get_fields.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@ export async function getFields(
4747
),
4848
},
4949
getUiSettingsService: () => requestContext.core.uiSettings.client,
50-
getSavedObjectsClient: () => requestContext.core.savedObjects.client,
5150
getEsShardTimeout: async () => {
5251
return await framework.globalConfig$
5352
.pipe(

src/plugins/vis_type_timeseries/server/lib/get_vis_data.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,6 @@ export function getVisData(
5252
pre: {},
5353
payload: request.body,
5454
getUiSettingsService: () => requestContext.core.uiSettings.client,
55-
getSavedObjectsClient: () => requestContext.core.savedObjects.client,
5655
getEsShardTimeout: async () => {
5756
return await framework.globalConfig$
5857
.pipe(
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
/*
2+
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3+
* or more contributor license agreements. Licensed under the Elastic License
4+
* 2.0 and the Server Side Public License, v 1; you may not use this file except
5+
* in compliance with, at your election, the Elastic License 2.0 or the Server
6+
* Side Public License, v 1.
7+
*/
8+
9+
import { IndexPatternsService, IndexPattern } from '../../../../../data/server';
10+
11+
interface IndexPatternObjectDependencies {
12+
indexPatternsService: IndexPatternsService;
13+
}
14+
export async function getIndexPatternObject(
15+
indexPatternString: string,
16+
{ indexPatternsService }: IndexPatternObjectDependencies
17+
) {
18+
let indexPatternObject: IndexPattern | undefined | null;
19+
20+
if (!indexPatternString) {
21+
indexPatternObject = await indexPatternsService.getDefault();
22+
} else {
23+
indexPatternObject = (await indexPatternsService.find(indexPatternString)).find(
24+
(index) => index.title === indexPatternString
25+
);
26+
}
27+
28+
return {
29+
indexPatternObject,
30+
indexPatternString: indexPatternObject?.title || indexPatternString || '',
31+
};
32+
}

src/plugins/vis_type_timeseries/server/lib/search_strategies/strategies/abstract_search_strategy.test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ describe('AbstractSearchStrategy', () => {
3636
getIndexPatternsService: jest.fn(() =>
3737
Promise.resolve({
3838
find: jest.fn(() => []),
39+
getDefault: jest.fn(() => {}),
3940
})
4041
),
4142
} as unknown) as ReqFacade<VisPayload>;

src/plugins/vis_type_timeseries/server/lib/search_strategies/strategies/abstract_search_strategy.ts

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,15 @@
66
* Side Public License, v 1.
77
*/
88

9-
import type { FakeRequest, IUiSettingsClient, SavedObjectsClientContract } from 'kibana/server';
9+
import type { FakeRequest, IUiSettingsClient } from 'kibana/server';
1010

1111
import { indexPatterns, IndexPatternsFetcher } from '../../../../../data/server';
1212

1313
import type { Framework } from '../../../plugin';
1414
import type { FieldSpec, IndexPatternsService } from '../../../../../data/common';
1515
import type { VisPayload, SanitizedFieldType } from '../../../../common/types';
1616
import type { VisTypeTimeseriesRequestHandlerContext } from '../../../types';
17+
import { getIndexPatternObject } from '../lib/get_index_pattern';
1718

1819
/**
1920
* ReqFacade is a regular KibanaRequest object extended with additional service
@@ -29,7 +30,6 @@ export interface ReqFacade<T = unknown> extends FakeRequest {
2930
indexPatternsFetcher?: IndexPatternsFetcher;
3031
};
3132
getUiSettingsService: () => IUiSettingsClient;
32-
getSavedObjectsClient: () => SavedObjectsClientContract;
3333
getEsShardTimeout: () => Promise<number>;
3434
getIndexPatternsService: () => Promise<IndexPatternsService>;
3535
}
@@ -89,16 +89,14 @@ export abstract class AbstractSearchStrategy {
8989
rollupIndex: string;
9090
}>
9191
) {
92-
const { indexPatternsFetcher } = req.pre;
93-
const indexPatternsService = await req.getIndexPatternsService();
94-
const kibanaIndexPattern = (await indexPatternsService.find(indexPattern)).find(
95-
(index) => index.title === indexPattern
96-
);
92+
const { indexPatternObject } = await getIndexPatternObject(indexPattern, {
93+
indexPatternsService: await req.getIndexPatternsService(),
94+
});
9795

9896
return toSanitizedFieldType(
99-
kibanaIndexPattern
100-
? kibanaIndexPattern.getNonScriptedFields()
101-
: await indexPatternsFetcher!.getFieldsForWildcard({
97+
indexPatternObject
98+
? indexPatternObject.getNonScriptedFields()
99+
: await req.pre.indexPatternsFetcher!.getFieldsForWildcard({
102100
pattern: indexPattern,
103101
fieldCapsOptions: { allow_no_indices: true },
104102
metaFields: [],

src/plugins/vis_type_timeseries/server/lib/vis_data/annotations/get_request_params.js

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
import { buildAnnotationRequest } from './build_request_body';
1010
import { getEsShardTimeout } from '../helpers/get_es_shard_timeout';
11-
import { getIndexPatternObject } from '../helpers/get_index_pattern';
11+
import { getIndexPatternObject } from '../../search_strategies/lib/get_index_pattern';
1212

1313
export async function getAnnotationRequestParams(
1414
req,
@@ -19,8 +19,13 @@ export async function getAnnotationRequestParams(
1919
) {
2020
const uiSettings = req.getUiSettingsService();
2121
const esShardTimeout = await getEsShardTimeout(req);
22-
const indexPattern = annotation.index_pattern;
23-
const { indexPatternObject, indexPatternString } = await getIndexPatternObject(req, indexPattern);
22+
const { indexPatternObject, indexPatternString } = await getIndexPatternObject(
23+
annotation.index_pattern,
24+
{
25+
indexPatternsService: await req.getIndexPatternsService(),
26+
}
27+
);
28+
2429
const request = await buildAnnotationRequest(
2530
req,
2631
panel,

src/plugins/vis_type_timeseries/server/lib/vis_data/get_table_data.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import { handleErrorResponse } from './handle_error_response';
1111
import { get } from 'lodash';
1212
import { processBucket } from './table/process_bucket';
1313
import { getEsQueryConfig } from './helpers/get_es_query_uisettings';
14-
import { getIndexPatternObject } from './helpers/get_index_pattern';
14+
import { getIndexPatternObject } from '../search_strategies/lib/get_index_pattern';
1515
import { createFieldsFetcher } from './helpers/fields_fetcher';
1616
import { extractFieldLabel } from '../../../common/calculate_label';
1717

@@ -23,7 +23,10 @@ export async function getTableData(req, panel) {
2323
capabilities,
2424
} = await req.framework.searchStrategyRegistry.getViableStrategy(req, panelIndexPattern);
2525
const esQueryConfig = await getEsQueryConfig(req);
26-
const { indexPatternObject } = await getIndexPatternObject(req, panelIndexPattern);
26+
const { indexPatternObject } = await getIndexPatternObject(panelIndexPattern, {
27+
indexPatternsService: await req.getIndexPatternsService(),
28+
});
29+
2730
const extractFields = createFieldsFetcher(req, searchStrategy, capabilities);
2831

2932
const calculatePivotLabel = async () => {

src/plugins/vis_type_timeseries/server/lib/vis_data/helpers/get_index_pattern.js

Lines changed: 0 additions & 48 deletions
This file was deleted.

src/plugins/vis_type_timeseries/server/lib/vis_data/series/get_request_params.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,16 @@
88

99
import { buildRequestBody } from './build_request_body';
1010
import { getEsShardTimeout } from '../helpers/get_es_shard_timeout';
11-
import { getIndexPatternObject } from '../helpers/get_index_pattern';
11+
import { getIndexPatternObject } from '../../../lib/search_strategies/lib/get_index_pattern';
1212

1313
export async function getSeriesRequestParams(req, panel, series, esQueryConfig, capabilities) {
1414
const uiSettings = req.getUiSettingsService();
1515
const indexPattern =
1616
(series.override_index_pattern && series.series_index_pattern) || panel.index_pattern;
17-
const { indexPatternObject, indexPatternString } = await getIndexPatternObject(req, indexPattern);
17+
18+
const { indexPatternObject, indexPatternString } = await getIndexPatternObject(indexPattern, {
19+
indexPatternsService: await req.getIndexPatternsService(),
20+
});
1821

1922
const request = await buildRequestBody(
2023
req,

0 commit comments

Comments
 (0)