mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Snapshots: Fix panel inspector for snapshot data (#41530)
This commit is contained in:
parent
e5421dd53e
commit
ecb877cb24
@ -1,4 +1,4 @@
|
||||
import { FieldConfig } from './dataFrame';
|
||||
import { DataFrameDTO, FieldConfig } from './dataFrame';
|
||||
import { DataTransformerConfig } from './transformations';
|
||||
import { ApplyFieldOverrideOptions } from './fieldOverrides';
|
||||
import { PanelPluginDataSupport } from '.';
|
||||
@ -171,4 +171,5 @@ export interface DataConfigSource {
|
||||
getDataSupport: () => PanelPluginDataSupport;
|
||||
getTransformations: () => DataTransformerConfig[] | undefined;
|
||||
getFieldOverrideOptions: () => ApplyFieldOverrideOptions | undefined;
|
||||
snapshotData?: DataFrameDTO[];
|
||||
}
|
||||
|
@ -56,6 +56,11 @@ interface ScenarioContext {
|
||||
}
|
||||
|
||||
type ScenarioFn = (ctx: ScenarioContext) => void;
|
||||
const defaultPanelConfig: grafanaData.DataConfigSource = {
|
||||
getFieldOverrideOptions: () => undefined,
|
||||
getTransformations: () => undefined,
|
||||
getDataSupport: () => ({ annotations: false, alertStates: false }),
|
||||
};
|
||||
|
||||
function describeQueryRunnerScenario(
|
||||
description: string,
|
||||
@ -64,11 +69,6 @@ function describeQueryRunnerScenario(
|
||||
) {
|
||||
describe(description, () => {
|
||||
let setupFn = () => {};
|
||||
const defaultPanelConfig: grafanaData.DataConfigSource = {
|
||||
getFieldOverrideOptions: () => undefined,
|
||||
getTransformations: () => undefined,
|
||||
getDataSupport: () => ({ annotations: false, alertStates: false }),
|
||||
};
|
||||
const ctx: ScenarioContext = {
|
||||
maxDataPoints: 200,
|
||||
scopedVars: {
|
||||
@ -363,6 +363,35 @@ describe('PanelQueryRunner', () => {
|
||||
}),
|
||||
// @ts-ignore
|
||||
getTransformations: () => [{}],
|
||||
getDataSupport: () => ({ annotations: false, alertStates: false }),
|
||||
}
|
||||
);
|
||||
|
||||
const snapshotData: grafanaData.DataFrameDTO[] = [
|
||||
{
|
||||
fields: [
|
||||
{ name: 'time', type: grafanaData.FieldType.time, values: [1000] },
|
||||
{ name: 'value', type: grafanaData.FieldType.number, values: [1] },
|
||||
],
|
||||
},
|
||||
];
|
||||
describeQueryRunnerScenario(
|
||||
'getData with snapshot data',
|
||||
(ctx) => {
|
||||
it('should return snapshotted data', async () => {
|
||||
ctx.runner.getData({ withTransforms: false, withFieldConfig: true }).subscribe({
|
||||
next: (data: grafanaData.PanelData) => {
|
||||
expect(data.state).toBe(grafanaData.LoadingState.Done);
|
||||
expect(data.series).toEqual(snapshotData);
|
||||
expect(data.timeRange).toEqual(grafanaData.getDefaultTimeRange());
|
||||
return data;
|
||||
},
|
||||
});
|
||||
});
|
||||
},
|
||||
{
|
||||
...defaultPanelConfig,
|
||||
snapshotData,
|
||||
}
|
||||
);
|
||||
});
|
||||
|
@ -23,12 +23,14 @@ import {
|
||||
DataSourceJsonData,
|
||||
DataSourceRef,
|
||||
DataTransformerConfig,
|
||||
getDefaultTimeRange,
|
||||
LoadingState,
|
||||
PanelData,
|
||||
rangeUtil,
|
||||
ScopedVars,
|
||||
TimeRange,
|
||||
TimeZone,
|
||||
toDataFrame,
|
||||
transformDataFrame,
|
||||
} from '@grafana/data';
|
||||
import { getDashboardQueryRunner } from './DashboardQueryRunner/DashboardQueryRunner';
|
||||
@ -87,6 +89,15 @@ export class PanelQueryRunner {
|
||||
return compareDataFrameStructures(a, b, true);
|
||||
};
|
||||
|
||||
if (this.dataConfigSource.snapshotData) {
|
||||
const snapshotPanelData: PanelData = {
|
||||
state: LoadingState.Done,
|
||||
series: this.dataConfigSource.snapshotData.map((v) => toDataFrame(v)),
|
||||
timeRange: getDefaultTimeRange(), // Don't need real time range for snapshots
|
||||
};
|
||||
return of(snapshotPanelData);
|
||||
}
|
||||
|
||||
return this.subject.pipe(
|
||||
this.getTransformationsStream(withTransforms),
|
||||
map((data: PanelData) => {
|
||||
|
Loading…
Reference in New Issue
Block a user