Files
grafana/public/app/features/dashboard-scene/utils/dashboardSceneGraph.ts
T
Torkel Ödegaard b700de8122 Dashboard: New layouts feature toggle and basic skeleton for a responsive grid layout (#94805)
* Wip

* Update

* Fix adding new panels

* reuse fromVizPanels

* Fixes

* Update

* Update

* Update

* Fixes

* Update
2024-10-23 10:55:45 +02:00

57 lines
1.5 KiB
TypeScript

import { VizPanel, sceneGraph, behaviors } from '@grafana/scenes';
import { DashboardDataLayerSet } from '../scene/DashboardDataLayerSet';
import { DashboardScene } from '../scene/DashboardScene';
import { VizPanelLinks } from '../scene/PanelLinks';
function getTimePicker(scene: DashboardScene) {
return scene.state.controls?.state.timePicker;
}
function getRefreshPicker(scene: DashboardScene) {
return scene.state.controls?.state.refreshPicker;
}
function getPanelLinks(panel: VizPanel) {
if (panel.state.titleItems && Array.isArray(panel.state.titleItems)) {
// search panel.state.titleItems for VizPanelLinks
const panelLink = panel.state.titleItems.find((item) => item instanceof VizPanelLinks);
return panelLink ?? null;
}
return null;
}
function getVizPanels(scene: DashboardScene): VizPanel[] {
return scene.state.body.getVizPanels();
}
function getDataLayers(scene: DashboardScene): DashboardDataLayerSet {
const data = sceneGraph.getData(scene);
if (!(data instanceof DashboardDataLayerSet)) {
throw new Error('DashboardDataLayerSet not found');
}
return data;
}
export function getCursorSync(scene: DashboardScene) {
const cursorSync = scene.state.$behaviors?.find((b) => b instanceof behaviors.CursorSync);
if (cursorSync instanceof behaviors.CursorSync) {
return cursorSync;
}
return;
}
export const dashboardSceneGraph = {
getTimePicker,
getRefreshPicker,
getPanelLinks,
getVizPanels,
getDataLayers,
getCursorSync,
};