diff --git a/src/datasource-zabbix/datasource.ts b/src/datasource-zabbix/datasource.ts index 01faaf3..564bda9 100644 --- a/src/datasource-zabbix/datasource.ts +++ b/src/datasource-zabbix/datasource.ts @@ -477,6 +477,7 @@ export class ZabbixDatasource extends DataSourceApi 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)); diff --git a/src/datasource-zabbix/migrations.ts b/src/datasource-zabbix/migrations.ts index f786ec9..ecd1846 100644 --- a/src/datasource-zabbix/migrations.ts +++ b/src/datasource-zabbix/migrations.ts @@ -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; } diff --git a/src/datasource-zabbix/problemsHandler.ts b/src/datasource-zabbix/problemsHandler.ts index aa0faf6..b04ac1a 100644 --- a/src/datasource-zabbix/problemsHandler.ts +++ b/src/datasource-zabbix/problemsHandler.ts @@ -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 = { name: 'Problems', @@ -180,6 +189,7 @@ const problemsHandler = { setMaintenanceStatus, setAckButtonStatus, filterTriggersPre, + sortProblems, toDataFrame, joinTriggersWithProblems, joinTriggersWithEvents, diff --git a/src/datasource-zabbix/query.controller.ts b/src/datasource-zabbix/query.controller.ts index 3efe107..9914871 100644 --- a/src/datasource-zabbix/query.controller.ts +++ b/src/datasource-zabbix/query.controller.ts @@ -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 = [ diff --git a/src/panel-triggers/triggers_panel_ctrl.ts b/src/panel-triggers/triggers_panel_ctrl.ts index 52769ef..1c5973e 100644 --- a/src/panel-triggers/triggers_panel_ctrl.ts +++ b/src/panel-triggers/triggers_panel_ctrl.ts @@ -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) {