grafana_bak/public/app/features/dashboard-scene/scene/layout-default/DashboardGridItemVariableDependencyHandler.ts
2025-04-01 10:38:02 +09:00

32 lines
1.2 KiB
TypeScript

import { SceneVariable, SceneVariableDependencyConfigLike } from '@grafana/scenes';
import { DashboardGridItem } from './DashboardGridItem';
export class DashboardGridItemVariableDependencyHandler implements SceneVariableDependencyConfigLike {
constructor(private _gridItem: DashboardGridItem) {}
public getNames(): Set<string> {
if (this._gridItem.state.variableName) {
return new Set([this._gridItem.state.variableName]);
}
return new Set();
}
public hasDependencyOn(name: string): boolean {
return this._gridItem.state.variableName === name;
}
public variableUpdateCompleted(variable: SceneVariable) {
if (this._gridItem.state.variableName === variable.state.name) {
/**
* We do not really care if the variable has changed or not as we do an equality check in performRepeat
* And this function needs to be called even when variable valued id not change as performRepeat calls
* notifyRepeatedPanelsWaitingForVariables which is needed to notify panels waiting for variable to complete (even when the value did not change)
* This is for scenarios where the variable used for repeating is depending on time range.
*/
this._gridItem.performRepeat();
}
}
}