diff --git a/src/datasource-zabbix/partials/query.editor.html b/src/datasource-zabbix/partials/query.editor.html
index bc39f10..fe26b4b 100644
--- a/src/datasource-zabbix/partials/query.editor.html
+++ b/src/datasource-zabbix/partials/query.editor.html
@@ -301,8 +301,8 @@
diff --git a/src/datasource-zabbix/query.controller.js b/src/datasource-zabbix/query.controller.js
index 0891feb..eecc31a 100644
--- a/src/datasource-zabbix/query.controller.js
+++ b/src/datasource-zabbix/query.controller.js
@@ -25,10 +25,6 @@ function getTargetDefaults() {
options: {
showDisabledItems: false,
skipEmptyValues: false,
- // Problems
- hostsInMaintenance: false,
- hostProxy: false,
- sortTriggersBy: { text: 'last change', value: 'lastchange' },
},
table: {
'skipEmptyValues': false
@@ -46,7 +42,10 @@ function getProblemsTargetDefaults() {
return {
showProblems: ShowProblemTypes.Problems,
options: {
+ sortTriggersBy: 'default',
acknowledged: 2,
+ hostsInMaintenance: false,
+ hostProxy: false,
},
};
}
@@ -101,8 +100,9 @@ export class ZabbixQueryController extends QueryCtrl {
];
this.sortByFields = [
- { text: 'last change', value: 'lastchange' },
- { text: 'severity', value: 'priority' }
+ { text: 'Default', value: 'default' },
+ { text: 'Last change', value: 'lastchange' },
+ { text: 'Severity', value: 'priority' },
];
this.showEventsFields = [
diff --git a/src/panel-triggers/migrations.ts b/src/panel-triggers/migrations.ts
index e737180..8b83b32 100644
--- a/src/panel-triggers/migrations.ts
+++ b/src/panel-triggers/migrations.ts
@@ -20,7 +20,6 @@ export const getDefaultTarget = (targets?) => {
export function getDefaultTargetOptions() {
return {
hostsInMaintenance: true,
- sortTriggersBy: { text: 'last change', value: 'lastchange' },
};
}
@@ -100,13 +99,17 @@ export function migratePanelSchema(panel) {
target.queryType = 5;
target.showProblems = migrateShowEvents(panel);
target.options = migrateOptions(panel);
+
_.defaults(target.options, getDefaultTargetOptions());
_.defaults(target, { tags: { filter: "" } });
}
+ panel.sortProblems = panel.sortTriggersBy?.value === 'priority' ? 'priority' : 'lastchange';
+
delete panel.showEvents;
delete panel.showTriggers;
delete panel.hostsInMaintenance;
+ delete panel.sortTriggersBy;
}
return panel;
@@ -122,7 +125,7 @@ function migrateOptions(panel) {
return {
hostsInMaintenance: panel.hostsInMaintenance,
- sortTriggersBy: panel.sortTriggersBy,
+ sortProblems: panel.sortTriggersBy?.value === 'priority' ? 'priority' : 'default',
acknowledged: acknowledged,
};
}
diff --git a/src/panel-triggers/options_tab.js b/src/panel-triggers/options_tab.js
index acf7c50..c67521f 100644
--- a/src/panel-triggers/options_tab.js
+++ b/src/panel-triggers/options_tab.js
@@ -29,10 +29,13 @@ class TriggerPanelOptionsCtrl {
'unacknowledged',
'acknowledged'
];
- this.sortByFields = [
- { text: 'last change', value: 'lastchange' },
- { text: 'severity', value: 'priority' }
+
+ this.sortingOptions = [
+ { text: 'Default', value: 'default' },
+ { text: 'Last change', value: 'lastchange' },
+ { text: 'Severity', value: 'priority' },
];
+
this.showEventsFields = [
{ text: 'All', value: [0,1] },
{ text: 'OK', value: [0] },
diff --git a/src/panel-triggers/partials/options_tab.html b/src/panel-triggers/partials/options_tab.html
index 91d2a9f..2e44a7a 100644
--- a/src/panel-triggers/partials/options_tab.html
+++ b/src/panel-triggers/partials/options_tab.html
@@ -87,8 +87,8 @@
diff --git a/src/panel-triggers/specs/migrations.spec.ts b/src/panel-triggers/specs/migrations.spec.ts
index e0d52ae..10336ec 100644
--- a/src/panel-triggers/specs/migrations.spec.ts
+++ b/src/panel-triggers/specs/migrations.spec.ts
@@ -66,10 +66,11 @@ describe('Triggers Panel schema migration', () => {
options: {
hostsInMaintenance: false,
acknowledged: 0,
- sortTriggersBy: { text: 'last change', value: 'lastchange' },
+ sortProblems: 'default',
},
}
],
+ sortProblems: 'lastchange',
ageField: true,
statusField: false,
severityField: false,
diff --git a/src/panel-triggers/specs/panel_ctrl.spec.ts b/src/panel-triggers/specs/panel_ctrl.spec.ts
index e73fc00..9508a9c 100644
--- a/src/panel-triggers/specs/panel_ctrl.spec.ts
+++ b/src/panel-triggers/specs/panel_ctrl.spec.ts
@@ -15,7 +15,12 @@ describe('TriggerPanelCtrl', () => {
let createPanelCtrl: () => any;
beforeEach(() => {
- ctx = { scope: { panel: PANEL_DEFAULTS } };
+ ctx = { scope: {
+ panel: {
+ ...PANEL_DEFAULTS,
+ sortProblems: 'lastchange',
+ }
+ }};
ctx.scope.panel.targets = [{
...DEFAULT_TARGET,
datasource: 'zabbix_default',
@@ -84,7 +89,7 @@ describe('TriggerPanelCtrl', () => {
});
it('should sort triggers by severity', (done) => {
- ctx.panelCtrl.panel.sortTriggersBy = { text: 'severity', value: 'priority' };
+ ctx.panelCtrl.panel.sortProblems = 'priority';
ctx.panelCtrl.onDataFramesReceived(ctx.dataFramesReceived).then(() => {
const trigger_ids = _.map(ctx.panelCtrl.renderData, 'triggerid');
expect(trigger_ids).toEqual([
diff --git a/src/panel-triggers/triggers_panel_ctrl.ts b/src/panel-triggers/triggers_panel_ctrl.ts
index 6c8b65f..12bee2d 100644
--- a/src/panel-triggers/triggers_panel_ctrl.ts
+++ b/src/panel-triggers/triggers_panel_ctrl.ts
@@ -50,7 +50,7 @@ export const PANEL_DEFAULTS = {
descriptionField: true,
descriptionAtNewLine: false,
// Options
- sortTriggersBy: { text: 'last change', value: 'lastchange' },
+ sortProblems: 'lastchange',
limit: null,
// View options
layout: 'table',
@@ -146,6 +146,9 @@ export class TriggerPanelCtrl extends MetricsPanelCtrl {
onRender() {
this.range = this.timeSrv.timeRange();
+ if (this.renderData) {
+ this.renderProblems(this.renderData);
+ }
}
setPanelError(err, defaultError = "Request Error") {
@@ -210,9 +213,9 @@ export class TriggerPanelCtrl extends MetricsPanelCtrl {
}
sortTriggers(triggerList) {
- if (this.panel.sortTriggersBy.value === 'priority') {
+ if (this.panel.sortProblems === 'priority') {
triggerList = _.orderBy(triggerList, ['priority', 'lastchangeUnix', 'triggerid'], ['desc', 'desc', 'desc']);
- } else {
+ } else if (this.panel.sortProblems === 'lastchange') {
triggerList = _.orderBy(triggerList, ['lastchangeUnix', 'priority', 'triggerid'], ['desc', 'desc', 'desc']);
}
return triggerList;