Problems: sorting option
This commit is contained in:
@@ -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,
|
||||
};
|
||||
}
|
||||
|
||||
@@ -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] },
|
||||
|
||||
@@ -87,8 +87,8 @@
|
||||
<label class="gf-form-label width-10">Sort by</label>
|
||||
<div class="gf-form-select-wrapper max-width-8">
|
||||
<select class="gf-form-input"
|
||||
ng-model="ctrl.panel.sortTriggersBy"
|
||||
ng-options="f.text for f in editor.sortByFields track by f.value"
|
||||
ng-model="ctrl.panel.sortProblems"
|
||||
ng-options="f.value as f.text for f in editor.sortingOptions"
|
||||
ng-change="ctrl.render()">
|
||||
</select>
|
||||
</div>
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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([
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user