From f5dc4fd1c1274205cd275b65de34bf6d898faf22 Mon Sep 17 00:00:00 2001 From: Alexander Zobnin Date: Thu, 27 Dec 2018 14:27:34 +0300 Subject: [PATCH] problems: add tag filter on tag click --- .../components/ProblemDetails.tsx | 18 +++++++++++++++--- src/panel-triggers/components/Problems.tsx | 12 ++++++++++-- src/panel-triggers/triggers_panel_ctrl.js | 3 +++ 3 files changed, 28 insertions(+), 5 deletions(-) diff --git a/src/panel-triggers/components/ProblemDetails.tsx b/src/panel-triggers/components/ProblemDetails.tsx index c0dec30..a0acdb3 100644 --- a/src/panel-triggers/components/ProblemDetails.tsx +++ b/src/panel-triggers/components/ProblemDetails.tsx @@ -1,6 +1,6 @@ import React, { PureComponent } from 'react'; import * as utils from '../../datasource-zabbix/utils'; -import { Trigger, ZBXItem, ZBXAcknowledge, ZBXHost, ZBXGroup, ZBXEvent, GFTimeRange, RTRow } from '../types'; +import { Trigger, ZBXItem, ZBXAcknowledge, ZBXHost, ZBXGroup, ZBXEvent, GFTimeRange, RTRow, ZBXTag } from '../types'; import { Modal, AckProblemData } from './Modal'; import EventTag from './EventTag'; import Tooltip from './Tooltip/Tooltip'; @@ -11,7 +11,8 @@ interface ProblemDetailsProps extends RTRow { rootWidth: number; timeRange: GFTimeRange; getProblemEvents: (problem: Trigger) => Promise; - onProblemAck: (problem: Trigger, data: AckProblemData) => Promise | any; + onProblemAck?: (problem: Trigger, data: AckProblemData) => Promise | any; + onTagClick?: (tag: ZBXTag, datasource: string) => void; } interface ProblemDetailsState { @@ -37,6 +38,12 @@ export default class ProblemDetails extends PureComponent { + if (this.props.onTagClick) { + this.props.onTagClick(tag, this.props.original.datasource); + } + } + fetchProblemEvents() { const problem = this.props.original; this.props.getProblemEvents(problem) @@ -100,7 +107,12 @@ export default class ProblemDetails extends PureComponent 0 &&
{problem.tags && problem.tags.map(tag => - ) + ) }
} diff --git a/src/panel-triggers/components/Problems.tsx b/src/panel-triggers/components/Problems.tsx index 13a3cbc..4606045 100644 --- a/src/panel-triggers/components/Problems.tsx +++ b/src/panel-triggers/components/Problems.tsx @@ -1,7 +1,7 @@ import React, { PureComponent } from 'react'; import ReactTable from 'react-table'; import * as utils from '../../datasource-zabbix/utils'; -import { ProblemsPanelOptions, Trigger, ZBXEvent, GFTimeRange, RTCell } from '../types'; +import { ProblemsPanelOptions, Trigger, ZBXEvent, GFTimeRange, RTCell, ZBXTag } from '../types'; import EventTag from './EventTag'; import ProblemDetails from './ProblemDetails'; import { AckProblemData } from './Modal'; @@ -12,7 +12,8 @@ export interface ProblemListProps { loading?: boolean; timeRange?: GFTimeRange; getProblemEvents: (ids: string[]) => ZBXEvent[]; - onProblemAck: (problem: Trigger, data: AckProblemData) => void; + onProblemAck?: (problem: Trigger, data: AckProblemData) => void; + onTagClick?: (tag: ZBXTag, datasource: string) => void; } interface ProblemListState { @@ -88,6 +89,12 @@ export class ProblemList extends PureComponent { + if (this.props.onTagClick) { + this.props.onTagClick(tag, datasource); + } + } + render() { // console.log(this.props.problems); const columns = this.buildColumns(); @@ -106,6 +113,7 @@ export class ProblemList extends PureComponent } expanded={this.getExpandedPage(this.state.page)} diff --git a/src/panel-triggers/triggers_panel_ctrl.js b/src/panel-triggers/triggers_panel_ctrl.js index ba1f18d..89f7848 100644 --- a/src/panel-triggers/triggers_panel_ctrl.js +++ b/src/panel-triggers/triggers_panel_ctrl.js @@ -735,6 +735,9 @@ export class TriggerPanelCtrl extends PanelCtrl { onProblemAck: (trigger, data) => { const message = data.message; return ctrl.acknowledgeTrigger(trigger, message); + }, + onTagClick: (tag, datasource) => { + ctrl.addTagFilter(tag, datasource); } }; const problemsReactElem = React.createElement(ProblemList, problemsListProps);