Files
grafana/public/app/features/dashboard-scene/serialization/angularMigration.ts
Torkel Ödegaard 42218fbdbb DashboardScene: Support auto migration for angular panels (#76100)
* DashboardScene: Support auto migration for angular panels

* minor tweak

* Update scenes

* Review fix

* Update
2023-10-10 14:33:58 +02:00

23 lines
962 B
TypeScript

import { PanelModel as PanelModelFromData, PanelPlugin } from '@grafana/data';
import { autoMigrateAngular, PanelModel } from 'app/features/dashboard/state/PanelModel';
export function getAngularPanelMigrationHandler(oldModel: PanelModel) {
return function handleAngularPanelMigrations(panel: PanelModelFromData, plugin: PanelPlugin) {
if (plugin.angularPanelCtrl) {
panel.options = { angularOptions: oldModel.getOptionsToRemember() };
return;
}
if (oldModel.autoMigrateFrom) {
const wasAngular = autoMigrateAngular[oldModel.autoMigrateFrom] != null;
const oldOptions = oldModel.getOptionsToRemember();
const prevPluginId = oldModel.autoMigrateFrom;
if (plugin.onPanelTypeChanged) {
const prevOptions = wasAngular ? { angular: oldOptions } : oldOptions.options;
Object.assign(panel.options, plugin.onPanelTypeChanged(panel, prevPluginId, prevOptions, panel.fieldConfig));
}
}
};
}