From c7c896d71a155cc8369f4ab738671d83cc514b0e Mon Sep 17 00:00:00 2001 From: Alexander Zobnin Date: Thu, 27 Dec 2018 17:05:49 +0300 Subject: [PATCH] problems: handle page size change --- src/panel-triggers/components/Problems.tsx | 19 ++++++++++++++++++- src/panel-triggers/triggers_panel_ctrl.js | 12 ++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/src/panel-triggers/components/Problems.tsx b/src/panel-triggers/components/Problems.tsx index acfe604..b722f66 100644 --- a/src/panel-triggers/components/Problems.tsx +++ b/src/panel-triggers/components/Problems.tsx @@ -1,6 +1,7 @@ import React, { PureComponent } from 'react'; import ReactTable from 'react-table'; import classNames from 'classnames'; +import _ from 'lodash'; import * as utils from '../../datasource-zabbix/utils'; import { ProblemsPanelOptions, Trigger, ZBXEvent, GFTimeRange, RTCell, ZBXTag } from '../types'; import EventTag from './EventTag'; @@ -12,10 +13,12 @@ export interface ProblemListProps { panelOptions: ProblemsPanelOptions; loading?: boolean; timeRange?: GFTimeRange; + pageSize?: number; fontSize?: number; getProblemEvents: (ids: string[]) => ZBXEvent[]; onProblemAck?: (problem: Trigger, data: AckProblemData) => void; onTagClick?: (tag: ZBXTag, datasource: string) => void; + onPageSizeChange?: (pageSize: number, pageIndex: number) => void; } interface ProblemListState { @@ -43,6 +46,12 @@ export class ProblemList extends PureComponent { + if (this.props.onPageSizeChange) { + this.props.onPageSizeChange(pageSize, pageIndex); + } + } + buildColumns() { const result = []; const options = this.props.panelOptions; @@ -101,8 +110,13 @@ export class ProblemList extends PureComponent @@ -110,6 +124,8 @@ export class ProblemList extends PureComponent this.setState({ page })} + onPageSizeChange={this.handlePageSizeChange} /> ); diff --git a/src/panel-triggers/triggers_panel_ctrl.js b/src/panel-triggers/triggers_panel_ctrl.js index b5cf571..72156a4 100644 --- a/src/panel-triggers/triggers_panel_ctrl.js +++ b/src/panel-triggers/triggers_panel_ctrl.js @@ -543,6 +543,14 @@ export class TriggerPanelCtrl extends PanelCtrl { return this.currentTriggersPage; } + handlePageSizeChange(pageSize, pageIndex) { + this.panel.pageSize = pageSize; + this.pageIndex = pageIndex; + this.scope.$apply(() => { + this.render(); + }); + } + formatHostName(trigger) { let host = ""; if (this.panel.hostField && this.panel.hostTechNameField) { @@ -727,6 +735,8 @@ export class TriggerPanelCtrl extends PanelCtrl { const fontSize = parseInt(panel.fontSize.slice(0, panel.fontSize.length - 1)); const fontSizeProp = fontSize && fontSize !== 100 ? fontSize : null; + const pageSize = panel.pageSize || 10; + let panelOptions = {}; for (let prop in PANEL_DEFAULTS) { panelOptions[prop] = ctrl.panel[prop]; @@ -736,8 +746,10 @@ export class TriggerPanelCtrl extends PanelCtrl { panelOptions, timeRange: { timeFrom, timeTo }, loading: ctrl.loading, + pageSize: pageSize, fontSize: fontSizeProp, getProblemEvents: ctrl.getProblemEvents.bind(ctrl), + onPageSizeChange: ctrl.handlePageSizeChange.bind(ctrl), onProblemAck: (trigger, data) => { const message = data.message; return ctrl.acknowledgeTrigger(trigger, message);