mirror of
https://github.com/grafana/grafana.git
synced 2025-02-12 00:25:46 -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 { FieldConfig } from './dataFrame';
|
||||||
import { DataTransformerConfig } from './transformations';
|
import { DataTransformerConfig } from './transformations';
|
||||||
import { ApplyFieldOverrideOptions } from './fieldOverrides';
|
import { ApplyFieldOverrideOptions } from './fieldOverrides';
|
||||||
|
import { PanelPluginDataSupport } from '.';
|
||||||
|
|
||||||
export type KeyValue<T = any> = Record<string, T>;
|
export type KeyValue<T = any> = Record<string, T>;
|
||||||
|
|
||||||
@ -168,6 +169,7 @@ export enum NullValueMode {
|
|||||||
*/
|
*/
|
||||||
export interface DataConfigSource {
|
export interface DataConfigSource {
|
||||||
configRev?: number;
|
configRev?: number;
|
||||||
|
dataSupport?: PanelPluginDataSupport;
|
||||||
getTransformations: () => DataTransformerConfig[] | undefined;
|
getTransformations: () => DataTransformerConfig[] | undefined;
|
||||||
getFieldOverrideOptions: () => ApplyFieldOverrideOptions | undefined;
|
getFieldOverrideOptions: () => ApplyFieldOverrideOptions | undefined;
|
||||||
}
|
}
|
||||||
|
@ -24,6 +24,7 @@ import {
|
|||||||
DataTransformerConfig,
|
DataTransformerConfig,
|
||||||
LoadingState,
|
LoadingState,
|
||||||
PanelData,
|
PanelData,
|
||||||
|
PanelPluginDataSupport,
|
||||||
rangeUtil,
|
rangeUtil,
|
||||||
ScopedVars,
|
ScopedVars,
|
||||||
TimeRange,
|
TimeRange,
|
||||||
@ -66,6 +67,7 @@ export class PanelQueryRunner {
|
|||||||
private subscription?: Unsubscribable;
|
private subscription?: Unsubscribable;
|
||||||
private lastResult?: PanelData;
|
private lastResult?: PanelData;
|
||||||
private dataConfigSource: DataConfigSource;
|
private dataConfigSource: DataConfigSource;
|
||||||
|
private dataSupport?: PanelPluginDataSupport;
|
||||||
|
|
||||||
constructor(dataConfigSource: DataConfigSource) {
|
constructor(dataConfigSource: DataConfigSource) {
|
||||||
this.subject = new ReplaySubject(1);
|
this.subject = new ReplaySubject(1);
|
||||||
@ -243,7 +245,12 @@ export class PanelQueryRunner {
|
|||||||
this.subscription.unsubscribe();
|
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) => {
|
next: (data) => {
|
||||||
this.lastResult = preProcessPanelData(data, this.lastResult);
|
this.lastResult = preProcessPanelData(data, this.lastResult);
|
||||||
// Store preprocessed query results for applying overrides later on in the pipeline
|
// Store preprocessed query results for applying overrides later on in the pipeline
|
||||||
|
Loading…
Reference in New Issue
Block a user