2025-04-01 10:38:02 +09:00

36 lines
1.3 KiB
TypeScript

import { SceneObjectUrlSyncHandler, SceneObjectUrlValues } from '@grafana/scenes';
import { AnnotationsEditView, AnnotationsEditViewState } from './AnnotationsEditView';
import { DashboardLinksEditView, DashboardLinksEditViewState } from './DashboardLinksEditView';
import { VariablesEditView, VariablesEditViewState } from './VariablesEditView';
type EditListViewUrlSync = DashboardLinksEditView | VariablesEditView | AnnotationsEditView;
type EditListViewState = DashboardLinksEditViewState | VariablesEditViewState | AnnotationsEditViewState;
export class EditListViewSceneUrlSync implements SceneObjectUrlSyncHandler {
constructor(private _scene: EditListViewUrlSync) {}
getKeys(): string[] {
return ['editIndex'];
}
getUrlState(): SceneObjectUrlValues {
const state = this._scene.state;
return {
editIndex: state.editIndex !== undefined ? String(state.editIndex) : undefined,
};
}
updateFromUrl(values: SceneObjectUrlValues): void {
let update: Partial<EditListViewState> = {};
if (typeof values.editIndex === 'string') {
update = { editIndex: Number(values.editIndex) };
} else {
update = { editIndex: undefined };
}
if (Object.keys(update).length > 0) {
this._scene.setState(update);
}
}
}