Files
grafana-zabbix/src/panel-triggers/migrations.js
2018-11-16 14:09:40 +03:00

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])));
}