diff --git a/public/app/features/dashboard-scene/saving/DashboardPrompt.test.tsx b/public/app/features/dashboard-scene/saving/DashboardPrompt.test.tsx index 2077905a0f1..2b7624b779a 100644 --- a/public/app/features/dashboard-scene/saving/DashboardPrompt.test.tsx +++ b/public/app/features/dashboard-scene/saving/DashboardPrompt.test.tsx @@ -24,7 +24,7 @@ describe('DashboardPrompt', () => { describe('when called without original dashboard', () => { it('then it should return true', () => { const scene = buildTestScene(); - scene.setInitialSaveModel(undefined, undefined); + scene.setInitialSaveModel(undefined); expect(ignoreChanges(scene)).toBe(true); }); }); @@ -59,7 +59,7 @@ describe('DashboardPrompt', () => { }, }); const initialSaveModel = transformSceneToSaveModel(scene); - scene.setInitialSaveModel(initialSaveModel.version, initialSaveModel); + scene.setInitialSaveModel(initialSaveModel); contextSrv.isEditor = false; @@ -76,7 +76,7 @@ describe('DashboardPrompt', () => { }, }); const initialSaveModel = transformSceneToSaveModel(scene); - scene.setInitialSaveModel(initialSaveModel.version, initialSaveModel); + scene.setInitialSaveModel(initialSaveModel); contextSrv.isSignedIn = false; expect(ignoreChanges(scene)).toBe(true); @@ -92,7 +92,7 @@ describe('DashboardPrompt', () => { }, }); const initialSaveModel = transformSceneToSaveModel(scene); - scene.setInitialSaveModel(initialSaveModel.version, initialSaveModel); + scene.setInitialSaveModel(initialSaveModel); expect(ignoreChanges(scene)).toBe(true); }); @@ -108,7 +108,7 @@ describe('DashboardPrompt', () => { }, }); const initialSaveModel = transformSceneToSaveModel(scene); - scene.setInitialSaveModel(initialSaveModel.version, initialSaveModel); + scene.setInitialSaveModel(initialSaveModel); expect(ignoreChanges(scene)).toBe(true); }); @@ -124,7 +124,7 @@ describe('DashboardPrompt', () => { }, }); const initialSaveModel = transformSceneToSaveModel(scene); - scene.setInitialSaveModel(initialSaveModel.version, initialSaveModel); + scene.setInitialSaveModel(initialSaveModel); expect(ignoreChanges(scene)).toBe(undefined); }); diff --git a/public/app/features/dashboard-scene/saving/DashboardPrompt.tsx b/public/app/features/dashboard-scene/saving/DashboardPrompt.tsx index 64f7d6d698f..3b0760001c6 100644 --- a/public/app/features/dashboard-scene/saving/DashboardPrompt.tsx +++ b/public/app/features/dashboard-scene/saving/DashboardPrompt.tsx @@ -8,7 +8,7 @@ import { Prompt } from 'app/core/components/FormPrompt/Prompt'; import { contextSrv } from 'app/core/services/context_srv'; import { SaveLibraryVizPanelModal } from '../panel-edit/SaveLibraryVizPanelModal'; -import { DashboardScene } from '../scene/DashboardScene'; +import { DashboardScene, isV2Dashboard } from '../scene/DashboardScene'; import { getLibraryPanelBehavior, isLibraryPanel } from '../utils/utils'; interface DashboardPromptProps { @@ -154,14 +154,17 @@ const getStyles = () => ({ */ export function ignoreChanges(scene: DashboardScene | null) { const original = scene?.getInitialSaveModel(); - const originalVersion = scene?.getInitialVersion(); + + if (original && isV2Dashboard(original)) { + throw new Error('isV2Dashboard is not implemented'); + } if (!original) { return true; } // Ignore changes if original is unsaved - if (originalVersion === 0) { + if (original.version === 0) { return true; } diff --git a/public/app/features/dashboard-scene/saving/SaveDashboardDrawer.test.tsx b/public/app/features/dashboard-scene/saving/SaveDashboardDrawer.test.tsx index 23b2f38f9b5..7d99dea4247 100644 --- a/public/app/features/dashboard-scene/saving/SaveDashboardDrawer.test.tsx +++ b/public/app/features/dashboard-scene/saving/SaveDashboardDrawer.test.tsx @@ -215,7 +215,7 @@ function setup() { dashboard.setState({ $data: undefined }); const initialSaveModel = transformSceneToSaveModel(dashboard); - dashboard.setInitialSaveModel(initialSaveModel.version, initialSaveModel); + dashboard.setInitialSaveModel(initialSaveModel); cleanUp(); cleanUp = dashboard.activate(); diff --git a/public/app/features/dashboard-scene/scene/DashboardScene.tsx b/public/app/features/dashboard-scene/scene/DashboardScene.tsx index beb1f7118b9..72ebd1747e7 100644 --- a/public/app/features/dashboard-scene/scene/DashboardScene.tsx +++ b/public/app/features/dashboard-scene/scene/DashboardScene.tsx @@ -642,18 +642,13 @@ export class DashboardScene extends SceneObjectBase { return this._serializer.initialSaveModel; } - public getInitialVersion = () => { - return this._serializer.getInitialVersion(); - }; - public getSnapshotUrl = () => { return this._serializer.getSnapshotUrl(); }; /** Hacky temp function until we refactor transformSaveModelToScene a bit */ - public setInitialSaveModel(version: number | undefined, saveModel?: Dashboard | DashboardV2Spec) { + public setInitialSaveModel(saveModel?: Dashboard | DashboardV2Spec) { this._serializer.initialSaveModel = saveModel; - this._serializer.initialVersion = version; } public getTrackingInformation() { diff --git a/public/app/features/dashboard-scene/serialization/DashboardSceneSerializer.test.ts b/public/app/features/dashboard-scene/serialization/DashboardSceneSerializer.test.ts index 08537215573..d5ecf51b795 100644 --- a/public/app/features/dashboard-scene/serialization/DashboardSceneSerializer.test.ts +++ b/public/app/features/dashboard-scene/serialization/DashboardSceneSerializer.test.ts @@ -17,21 +17,6 @@ import { findVizPanelByKey } from '../utils/utils'; import { V1DashboardSerializer, V2DashboardSerializer } from './DashboardSceneSerializer'; describe('DashboardSceneSerializer', () => { - it('should allow retrieving initial dashboard version', () => { - const dashboard = transformSaveModelToScene({ - dashboard: { - title: 'hello', - uid: 'my-uid', - schemaVersion: 30, - version: 10, - }, - meta: {}, - }); - const initialSaveModel = transformSceneToSaveModel(dashboard); - dashboard.setInitialSaveModel(initialSaveModel.version, initialSaveModel); - expect(dashboard.getInitialVersion()).toBe(10); - }); - describe('v1 schema', () => { it('Can detect no changes', () => { const dashboard = setup(); @@ -175,7 +160,7 @@ describe('DashboardSceneSerializer', () => { meta: {}, }); const initialSaveModel = transformSceneToSaveModel(dashboard); - dashboard.setInitialSaveModel(initialSaveModel.version, initialSaveModel); + dashboard.setInitialSaveModel(initialSaveModel); const variable = sceneGraph.lookupVariable('GroupBy', dashboard) as GroupByVariable; variable.setState({ defaultOptions: [{ text: 'Host', value: 'host' }] }); @@ -232,7 +217,7 @@ describe('DashboardSceneSerializer', () => { }); const initialSaveModel = transformSceneToSaveModel(dashboard); - dashboard.setInitialSaveModel(initialSaveModel.version, initialSaveModel); + dashboard.setInitialSaveModel(initialSaveModel); const variable = sceneGraph.lookupVariable('adhoc', dashboard) as AdHocFiltersVariable; variable.setState({ defaultKeys: [{ text: 'Host', value: 'host' }] }); @@ -425,7 +410,7 @@ function setup(options: ScenarioOptions = {}) { }); const initialSaveModel = transformSceneToSaveModel(dashboard); - dashboard.setInitialSaveModel(initialSaveModel.version, initialSaveModel); + dashboard.setInitialSaveModel(initialSaveModel); return dashboard; } diff --git a/public/app/features/dashboard-scene/serialization/DashboardSceneSerializer.ts b/public/app/features/dashboard-scene/serialization/DashboardSceneSerializer.ts index 2a3790810ed..1930fb61dd9 100644 --- a/public/app/features/dashboard-scene/serialization/DashboardSceneSerializer.ts +++ b/public/app/features/dashboard-scene/serialization/DashboardSceneSerializer.ts @@ -17,7 +17,6 @@ export interface DashboardSceneSerializerLike { * The save model which the dashboard scene was originally created from */ initialSaveModel?: T; - initialVersion?: number; getSaveModel: (s: DashboardScene) => T; getSaveAsModel: (s: DashboardScene, options: SaveDashboardAsOptions) => T; getDashboardChangesFromScene: ( @@ -30,7 +29,6 @@ export interface DashboardSceneSerializerLike { ) => DashboardChangeInfo; onSaveComplete(saveModel: T, result: SaveDashboardResponseDTO): void; getTrackingInformation: () => DashboardTrackingInfo | undefined; - getInitialVersion: () => number | undefined; getSnapshotUrl: () => string | undefined; } @@ -46,7 +44,6 @@ interface DashboardTrackingInfo { export class V1DashboardSerializer implements DashboardSceneSerializerLike { initialSaveModel?: Dashboard; - initialVersion?: number | undefined; getSaveModel(s: DashboardScene) { return transformSceneToSaveModel(s); @@ -116,10 +113,6 @@ export class V1DashboardSerializer implements DashboardSceneSerializerLike { initialSaveModel?: DashboardV2Spec; - initialVersion?: number | undefined; getSaveModel(s: DashboardScene) { return transformSceneToSaveModelSchemaV2(s); @@ -154,10 +146,6 @@ export class V2DashboardSerializer implements DashboardSceneSerializerLike i const newState = sceneUtils.cloneSceneObjectState(newDashboardScene.state); dashboard.pauseTrackingChanges(); - dashboard.setInitialSaveModel(rsp.dashboard.version, rsp.dashboard); + dashboard.setInitialSaveModel(rsp.dashboard); dashboard.setState(newState); this.setState({ jsonText: this.getJsonText() });