[v11.3.x] Scenes: Fix angular migrations that are using the targets property on the old panel model (#96831)

Scenes: Fix angular migrations that are using the targets property on the old panel model (#96626)

Fix angular migrations using target

(cherry picked from commit 5986b03a8f)

Co-authored-by: Oscar Kilhed <oscar.kilhed@grafana.com>
This commit is contained in:
grafana-delivery-bot[bot]
2024-11-21 13:32:12 +01:00
committed by GitHub
co-authored by Oscar Kilhed
parent dfb1f9a3c1
commit e3367ccf9a
@@ -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) {