From 5986b03a8fc64ae9eaef708894e6fa5f168dfb80 Mon Sep 17 00:00:00 2001 From: Oscar Kilhed Date: Wed, 20 Nov 2024 09:52:52 +0100 Subject: [PATCH] Scenes: Fix angular migrations that are using the targets property on the old panel model (#96626) Fix angular migrations using target --- .../serialization/angularMigration.ts | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/public/app/features/dashboard-scene/serialization/angularMigration.ts b/public/app/features/dashboard-scene/serialization/angularMigration.ts index d92f13cb1ed..606cf8545e4 100644 --- a/public/app/features/dashboard-scene/serialization/angularMigration.ts +++ b/public/app/features/dashboard-scene/serialization/angularMigration.ts @@ -1,4 +1,4 @@ -import { defaults } from 'lodash'; +import { defaults, cloneDeep } from 'lodash'; import { PanelModel as PanelModelFromData, PanelPlugin } from '@grafana/data'; import { autoMigrateAngular, PanelModel } from 'app/features/dashboard/state/PanelModel'; @@ -12,6 +12,17 @@ export function getAngularPanelMigrationHandler(oldModel: PanelModel) { if (!oldModel.options || Object.keys(oldModel.options).length === 0) { defaults(panel, oldModel.getOptionsToRemember()); + + // Some plugins rely on being able to access targets to set up the fieldConfig when migrating from angular. + const targetClone = cloneDeep(oldModel.targets); + Object.defineProperty(panel, 'targets', { + get: function () { + console.warn( + 'Accessing the targets property when migrating a panel plugin is deprecated. Changes to this property will be ignored.' + ); + return targetClone; + }, + }); } if (oldModel.autoMigrateFrom) {