Skip to content

Commit 21e582f

Browse files
committed
Refactor LogsContext into a mixin
1 parent 7c45dad commit 21e582f

File tree

3 files changed

+41
-30
lines changed

3 files changed

+41
-30
lines changed

src/datasource/base.ts

Lines changed: 0 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import { first as _first, map as _map } from 'lodash';
21
import { Observable, lastValueFrom, from, of } from 'rxjs';
32
import { map, mergeMap } from 'rxjs/operators';
43

@@ -10,10 +9,8 @@ import {
109
DataQueryRequest,
1110
DataQueryResponse,
1211
DataSourceInstanceSettings,
13-
DataSourceWithLogsContextSupport,
1412
DataSourceWithQueryImportSupport,
1513
getDefaultTimeRange,
16-
LogRowModel,
1714
MetricFindValue,
1815
QueryFixAction,
1916
ScopedVars,
@@ -32,10 +29,8 @@ import { isMetricAggregationWithField } from 'components/QueryEditor/MetricAggre
3229
import { bucketAggregationConfig } from 'components/QueryEditor/BucketAggregationsEditor/utils';
3330
import { isBucketAggregationWithField } from 'components/QueryEditor/BucketAggregationsEditor/aggregations';
3431
import ElasticsearchLanguageProvider from 'LanguageProvider';
35-
import { ReactNode } from 'react';
3632
import { fieldTypeMap } from 'utils';
3733
import { addAddHocFilter } from 'modifyQuery';
38-
import { LogContextProvider, LogRowContextOptions } from '@/LogContext/LogContextProvider';
3934
import { getQueryResponseProcessor } from 'datasource/processResponse';
4035

4136
import { SECOND } from 'utils/time';
@@ -53,7 +48,6 @@ type FieldCapsSpec = {
5348
export class BaseQuickwitDataSource
5449
extends DataSourceWithBackend<ElasticsearchQuery, QuickwitOptions>
5550
implements
56-
DataSourceWithLogsContextSupport,
5751
DataSourceWithQueryImportSupport<ElasticsearchQuery>
5852
{
5953
index: string;
@@ -63,7 +57,6 @@ export class BaseQuickwitDataSource
6357
dataLinks: DataLinkConfig[];
6458
languageProvider: ElasticsearchLanguageProvider;
6559

66-
private logContextProvider: LogContextProvider;
6760

6861
constructor(
6962
instanceSettings: DataSourceInstanceSettings<QuickwitOptions>,
@@ -77,7 +70,6 @@ export class BaseQuickwitDataSource
7770
this.logLevelField = settingsData.logLevelField || '';
7871
this.dataLinks = settingsData.dataLinks || [];
7972
this.languageProvider = new ElasticsearchLanguageProvider(this);
80-
this.logContextProvider = new LogContextProvider(this);
8173
}
8274

8375
query(request: DataQueryRequest<ElasticsearchQuery>): Observable<DataQueryResponse> {
@@ -283,28 +275,6 @@ export class BaseQuickwitDataSource
283275
return text;
284276
}
285277

286-
// Log Context
287-
288-
// NOTE : deprecated since grafana-data 10.3
289-
showContextToggle(row?: LogRowModel | undefined): boolean {
290-
return true;
291-
}
292-
293-
getLogRowContext = async (
294-
row: LogRowModel,
295-
options?: LogRowContextOptions,
296-
origQuery?: ElasticsearchQuery
297-
): Promise<{ data: DataFrame[] }> => {
298-
return await this.logContextProvider.getLogRowContext(row, options, origQuery);
299-
}
300-
301-
getLogRowContextUi(
302-
row: LogRowModel,
303-
runContextQuery?: (() => void),
304-
origQuery?: ElasticsearchQuery
305-
): ReactNode {
306-
return this.logContextProvider.getLogRowContextUi(row, runContextQuery, origQuery);
307-
}
308278

309279
/**
310280
* Returns false if the query should be skipped

src/datasource/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
import { BaseQuickwitDataSource } from './base';
22

33
import { withSupplementaryQueries } from './supplementaryQueries';
4+
import { withLogContext } from './logsContext';
45

56
const mixins = [
7+
withLogContext,
68
withSupplementaryQueries,
79
]
810
const qwds = mixins.reduce(( qwds, fn) => fn(qwds), BaseQuickwitDataSource)

src/datasource/logsContext.ts

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
import { DataFrame, DataSourceWithLogsContextSupport, LogRowModel, } from '@grafana/data';
2+
import {ElasticsearchQuery } from '@/types';
3+
4+
import { ReactNode } from 'react';
5+
import { LogContextProvider, LogRowContextOptions } from '@/LogContext/LogContextProvider';
6+
7+
import { BaseQuickwitDataSourceConstructor } from './base';
8+
9+
export function withLogContext<T extends BaseQuickwitDataSourceConstructor > ( Base: T ){
10+
return class DSWithLogsContext extends Base implements DataSourceWithLogsContextSupport {
11+
protected logContextProvider: LogContextProvider;
12+
// Log Context
13+
constructor(...args: any[]){
14+
super(...args)
15+
this.logContextProvider = new LogContextProvider(this);
16+
}
17+
// NOTE : deprecated since grafana-data 10.3
18+
showContextToggle(row?: LogRowModel | undefined): boolean {
19+
return true;
20+
}
21+
22+
getLogRowContext = async (
23+
row: LogRowModel,
24+
options?: LogRowContextOptions,
25+
origQuery?: ElasticsearchQuery
26+
): Promise<{ data: DataFrame[] }> => {
27+
return await this.logContextProvider.getLogRowContext(row, options, origQuery);
28+
}
29+
30+
getLogRowContextUi(
31+
row: LogRowModel,
32+
runContextQuery?: (() => void),
33+
origQuery?: ElasticsearchQuery
34+
): ReactNode {
35+
return this.logContextProvider.getLogRowContextUi(row, runContextQuery, origQuery);
36+
}
37+
38+
};
39+
}

0 commit comments

Comments
 (0)