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.setMaintenanceStatus(problems))
.then(problems => problemsHandler.setAckButtonStatus(problems, showAckButton)) .then(problems => problemsHandler.setAckButtonStatus(problems, showAckButton))
.then(problems => problemsHandler.filterTriggersPre(problems, replacedTarget)) .then(problems => problemsHandler.filterTriggersPre(problems, replacedTarget))
.then(problems => problemsHandler.sortProblems(problems, target))
.then(problems => problemsHandler.addTriggerDataSource(problems, target)) .then(problems => problemsHandler.addTriggerDataSource(problems, target))
.then(problems => problemsHandler.addTriggerHostProxy(problems, proxies)); .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) { export function migrate(target) {
target.resultFormat = target.resultFormat || 'time_series'; target.resultFormat = target.resultFormat || 'time_series';
target = fixTargetGroup(target); target = fixTargetGroup(target);
@@ -66,6 +72,7 @@ export function migrate(target) {
migratePercentileAgg(target); migratePercentileAgg(target);
migrateQueryType(target); migrateQueryType(target);
migrateSLA(target); migrateSLA(target);
migrateProblemSort(target);
return 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 { export function toDataFrame(problems: any[]): DataFrame {
const problemsField: Field<any> = { const problemsField: Field<any> = {
name: 'Problems', name: 'Problems',
@@ -180,6 +189,7 @@ const problemsHandler = {
setMaintenanceStatus, setMaintenanceStatus,
setAckButtonStatus, setAckButtonStatus,
filterTriggersPre, filterTriggersPre,
sortProblems,
toDataFrame, toDataFrame,
joinTriggersWithProblems, joinTriggersWithProblems,
joinTriggersWithEvents, joinTriggersWithEvents,

View File

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

View File

@@ -212,13 +212,13 @@ export class TriggerPanelCtrl extends MetricsPanelCtrl {
return problemsList; return problemsList;
} }
sortTriggers(triggerList) { sortTriggers(problems: ProblemDTO[]) {
if (this.panel.sortProblems === 'priority') { 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') { } 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) { formatTrigger(zabbixTrigger) {