diff --git a/public/app/features/panel/metrics_panel_ctrl.ts b/public/app/features/panel/metrics_panel_ctrl.ts index e1ad782fa74..51380653b7b 100644 --- a/public/app/features/panel/metrics_panel_ctrl.ts +++ b/public/app/features/panel/metrics_panel_ctrl.ts @@ -26,6 +26,7 @@ class MetricsPanelCtrl extends PanelCtrl { timeInfo: any; skipDataOnInit: boolean; datasources: any[]; + dataSubscription: any; constructor($scope, $injector) { super($scope, $injector); @@ -182,6 +183,12 @@ class MetricsPanelCtrl extends PanelCtrl { return datasource.query(metricsQuery).then(results => { this.setTimeQueryEnd(); + // check for if data source returns observable + if (results && results.subscribe) { + this.handleObservable(results); + return {data: []}; + } + if (this.dashboard.snapshot) { this.panel.snapshotData = results; } @@ -193,6 +200,20 @@ class MetricsPanelCtrl extends PanelCtrl { } } + handleObservable(observable) { + this.dataSubscription = observable.subscribe({ + next: (data) => { + console.log('panel: observer got data'); + }, + error: (error) => { + console.log('panel: observer got error'); + }, + complete: () => { + console.log('panel: observer got complete'); + } + }); + } + setDatasource(datasource) { // switching to mixed if (datasource.meta.mixed) {