diff --git a/public/app/features/dashboard-scene/serialization/transformSaveModelToScene.test.ts b/public/app/features/dashboard-scene/serialization/transformSaveModelToScene.test.ts index 50b58dbe369..d83a1d20114 100644 --- a/public/app/features/dashboard-scene/serialization/transformSaveModelToScene.test.ts +++ b/public/app/features/dashboard-scene/serialization/transformSaveModelToScene.test.ts @@ -417,6 +417,20 @@ describe('transformSaveModelToScene', () => { expect(vizPanel.state.hoverHeader).toEqual(true); }); + it('should initalize the VizPanel with min interval set', () => { + const panel = { + title: '', + type: 'test-plugin', + gridPos: { x: 0, y: 0, w: 12, h: 8 }, + interval: '20m', + }; + + const { vizPanel } = buildGridItemForTest(panel); + + const queryRunner = getQueryRunnerFor(vizPanel); + expect(queryRunner?.state.minInterval).toBe('20m'); + }); + it('should set PanelTimeRange when timeFrom or timeShift is present', () => { const panel = { type: 'test-plugin', diff --git a/public/app/features/dashboard-scene/serialization/transformSceneToSaveModel.test.ts b/public/app/features/dashboard-scene/serialization/transformSceneToSaveModel.test.ts index 6137dfc4a21..57c1d385d7a 100644 --- a/public/app/features/dashboard-scene/serialization/transformSceneToSaveModel.test.ts +++ b/public/app/features/dashboard-scene/serialization/transformSceneToSaveModel.test.ts @@ -259,6 +259,13 @@ describe('transformSceneToSaveModel', () => { expect(saveModel.transparent).toBe(true); }); + it('interval', () => { + const gridItem = buildGridItemFromPanelSchema({ interval: '20m' }); + const saveModel = gridItemToPanel(gridItem); + + expect(saveModel.interval).toBe('20m'); + }); + it('With angular options', () => { const gridItem = buildGridItemFromPanelSchema({}); const vizPanel = gridItem.state.body as VizPanel; diff --git a/public/app/features/dashboard-scene/serialization/transformSceneToSaveModel.ts b/public/app/features/dashboard-scene/serialization/transformSceneToSaveModel.ts index 384aede6ea0..6d918ba78cf 100644 --- a/public/app/features/dashboard-scene/serialization/transformSceneToSaveModel.ts +++ b/public/app/features/dashboard-scene/serialization/transformSceneToSaveModel.ts @@ -281,7 +281,7 @@ function vizPanelDataToPanel( const panel: Pick< Panel, - 'datasource' | 'targets' | 'maxDataPoints' | 'transformations' | 'cacheTimeout' | 'queryCachingTTL' + 'datasource' | 'targets' | 'maxDataPoints' | 'transformations' | 'cacheTimeout' | 'queryCachingTTL' | 'interval' > = {}; const queryRunner = getQueryRunnerFor(vizPanel); @@ -297,6 +297,9 @@ function vizPanelDataToPanel( if (queryRunner.state.queryCachingTTL) { panel.queryCachingTTL = queryRunner.state.queryCachingTTL; } + if (queryRunner.state.minInterval) { + panel.interval = queryRunner.state.minInterval; + } } if (dataProvider instanceof SceneDataTransformer) { diff --git a/public/app/features/dashboard-scene/utils/createPanelDataProvider.ts b/public/app/features/dashboard-scene/utils/createPanelDataProvider.ts index e9754ebf206..758d60be473 100644 --- a/public/app/features/dashboard-scene/utils/createPanelDataProvider.ts +++ b/public/app/features/dashboard-scene/utils/createPanelDataProvider.ts @@ -24,6 +24,7 @@ export function createPanelDataProvider(panel: PanelModel): SceneDataProvider | maxDataPointsFromWidth: true, cacheTimeout: panel.cacheTimeout, queryCachingTTL: panel.queryCachingTTL, + minInterval: panel.interval ?? undefined, dataLayerFilter: { panelId: panel.id, },