diff --git a/public/app/plugins/datasource/grafana-azure-monitor-datasource/datasource.ts b/public/app/plugins/datasource/grafana-azure-monitor-datasource/datasource.ts index 8a3b9870479..6521303525d 100644 --- a/public/app/plugins/datasource/grafana-azure-monitor-datasource/datasource.ts +++ b/public/app/plugins/datasource/grafana-azure-monitor-datasource/datasource.ts @@ -4,17 +4,19 @@ import AppInsightsDatasource from './app_insights/app_insights_datasource'; import AzureLogAnalyticsDatasource from './azure_log_analytics/azure_log_analytics_datasource'; import { AzureDataSourceJsonData, AzureMonitorQuery, AzureQueryType, InsightsAnalyticsQuery } from './types'; import { + DataFrame, DataQueryRequest, - DataQueryResponseData, + DataQueryResponse, DataSourceApi, DataSourceInstanceSettings, LoadingState, ScopedVars, } from '@grafana/data'; -import { from, Observable, of } from 'rxjs'; +import { forkJoin, Observable, of } from 'rxjs'; import { DataSourceWithBackend } from '@grafana/runtime'; import InsightsAnalyticsDatasource from './insights_analytics/insights_analytics_datasource'; import { migrateMetricsDimensionFilters } from './query_ctrl'; +import { map } from 'rxjs/operators'; export default class Datasource extends DataSourceApi { azureMonitorDatasource: AzureMonitorDatasource; @@ -47,7 +49,7 @@ export default class Datasource extends DataSourceApi): Observable { + query(options: DataQueryRequest): Observable { const byType: Record> = ({} as unknown) as Record< AzureQueryType, DataQueryRequest @@ -98,17 +100,23 @@ export default class Datasource extends DataSourceApi 1) { - // Not accurate, but simple and works - // should likely be more like the mixed data source - const promises = obs.map(o => o.toPromise()); - return from( - Promise.all(promises).then(results => { - return { data: _.flatten(results) }; + return forkJoin(obs).pipe( + map((results: DataQueryResponse[]) => { + const data: DataFrame[] = []; + for (const result of results) { + for (const frame of result.data) { + data.push(frame); + } + } + + return { state: LoadingState.Done, data }; }) ); } - return of({ state: LoadingState.Done }); + + return of({ state: LoadingState.Done, data: [] }); } async annotationQuery(options: any) {