|
1 |
| -import { DataSourceInstanceSettings, ScopedVars } from '@grafana/data'; |
| 1 | +import { DataQueryRequest, DataSourceInstanceSettings, MetricFindValue, ScopedVars } from '@grafana/data'; |
2 | 2 | import { DataSourceWithBackend, getTemplateSrv } from '@grafana/runtime';
|
3 |
| -import { MyVariableQuery, TpDataSourceOptions, TpQuery } from './types'; |
| 3 | +import { TpDataSourceOptions, TpQuery, TpVariableQuery } from './types'; |
4 | 4 |
|
5 | 5 | export class DataSource extends DataSourceWithBackend<TpQuery, TpDataSourceOptions> {
|
6 | 6 | constructor(instanceSettings: DataSourceInstanceSettings<TpDataSourceOptions>) {
|
7 | 7 | super(instanceSettings);
|
8 | 8 | }
|
9 | 9 |
|
10 | 10 |
|
11 |
| - metricFindQuery(query: MyVariableQuery, options?: any) { |
| 11 | + metricFindQuery(query: TpVariableQuery, options?: any) { |
| 12 | + let metrics: MetricFindValue[] = [] |
12 | 13 | if (!query || !options.variable.datasource) {
|
13 |
| - return Promise.resolve([]); |
| 14 | + return Promise.resolve(metrics); |
14 | 15 | }
|
15 | 16 |
|
16 |
| - const prom = new Promise((resolve) => { |
| 17 | + const prom = new Promise<MetricFindValue[]>((resolve) => { |
17 | 18 | const req = {
|
18 | 19 | targets: [{ datasource: options.variable.datasource,
|
19 | 20 | sql: query.query,
|
20 | 21 | refId: String(Math.random()) }],
|
21 | 22 | range: options ? options.range : (getTemplateSrv() as any).timeRange,
|
22 |
| - }; |
| 23 | + } as DataQueryRequest<TpQuery> ; |
23 | 24 |
|
24 | 25 | this.query(req).subscribe((res) => {
|
25 | 26 | const result = res.data[0] || { fields: [] }
|
26 | 27 |
|
27 |
| - if (result.fields.length > 0) { |
28 |
| - const labels = result.fields[0].values.map((v) => { |
| 28 | + |
| 29 | + if (result.fields.length === 2) { |
| 30 | + for (let i = 0; i < result.fields[0].values.length; i++) { |
| 31 | + metrics.push({ |
| 32 | + text: result.fields[1].values[i], |
| 33 | + value: result.fields[0].values[i] |
| 34 | + }) |
| 35 | + } |
| 36 | + } else if (result.fields.length === 1) { |
| 37 | + metrics = result.fields[0].values.map((v: string) => { |
29 | 38 | return {
|
30 | 39 | text: v,
|
31 | 40 | value: v
|
32 | 41 | }});
|
33 |
| - |
34 |
| - resolve(labels); |
35 |
| - return |
36 | 42 | }
|
37 |
| - resolve([]); |
| 43 | + |
| 44 | + resolve(metrics); |
38 | 45 | });
|
39 | 46 | })
|
40 | 47 |
|
|
0 commit comments