diff --git a/src/panel-triggers/components/AlertList/AlertCard.tsx b/src/panel-triggers/components/AlertList/AlertCard.tsx index 87eaf9d..495ed20 100644 --- a/src/panel-triggers/components/AlertList/AlertCard.tsx +++ b/src/panel-triggers/components/AlertList/AlertCard.tsx @@ -3,7 +3,7 @@ import classNames from 'classnames'; import _ from 'lodash'; import moment from 'moment'; import { isNewProblem, formatLastChange } from '../../utils'; -import { ProblemsPanelOptions, ZBXTrigger, ZBXTag } from '../../types'; +import { ProblemsPanelOptions, ZBXTrigger, TriggerSeverity, ZBXTag } from '../../types'; import { AckProblemData, Modal } from '.././Modal'; import EventTag from '../EventTag'; import Tooltip from '.././Tooltip/Tooltip'; @@ -59,7 +59,13 @@ export default class AlertCard extends PureComponent 1; const cardClass = classNames('alert-rule-item', 'zbx-trigger-card', { 'zbx-trigger-highlighted': panelOptions.highlightBackground }); const descriptionClass = classNames('alert-rule-item__text', { 'zbx-description--newline': panelOptions.descriptionAtNewLine }); - const severityDesc = _.find(panelOptions.triggerSeverity, s => s.priority === Number(problem.priority)); + + let severityDesc: TriggerSeverity; + severityDesc = _.find(panelOptions.triggerSeverity, s => s.priority === Number(problem.priority)); + if (problem.lastEvent && problem.lastEvent.severity) { + severityDesc = _.find(panelOptions.triggerSeverity, s => s.priority === Number(problem.lastEvent.severity)); + } + const lastchange = formatLastChange(problem.lastchangeUnix, panelOptions.customLastChangeFormat && panelOptions.lastChangeFormat); const age = moment.unix(problem.lastchangeUnix).fromNow(true); diff --git a/src/panel-triggers/components/Problems/Problems.tsx b/src/panel-triggers/components/Problems/Problems.tsx index 627d99b..d603671 100644 --- a/src/panel-triggers/components/Problems/Problems.tsx +++ b/src/panel-triggers/components/Problems/Problems.tsx @@ -179,7 +179,13 @@ export default class ProblemList extends PureComponent, problemSeverityDesc: TriggerSeverity[], markAckEvents?: boolean, ackEventColor?: string) { const problem = props.original; let color: string; - const severityDesc = _.find(problemSeverityDesc, s => s.priority === Number(props.original.priority)); + + let severityDesc: TriggerSeverity; + severityDesc = _.find(problemSeverityDesc, s => s.priority === Number(props.original.priority)); + if (problem.lastEvent && problem.lastEvent.severity) { + severityDesc = _.find(problemSeverityDesc, s => s.priority === Number(problem.lastEvent.severity)); + } + color = severityDesc.color; // Mark acknowledged triggers with different color diff --git a/src/panel-triggers/triggers_panel_ctrl.js b/src/panel-triggers/triggers_panel_ctrl.js index 23c6011..103d918 100644 --- a/src/panel-triggers/triggers_panel_ctrl.js +++ b/src/panel-triggers/triggers_panel_ctrl.js @@ -398,7 +398,11 @@ export class TriggerPanelCtrl extends PanelCtrl { // Filter triggers by severity triggerList = _.filter(triggerList, trigger => { - return this.panel.triggerSeverity[trigger.priority].show; + if (trigger.lastEvent && trigger.lastEvent.severity) { + return this.panel.triggerSeverity[trigger.lastEvent.severity].show; + } else { + return this.panel.triggerSeverity[trigger.priority].show; + } }); return triggerList; diff --git a/src/panel-triggers/types.ts b/src/panel-triggers/types.ts index ffa9e65..26dd38b 100644 --- a/src/panel-triggers/types.ts +++ b/src/panel-triggers/types.ts @@ -140,6 +140,7 @@ export interface ZBXEvent { object?: string; objectid?: string; acknowledged?: string; + severity?: string; hosts?: ZBXHost[]; acknowledges?: ZBXAcknowledge[]; }