Commit 16a1d2f7 by Torkel Ödegaard Committed by GitHub

TextPanel: Fixes problems where text panel would show old content (#28643)

parent 5a83fc57
......@@ -8,12 +8,30 @@ describe('textPanelMigrationHandler', () => {
const panel: any = {
content: '<span>Hello World<span>',
mode: 'html',
options: {},
};
const result = textPanelMigrationHandler(panel);
expect(result.content).toEqual('<span>Hello World<span>');
expect(result.mode).toEqual('html');
expect(panel.content).toBeUndefined();
expect(panel.mode).toBeUndefined();
});
});
describe('when invoked and previous version 7.1 or later', () => {
it('then not migrate options', () => {
const panel: any = {
content: '<span>Hello World<span>',
mode: 'html',
options: { content: 'New content' },
pluginVersion: '7.1.0',
};
const result = textPanelMigrationHandler(panel);
expect(result.content).toEqual('New content');
});
});
......
......@@ -2,19 +2,27 @@ import { PanelModel } from '@grafana/data';
import { TextMode, TextOptions } from './types';
export const textPanelMigrationHandler = (panel: PanelModel<TextOptions>): Partial<TextOptions> => {
const previousVersion = parseFloat(panel.pluginVersion || '6.1');
let options = panel.options;
// Migrates old Angular based text panel props to new props
if (panel.hasOwnProperty('content') && panel.hasOwnProperty('mode')) {
const oldTextPanel: { content: string; mode: string } = (panel as unknown) as any;
const oldTextPanel: any = panel as any;
const content = oldTextPanel.content;
const mode = (oldTextPanel.mode as unknown) as TextMode;
const mode = oldTextPanel.mode as TextMode;
delete oldTextPanel.content;
delete oldTextPanel.mode;
return { content, mode };
if (previousVersion < 7.1) {
options = { content, mode };
}
}
// The 'text' mode has been removed so we need to update any panels still using it to markdown
if (panel.options.mode !== 'html' && panel.options.mode !== 'markdown') {
return { content: panel.options.content, mode: 'markdown' };
if (options.mode !== 'html' && options.mode !== 'markdown') {
options = { ...options, mode: 'markdown' };
}
return panel.options;
return options;
};
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment