Angular: auto-migrate graph panel when angular is disabled (#59247)

This commit is contained in:
Ryan McKinley 2022-11-23 13:32:52 -08:00 committed by GitHub
parent 5fe35e4860
commit 5888f53aab
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 20 additions and 2 deletions

View File

@ -37,6 +37,7 @@ jest.mock('@grafana/runtime', () => ({
featureToggles: {
newVariables: false,
},
angularSupportEnabled: true,
},
}));

View File

@ -237,11 +237,17 @@ export class PanelModel implements DataConfigSource, IPanelModel {
switch (this.type) {
case 'graph':
if (config?.featureToggles?.autoMigrateGraphPanels) {
if (config.featureToggles?.autoMigrateGraphPanels || !config.angularSupportEnabled) {
this.autoMigrateFrom = this.type;
this.type = 'timeseries';
}
break;
case 'table-old':
if (!config.angularSupportEnabled) {
this.autoMigrateFrom = this.type;
this.type = 'table';
}
break;
case 'heatmap-new':
this.autoMigrateFrom = this.type;
this.type = 'heatmap';
@ -416,7 +422,7 @@ export class PanelModel implements DataConfigSource, IPanelModel {
const version = getPluginVersion(plugin);
if (this.autoMigrateFrom) {
const wasAngular = this.autoMigrateFrom === 'graph';
const wasAngular = this.autoMigrateFrom === 'graph' || this.autoMigrateFrom === 'table-old';
this.callPanelTypeChangeHandler(
plugin,
this.autoMigrateFrom,

View File

@ -7,6 +7,7 @@ import angular from 'angular';
import { configure } from 'enzyme';
import { EventBusSrv } from '@grafana/data';
import { GrafanaBootConfig } from '@grafana/runtime';
import 'blob-polyfill';
import 'mutationobserver-shim';
import './mocks/workers';
@ -18,6 +19,16 @@ const testAppEvents = new EventBusSrv();
const global = window as any;
global.$ = global.jQuery = $;
// mock the default window.grafanaBootData settings
const settings: Partial<GrafanaBootConfig> = {
angularSupportEnabled: true,
};
global.grafanaBootData = {
settings,
user: {},
navTree: [],
};
// https://jestjs.io/docs/manual-mocks#mocking-methods-which-are-not-implemented-in-jsdom
Object.defineProperty(global, 'matchMedia', {
writable: true,