mirror of
https://github.com/grafana/grafana.git
synced 2025-02-11 16:15:42 -06:00
DashboardQueryRunner: Implements opt-in subscribe logic (#33370)
* DashboardQueryRunner: Implements opt-in subscribe logic
This commit is contained in:
parent
a54ac510c4
commit
999f139868
@ -1,6 +1,7 @@
|
||||
import { FieldConfig } from './dataFrame';
|
||||
import { DataTransformerConfig } from './transformations';
|
||||
import { ApplyFieldOverrideOptions } from './fieldOverrides';
|
||||
import { PanelPluginDataSupport } from '.';
|
||||
|
||||
export type KeyValue<T = any> = Record<string, T>;
|
||||
|
||||
@ -168,6 +169,7 @@ export enum NullValueMode {
|
||||
*/
|
||||
export interface DataConfigSource {
|
||||
configRev?: number;
|
||||
dataSupport?: PanelPluginDataSupport;
|
||||
getTransformations: () => DataTransformerConfig[] | undefined;
|
||||
getFieldOverrideOptions: () => ApplyFieldOverrideOptions | undefined;
|
||||
}
|
||||
|
@ -24,6 +24,7 @@ import {
|
||||
DataTransformerConfig,
|
||||
LoadingState,
|
||||
PanelData,
|
||||
PanelPluginDataSupport,
|
||||
rangeUtil,
|
||||
ScopedVars,
|
||||
TimeRange,
|
||||
@ -66,6 +67,7 @@ export class PanelQueryRunner {
|
||||
private subscription?: Unsubscribable;
|
||||
private lastResult?: PanelData;
|
||||
private dataConfigSource: DataConfigSource;
|
||||
private dataSupport?: PanelPluginDataSupport;
|
||||
|
||||
constructor(dataConfigSource: DataConfigSource) {
|
||||
this.subject = new ReplaySubject(1);
|
||||
@ -243,7 +245,12 @@ export class PanelQueryRunner {
|
||||
this.subscription.unsubscribe();
|
||||
}
|
||||
|
||||
this.subscription = mergePanelAndDashData(observable, getDashboardQueryRunner().getResult(panelId)).subscribe({
|
||||
let panelData = observable;
|
||||
if (this.dataSupport?.alertStates || this.dataSupport?.annotations) {
|
||||
panelData = mergePanelAndDashData(observable, getDashboardQueryRunner().getResult(panelId));
|
||||
}
|
||||
|
||||
this.subscription = panelData.subscribe({
|
||||
next: (data) => {
|
||||
this.lastResult = preProcessPanelData(data, this.lastResult);
|
||||
// Store preprocessed query results for applying overrides later on in the pipeline
|
||||
|
Loading…
Reference in New Issue
Block a user