Files
grafana/public/app/features/dashboard-scene/scene/DashboardMacro.ts
Dominik Prokop 384db8e0ca DashboardScene: Add macro for interpolating __dashboard variable (#78172)
* DashbaordScene: Add macro for interpoladint __dashboard variable

* Review

* Test fix

* Test fix
2023-11-15 04:05:54 -08:00

41 lines
966 B
TypeScript

import { FormatVariable, SceneObject, sceneUtils } from '@grafana/scenes';
import { getDashboardSceneFor } from '../utils/utils';
/**
* Handles expressions like ${__dashboard.uid}
*/
class DashboardMacro implements FormatVariable {
public state: { name: string; type: string };
public constructor(
name: string,
private _sceneObject: SceneObject
) {
this.state = { name: name, type: 'dashboard_macro' };
}
public getValue(fieldPath?: string): string {
const dashboard = getDashboardSceneFor(this._sceneObject);
switch (fieldPath) {
case 'uid':
return dashboard.state.uid || '';
case 'title':
case 'name':
case 'id':
default:
return dashboard.state.title;
}
}
public getValueText?(): string {
return '';
}
}
export function registerDashboardMacro() {
const unregister = sceneUtils.registerVariableMacro('__dashboard', DashboardMacro);
return () => unregister();
}