mirror of
https://github.com/grafana/grafana.git
synced 2026-08-26 05:17:26 -05:00
* Wip * Update * Fix adding new panels * reuse fromVizPanels * Fixes * Update * Update * Update * Fixes * Update
57 lines
1.5 KiB
TypeScript
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,
|
|
};
|