mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
DataLinks: Removes getDataSourceSettingsByUid from applyFieldOverrides (#29447)
* DataLinks: Removes getDataSourceSettingsByUid from applyFieldOverrides and data linking code * Fixed test * Fixed a few tests * Fixed unit tests * Removed old getDataSourceSettingsByUid from interface, still there for runtime backward compatability
This commit is contained in:
@@ -22,6 +22,13 @@ const ELASTICSEARCH_MOCK_URL = 'http://elasticsearch.local';
|
||||
jest.mock('@grafana/runtime', () => ({
|
||||
...((jest.requireActual('@grafana/runtime') as unknown) as object),
|
||||
getBackendSrv: () => backendSrv,
|
||||
getDataSourceSrv: () => {
|
||||
return {
|
||||
getInstanceSettings: () => {
|
||||
return { name: 'elastic25' };
|
||||
},
|
||||
};
|
||||
},
|
||||
}));
|
||||
|
||||
describe('ElasticDatasource', function(this: any) {
|
||||
@@ -932,6 +939,7 @@ describe('enhanceDataFrame', () => {
|
||||
url: '',
|
||||
internal: {
|
||||
query: { query: 'query' },
|
||||
datasourceName: 'elastic25',
|
||||
datasourceUid: 'dsUid',
|
||||
},
|
||||
});
|
||||
|
||||
@@ -17,7 +17,7 @@ import { IndexPattern } from './index_pattern';
|
||||
import { ElasticQueryBuilder } from './query_builder';
|
||||
import { toUtc } from '@grafana/data';
|
||||
import * as queryDef from './query_def';
|
||||
import { getBackendSrv } from '@grafana/runtime';
|
||||
import { getBackendSrv, getDataSourceSrv } from '@grafana/runtime';
|
||||
import { getTemplateSrv, TemplateSrv } from 'app/features/templating/template_srv';
|
||||
import { getTimeSrv, TimeSrv } from 'app/features/dashboard/services/TimeSrv';
|
||||
import { DataLinkConfig, ElasticsearchOptions, ElasticsearchQuery } from './types';
|
||||
@@ -661,29 +661,41 @@ export class ElasticDatasource extends DataSourceApi<ElasticsearchQuery, Elastic
|
||||
* Exported for tests.
|
||||
*/
|
||||
export function enhanceDataFrame(dataFrame: DataFrame, dataLinks: DataLinkConfig[]) {
|
||||
if (dataLinks.length) {
|
||||
for (const field of dataFrame.fields) {
|
||||
const dataLinkConfig = dataLinks.find(dataLink => field.name && field.name.match(dataLink.field));
|
||||
if (dataLinkConfig) {
|
||||
let link: DataLink;
|
||||
if (dataLinkConfig.datasourceUid) {
|
||||
link = {
|
||||
title: '',
|
||||
url: '',
|
||||
internal: {
|
||||
query: { query: dataLinkConfig.url },
|
||||
datasourceUid: dataLinkConfig.datasourceUid,
|
||||
},
|
||||
};
|
||||
} else {
|
||||
link = {
|
||||
title: '',
|
||||
url: dataLinkConfig.url,
|
||||
};
|
||||
}
|
||||
field.config = field.config || {};
|
||||
field.config.links = [...(field.config.links || []), link];
|
||||
}
|
||||
const dataSourceSrv = getDataSourceSrv();
|
||||
|
||||
if (!dataLinks.length) {
|
||||
return;
|
||||
}
|
||||
|
||||
for (const field of dataFrame.fields) {
|
||||
const dataLinkConfig = dataLinks.find(dataLink => field.name && field.name.match(dataLink.field));
|
||||
|
||||
if (!dataLinkConfig) {
|
||||
continue;
|
||||
}
|
||||
|
||||
let link: DataLink;
|
||||
|
||||
if (dataLinkConfig.datasourceUid) {
|
||||
const dsSettings = dataSourceSrv.getInstanceSettings(dataLinkConfig.datasourceUid);
|
||||
|
||||
link = {
|
||||
title: '',
|
||||
url: '',
|
||||
internal: {
|
||||
query: { query: dataLinkConfig.url },
|
||||
datasourceUid: dataLinkConfig.datasourceUid,
|
||||
datasourceName: dsSettings?.name ?? 'Data source not found',
|
||||
},
|
||||
};
|
||||
} else {
|
||||
link = {
|
||||
title: '',
|
||||
url: dataLinkConfig.url,
|
||||
};
|
||||
}
|
||||
|
||||
field.config = field.config || {};
|
||||
field.config.links = [...(field.config.links || []), link];
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user