mirror of
https://github.com/grafana/grafana.git
synced 2025-02-04 04:31:00 -06:00
32 lines
1.2 KiB
TypeScript
32 lines
1.2 KiB
TypeScript
import { from, Observable } from 'rxjs';
|
|
import { map, mergeMap } from 'rxjs/operators';
|
|
|
|
import { CustomVariableSupport, DataQueryRequest, DataQueryResponse } from '@grafana/data';
|
|
|
|
import CloudMonitoringMetricFindQuery from './CloudMonitoringMetricFindQuery';
|
|
import { CloudMonitoringVariableQueryEditor } from './components/VariableQueryEditor';
|
|
import CloudMonitoringDatasource from './datasource';
|
|
import { CloudMonitoringVariableQuery } from './types/types';
|
|
|
|
export class CloudMonitoringVariableSupport extends CustomVariableSupport<
|
|
CloudMonitoringDatasource,
|
|
CloudMonitoringVariableQuery
|
|
> {
|
|
private readonly metricFindQuery: CloudMonitoringMetricFindQuery;
|
|
|
|
constructor(private readonly datasource: CloudMonitoringDatasource) {
|
|
super();
|
|
this.metricFindQuery = new CloudMonitoringMetricFindQuery(datasource);
|
|
}
|
|
|
|
editor = CloudMonitoringVariableQueryEditor;
|
|
|
|
query(request: DataQueryRequest<CloudMonitoringVariableQuery>): Observable<DataQueryResponse> {
|
|
const executeObservable = from(this.metricFindQuery.execute(request.targets[0]));
|
|
return from(this.datasource.ensureGCEDefaultProject()).pipe(
|
|
mergeMap(() => executeObservable),
|
|
map((data) => ({ data }))
|
|
);
|
|
}
|
|
}
|