From c49922a826ad87ca12b6dd64ee7188202ae08271 Mon Sep 17 00:00:00 2001 From: Alexander Zobnin Date: Mon, 17 Dec 2018 11:03:04 +0300 Subject: [PATCH] problems timeline: fix regions rendering in firefox --- .../components/ProblemTimeline.tsx | 104 +++++++++++------- src/sass/_panel-problems.scss | 7 +- 2 files changed, 65 insertions(+), 46 deletions(-) diff --git a/src/panel-triggers/components/ProblemTimeline.tsx b/src/panel-triggers/components/ProblemTimeline.tsx index 44db47a..9fd8c7f 100644 --- a/src/panel-triggers/components/ProblemTimeline.tsx +++ b/src/panel-triggers/components/ProblemTimeline.tsx @@ -63,44 +63,8 @@ export default class ProblemTimeline extends PureComponent - ); - } - - const eventsIntervalItems = events.map((event, index) => { - const ts = Number(event.clock); - const nextTs = index < events.length - 1 ? Number(events[index + 1].clock) : timeTo; - const duration = (nextTs - ts) / range; - const posLeft = (ts - timeFrom) / range * width; - const eventColor = event.value === '1' ? this.props.problemColor : this.props.okColor; - const attributes = { - width: duration * width, - x: posLeft, - y: 0, - fill: eventColor, - }; - - return ( - - ); - }); - return (
- {firstItem} - {eventsIntervalItems} + { } } -function TimelineRegion(props) { - return ( - - ); +interface TimelineRegionsProps { + events: ZBXEvent[]; + timeRange: GFTimeRange; + width: number; + okColor: string; + problemColor: string; +} + +class TimelineRegions extends PureComponent { + render() { + const { events, timeRange, width, okColor, problemColor } = this.props; + const { timeFrom, timeTo } = timeRange; + const range = timeTo - timeFrom; + + let firstItem; + if (events.length) { + const firstTs = events.length ? Number(events[0].clock) : timeTo; + const duration = (firstTs - timeFrom) / range; + const firstEventColor = events[0].value !== '1' ? problemColor : okColor; + const firstEventAttributes = { + x: 0, + y: 0, + width: duration * width, + height: 12, + fill: firstEventColor, + }; + firstItem = ( + + ); + } + + const eventsIntervalItems = events.map((event, index) => { + const ts = Number(event.clock); + const nextTs = index < events.length - 1 ? Number(events[index + 1].clock) : timeTo; + const duration = (nextTs - ts) / range; + const posLeft = (ts - timeFrom) / range * width; + const eventColor = event.value === '1' ? problemColor : okColor; + const attributes = { + x: posLeft, + y: 0, + width: duration * width, + height: 12, + fill: eventColor, + }; + + return ( + + ); + }); + + return [ + firstItem, + eventsIntervalItems + ]; + } } interface TimelinePointsProps { diff --git a/src/sass/_panel-problems.scss b/src/sass/_panel-problems.scss index 5dda4c0..d81229d 100644 --- a/src/sass/_panel-problems.scss +++ b/src/sass/_panel-problems.scss @@ -358,16 +358,15 @@ } svg.event-timeline-canvas { - height: 40px; + // height: 40px; g.event-timeline-group { - height: 40px; + // height: 40px; transform: translate(0px, 14px); } } - .problem-event-interval { - height: 12px; + .problem-event-region { // transition: all 0.2s ease-out; // opacity: 0.7;