Problems: more work on options migration
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
import _ from 'lodash';
|
||||
import { getNextRefIdChar } from './utils';
|
||||
import { ShowProblemTypes } from '../datasource-zabbix/types';
|
||||
|
||||
// Actual schema version
|
||||
export const CURRENT_SCHEMA_VERSION = 8;
|
||||
@@ -19,9 +20,7 @@ export const getDefaultTarget = (targets?) => {
|
||||
export function getDefaultTargetOptions() {
|
||||
return {
|
||||
hostsInMaintenance: true,
|
||||
showTriggers: 'all triggers',
|
||||
sortTriggersBy: { text: 'last change', value: 'lastchange' },
|
||||
showEvents: { text: 'Problems', value: 1 },
|
||||
};
|
||||
}
|
||||
|
||||
@@ -99,14 +98,45 @@ export function migratePanelSchema(panel) {
|
||||
for (const target of panel.targets) {
|
||||
// set queryType to PROBLEMS
|
||||
target.queryType = 5;
|
||||
target.options = getDefaultTargetOptions();
|
||||
_.defaults(target, {tags: {filter: ""}});
|
||||
target.showProblems = migrateShowEvents(panel);
|
||||
target.options = migrateOptions(panel);
|
||||
_.defaults(target.options, getDefaultTargetOptions());
|
||||
_.defaults(target, { tags: { filter: "" } });
|
||||
}
|
||||
|
||||
delete panel.showEvents;
|
||||
delete panel.showTriggers;
|
||||
delete panel.hostsInMaintenance;
|
||||
}
|
||||
|
||||
return panel;
|
||||
}
|
||||
|
||||
function migrateOptions(panel) {
|
||||
let acknowledged = 2;
|
||||
if (panel.showTriggers === 'acknowledged') {
|
||||
acknowledged = 1;
|
||||
} else if (panel.showTriggers === 'unacknowledged') {
|
||||
acknowledged = 0;
|
||||
}
|
||||
|
||||
return {
|
||||
hostsInMaintenance: panel.hostsInMaintenance,
|
||||
sortTriggersBy: panel.sortTriggersBy,
|
||||
acknowledged: acknowledged,
|
||||
};
|
||||
}
|
||||
|
||||
function migrateShowEvents(panel) {
|
||||
if (panel.showEvents?.value === 1) {
|
||||
return ShowProblemTypes.Problems;
|
||||
} else if (panel.showEvents?.value === 0 || panel.showEvents?.value?.length > 1) {
|
||||
return ShowProblemTypes.History;
|
||||
} else {
|
||||
return ShowProblemTypes.Problems;
|
||||
}
|
||||
}
|
||||
|
||||
function getSchemaVersion(panel) {
|
||||
return panel.schemaVersion || 1;
|
||||
}
|
||||
|
||||
@@ -34,8 +34,9 @@ describe('Triggers Panel schema migration', () => {
|
||||
ageField: true,
|
||||
infoField: true,
|
||||
limit: 10,
|
||||
showTriggers: 'all triggers',
|
||||
showTriggers: 'unacknowledged',
|
||||
hideHostsInMaintenance: false,
|
||||
hostsInMaintenance: false,
|
||||
sortTriggersBy: { text: 'last change', value: 'lastchange' },
|
||||
showEvents: { text: 'Problems', value: '1' },
|
||||
triggerSeverity: DEFAULT_SEVERITY,
|
||||
@@ -61,12 +62,12 @@ describe('Triggers Panel schema migration', () => {
|
||||
{
|
||||
...DEFAULT_TARGET,
|
||||
queryType: 5,
|
||||
showProblems: 'problems',
|
||||
options: {
|
||||
hostsInMaintenance: true,
|
||||
showTriggers: 'all triggers',
|
||||
hostsInMaintenance: false,
|
||||
acknowledged: 0,
|
||||
sortTriggersBy: { text: 'last change', value: 'lastchange' },
|
||||
showEvents: { text: 'Problems', value: 1 },
|
||||
}
|
||||
},
|
||||
}
|
||||
],
|
||||
ageField: true,
|
||||
|
||||
@@ -20,6 +20,7 @@ export const DEFAULT_TARGET = {
|
||||
trigger: {filter: ""},
|
||||
tags: {filter: ""},
|
||||
proxy: {filter: ""},
|
||||
showProblems: 'problems',
|
||||
};
|
||||
|
||||
export const DEFAULT_SEVERITY = [
|
||||
@@ -41,7 +42,6 @@ export const PANEL_DEFAULTS = {
|
||||
hostField: true,
|
||||
hostTechNameField: false,
|
||||
hostGroups: false,
|
||||
hostProxy: false,
|
||||
showTags: true,
|
||||
statusField: true,
|
||||
statusIcon: false,
|
||||
@@ -50,11 +50,8 @@ export const PANEL_DEFAULTS = {
|
||||
descriptionField: true,
|
||||
descriptionAtNewLine: false,
|
||||
// Options
|
||||
hostsInMaintenance: true,
|
||||
showTriggers: 'all triggers',
|
||||
sortTriggersBy: { text: 'last change', value: 'lastchange' },
|
||||
showEvents: { text: 'Problems', value: 1 },
|
||||
limit: 100,
|
||||
limit: null,
|
||||
// View options
|
||||
layout: 'table',
|
||||
fontSize: '100%',
|
||||
@@ -175,7 +172,9 @@ export class TriggerPanelCtrl extends MetricsPanelCtrl {
|
||||
triggers = this.sortTriggers(triggers);
|
||||
|
||||
// Limit triggers number
|
||||
triggers = triggers.slice(0, this.panel.limit || PANEL_DEFAULTS.limit);
|
||||
if (this.panel.limit) {
|
||||
triggers = triggers.slice(0, this.panel.limit);
|
||||
}
|
||||
|
||||
this.renderData = triggers;
|
||||
|
||||
@@ -198,11 +197,6 @@ export class TriggerPanelCtrl extends MetricsPanelCtrl {
|
||||
});
|
||||
}
|
||||
|
||||
// Filter by maintenance status
|
||||
if (!this.panel.hostsInMaintenance) {
|
||||
triggerList = _.filter(triggerList, (trigger) => trigger.maintenance === false);
|
||||
}
|
||||
|
||||
// Filter triggers by severity
|
||||
triggerList = _.filter(triggerList, trigger => {
|
||||
if (trigger.lastEvent && trigger.lastEvent.severity) {
|
||||
|
||||
Reference in New Issue
Block a user