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;