Problems: fix sorting by severity, fixes #921

This commit is contained in:
Alexander Zobnin
2020-08-06 13:28:21 +03:00
parent cf7f864112
commit 83077f6723
5 changed files with 23 additions and 5 deletions

View File

@@ -477,6 +477,7 @@ export class ZabbixDatasource extends DataSourceApi<ZabbixMetricsQuery, ZabbixDS
.then(problems => problemsHandler.setMaintenanceStatus(problems))
.then(problems => problemsHandler.setAckButtonStatus(problems, showAckButton))
.then(problems => problemsHandler.filterTriggersPre(problems, replacedTarget))
.then(problems => problemsHandler.sortProblems(problems, target))
.then(problems => problemsHandler.addTriggerDataSource(problems, target))
.then(problems => problemsHandler.addTriggerHostProxy(problems, proxies));

View File

@@ -57,6 +57,12 @@ function migrateSLA(target) {
}
}
function migrateProblemSort(target) {
if (target.options?.sortProblems === 'priority') {
target.options.sortProblems = 'severity';
}
}
export function migrate(target) {
target.resultFormat = target.resultFormat || 'time_series';
target = fixTargetGroup(target);
@@ -66,6 +72,7 @@ export function migrate(target) {
migratePercentileAgg(target);
migrateQueryType(target);
migrateSLA(target);
migrateProblemSort(target);
return target;
}

View File

@@ -157,6 +157,15 @@ function filterTriggers(triggers, triggerFilter) {
}
}
export function sortProblems(problems: ProblemDTO[], target) {
if (target.options?.sortProblems === 'severity') {
problems = _.orderBy(problems, ['severity', 'eventid'], ['desc', 'desc']);
} else if (target.options?.sortProblems === 'lastchange') {
problems = _.orderBy(problems, ['timestamp', 'eventid'], ['desc', 'desc']);
}
return problems;
}
export function toDataFrame(problems: any[]): DataFrame {
const problemsField: Field<any> = {
name: 'Problems',
@@ -180,6 +189,7 @@ const problemsHandler = {
setMaintenanceStatus,
setAckButtonStatus,
filterTriggersPre,
sortProblems,
toDataFrame,
joinTriggersWithProblems,
joinTriggersWithEvents,

View File

@@ -161,7 +161,7 @@ export class ZabbixQueryController extends QueryCtrl {
this.sortByFields = [
{ text: 'Default', value: 'default' },
{ text: 'Last change', value: 'lastchange' },
{ text: 'Severity', value: 'priority' },
{ text: 'Severity', value: 'severity' },
];
this.showEventsFields = [

View File

@@ -212,13 +212,13 @@ export class TriggerPanelCtrl extends MetricsPanelCtrl {
return problemsList;
}
sortTriggers(triggerList) {
sortTriggers(problems: ProblemDTO[]) {
if (this.panel.sortProblems === 'priority') {
triggerList = _.orderBy(triggerList, ['priority', 'timestamp', 'eventid'], ['desc', 'desc', 'desc']);
problems = _.orderBy(problems, ['severity', 'timestamp', 'eventid'], ['desc', 'desc', 'desc']);
} else if (this.panel.sortProblems === 'lastchange') {
triggerList = _.orderBy(triggerList, ['timestamp', 'priority', 'eventid'], ['desc', 'desc', 'desc']);
problems = _.orderBy(problems, ['timestamp', 'severity', 'eventid'], ['desc', 'desc', 'desc']);
}
return triggerList;
return problems;
}
formatTrigger(zabbixTrigger) {