57 lines
1.4 KiB
JavaScript
57 lines
1.4 KiB
JavaScript
import _ from 'lodash';
|
|
import {DEFAULT_TARGET} from './triggers_panel_ctrl';
|
|
|
|
// Actual schema version
|
|
export const CURRENT_SCHEMA_VERSION = 5;
|
|
|
|
export function migratePanelSchema(panel) {
|
|
if (isEmptyPanel(panel)) {
|
|
delete panel.targets;
|
|
return panel;
|
|
}
|
|
|
|
const schemaVersion = getSchemaVersion(panel);
|
|
panel.schemaVersion = CURRENT_SCHEMA_VERSION;
|
|
|
|
if (schemaVersion < 2) {
|
|
panel.datasources = [panel.datasource];
|
|
panel.targets = {};
|
|
panel.targets[panel.datasources[0]] = panel.triggers;
|
|
|
|
// delete old props
|
|
delete panel.triggers;
|
|
delete panel.datasource;
|
|
}
|
|
|
|
if (schemaVersion < 3) {
|
|
// delete old props
|
|
delete panel.lastChangeField;
|
|
delete panel.ageField;
|
|
delete panel.infoField;
|
|
delete panel.scroll;
|
|
delete panel.hideHostsInMaintenance;
|
|
}
|
|
|
|
if (schemaVersion < 5) {
|
|
if (panel.targets && !_.isEmpty(panel.targets)) {
|
|
_.each(panel.targets, (target) => {
|
|
_.defaultsDeep(target, DEFAULT_TARGET);
|
|
});
|
|
}
|
|
}
|
|
|
|
return panel;
|
|
}
|
|
|
|
function getSchemaVersion(panel) {
|
|
return panel.schemaVersion || 1;
|
|
}
|
|
|
|
function isEmptyPanel(panel) {
|
|
return !panel.datasource && !panel.datasources && !panel.triggers && isEmptyTargets(panel.targets);
|
|
}
|
|
|
|
function isEmptyTargets(targets) {
|
|
return !targets || (_.isArray(targets) && (targets.length === 0 || targets.length === 1 && _.isEmpty(targets[0])));
|
|
}
|