diff --git a/public/app/features/dashboard-scene/scene/LibraryPanelBehavior.test.tsx b/public/app/features/dashboard-scene/scene/LibraryPanelBehavior.test.tsx index 78378863e89..42d1d831b04 100644 --- a/public/app/features/dashboard-scene/scene/LibraryPanelBehavior.test.tsx +++ b/public/app/features/dashboard-scene/scene/LibraryPanelBehavior.test.tsx @@ -13,6 +13,7 @@ import { activateFullSceneTree } from '../utils/test-utils'; import { DashboardGridItem } from './DashboardGridItem'; import { DashboardScene } from './DashboardScene'; import { LibraryPanelBehavior } from './LibraryPanelBehavior'; +import { PanelTimeRange } from './PanelTimeRange'; import { DefaultGridLayoutManager } from './layout-default/DefaultGridLayoutManager'; setPluginImportUtils({ @@ -81,6 +82,31 @@ describe('LibraryPanelBehavior', () => { expect(spy).toHaveBeenCalled(); }); + it('should set panel timeRange if panel has query options set', async () => { + const { gridItem } = await buildTestSceneWithLibraryPanel(); + + const behavior = gridItem.state.body.state.$behaviors![0] as LibraryPanelBehavior; + expect(behavior).toBeDefined(); + expect(gridItem.state.body.state.$timeRange).toBeUndefined(); + + const panel = vizPanelToPanel(gridItem.state.body.clone({ $behaviors: undefined })); + panel.timeFrom = '2h'; + panel.timeShift = '3h'; + + const libraryPanelState = { + name: 'LibraryPanel B', + title: 'LibraryPanel B title', + uid: '222', + type: 'table', + version: 2, + model: panel, + }; + + behavior.setPanelFromLibPanel(libraryPanelState); + + expect(gridItem.state.body.state.$timeRange).toBeInstanceOf(PanelTimeRange); + }); + it('should not update panel if version is the same', async () => { const { gridItem } = await buildTestSceneWithLibraryPanel(); diff --git a/public/app/features/dashboard-scene/scene/LibraryPanelBehavior.tsx b/public/app/features/dashboard-scene/scene/LibraryPanelBehavior.tsx index ba2551e57ec..9a82ad1bcec 100644 --- a/public/app/features/dashboard-scene/scene/LibraryPanelBehavior.tsx +++ b/public/app/features/dashboard-scene/scene/LibraryPanelBehavior.tsx @@ -9,6 +9,7 @@ import { getLibraryPanel } from 'app/features/library-panels/state/api'; import { createPanelDataProvider } from '../utils/createPanelDataProvider'; import { DashboardGridItem } from './DashboardGridItem'; +import { PanelTimeRange } from './PanelTimeRange'; export interface LibraryPanelBehaviorState extends SceneObjectState { // Library panels use title from dashboard JSON's panel model, not from library panel definition, hence we pass it. @@ -58,6 +59,14 @@ export class LibraryPanelBehavior extends SceneObjectBase