From d3488becdd4793576e6550c138bf5f12cfe4d879 Mon Sep 17 00:00:00 2001 From: Alexander Zobnin Date: Mon, 24 Dec 2018 16:24:34 +0300 Subject: [PATCH] problems panel: show event duration --- .../components/ProblemTimeline.tsx | 48 +++++++++++++++---- src/sass/_panel-problems.scss | 1 + 2 files changed, 39 insertions(+), 10 deletions(-) diff --git a/src/panel-triggers/components/ProblemTimeline.tsx b/src/panel-triggers/components/ProblemTimeline.tsx index 0ad11ad..36d29fd 100644 --- a/src/panel-triggers/components/ProblemTimeline.tsx +++ b/src/panel-triggers/components/ProblemTimeline.tsx @@ -24,6 +24,11 @@ interface ProblemTimelineState { highlightedEvent?: ZBXEvent | null; highlightedRegion?: number | null; showEventInfo?: boolean; + eventInfo?: EventInfo; +} + +interface EventInfo { + duration?: number; } export default class ProblemTimeline extends PureComponent { @@ -60,12 +65,20 @@ export default class ProblemTimeline extends PureComponent { + handlePointHighlight = (index: number, secondIndex?: number) => { + const event: ZBXEvent = this.sortedEvents[index]; const regionToHighlight = this.getRegionToHighlight(index); + let duration: number; + if (secondIndex !== undefined) { + duration = this.getEventDuration(index, secondIndex); + } this.setState({ highlightedEvent: event, showEventInfo: true, - highlightedRegion: regionToHighlight + highlightedRegion: regionToHighlight, + eventInfo: { + duration + } }); // this.showEventInfo(event); } @@ -88,6 +101,10 @@ export default class ProblemTimeline extends PureComponent Number(e.clock)); this.sortedEvents = events; @@ -112,6 +129,7 @@ export default class ProblemTimeline extends PureComponent @@ -180,6 +198,7 @@ export default class ProblemTimeline extends PureComponent { }; render() { - const { show, className, left } = this.props; - const event = this.props.event; - let infoItems; + const { event, eventInfo, show, className, left } = this.props; + let infoItems, durationItem; if (event) { console.log(event); const ts = moment(Number(event.clock) * 1000); @@ -204,13 +222,23 @@ class TimelineInfoContainer extends PureComponent { {tsFormatted} ]; } + if (eventInfo && eventInfo.duration) { + const duration = eventInfo.duration; + const durationFormatted = moment.utc(duration).format('HH:mm:ss'); + durationItem = duration: {durationFormatted}; + } const containerStyle: React.CSSProperties = { opacity: show ? 1 : 0, left, }; return (
- {infoItems} +
+ {infoItems} +
+
+ {durationItem} +
); } @@ -235,7 +263,6 @@ class TimelineRegions extends PureComponent { const { events, timeRange, width, height, okColor, problemColor, highlightedRegion } = this.props; const { timeFrom, timeTo } = timeRange; const range = timeTo - timeFrom; - console.log(highlightedRegion); let firstItem: React.ReactNode; if (events.length) { @@ -294,7 +321,7 @@ interface TimelinePointsProps { okColor: string; problemColor: string; highlightRegion?: boolean; - onPointHighlight?: (event: ZBXEvent, index?: number) => void; + onPointHighlight?: (index: number, secondIndex?: number) => void; onPointUnHighlight?: () => void; } @@ -326,9 +353,10 @@ class TimelinePoints extends PureComponent