From 0580991942146fd526cbcd58e57808490fa9d4b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nuno=20G=C3=B3is?= Date: Mon, 23 Sep 2024 10:52:58 +0100 Subject: [PATCH] chore: event timeline grouping --- .../events/EventTimeline/EventTimeline.tsx | 5 +++++ .../EventTimelineEvent/EventTimelineEvent.tsx | 19 +++++++++++++++++-- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/frontend/src/component/events/EventTimeline/EventTimeline.tsx b/frontend/src/component/events/EventTimeline/EventTimeline.tsx index 915ed492e4..5c9ddfff79 100644 --- a/frontend/src/component/events/EventTimeline/EventTimeline.tsx +++ b/frontend/src/component/events/EventTimeline/EventTimeline.tsx @@ -10,12 +10,17 @@ import { type TimeSpanOption, timeSpanOptions, } from './EventTimelineHeader/EventTimelineHeader'; +import type { ISignal } from 'interfaces/signal'; export type EnrichedEvent = EventSchema & { label: string; summary: string; }; +export type TimelineEvent = EnrichedEvent | ISignal; + +export type TimelineEventGroup = TimelineEvent[]; + const StyledRow = styled('div')({ display: 'flex', flexDirection: 'row', diff --git a/frontend/src/component/events/EventTimeline/EventTimelineEvent/EventTimelineEvent.tsx b/frontend/src/component/events/EventTimeline/EventTimelineEvent/EventTimelineEvent.tsx index 15f72edc3b..282b0f66a1 100644 --- a/frontend/src/component/events/EventTimeline/EventTimelineEvent/EventTimelineEvent.tsx +++ b/frontend/src/component/events/EventTimeline/EventTimelineEvent/EventTimelineEvent.tsx @@ -8,7 +8,8 @@ import FlagOutlinedIcon from '@mui/icons-material/FlagOutlined'; import ExtensionOutlinedIcon from '@mui/icons-material/ExtensionOutlined'; import SegmentsIcon from '@mui/icons-material/DonutLargeOutlined'; import QuestionMarkIcon from '@mui/icons-material/QuestionMark'; -import type { EnrichedEvent } from '../EventTimeline'; +import type { TimelineEvent, TimelineEventGroup } from '../EventTimeline'; +import type { ISignal } from 'interfaces/signal'; type DefaultEventVariant = 'secondary'; type CustomEventVariant = 'success' | 'neutral'; @@ -77,16 +78,30 @@ const customEventVariants: Partial< }; interface IEventTimelineEventProps { - event: EnrichedEvent; + event: TimelineEvent | TimelineEventGroup; startDate: Date; endDate: Date; } +const isSignal = ( + event: TimelineEvent | TimelineEventGroup, +): event is ISignal => { + return !Array.isArray(event) && 'source' in event; +}; + export const EventTimelineEvent = ({ event, startDate, endDate, }: IEventTimelineEventProps) => { + if (Array.isArray(event)) { + return null; + } + + if (isSignal(event)) { + return null; + } + const timelineDuration = endDate.getTime() - startDate.getTime(); const eventTime = new Date(event.createdAt).getTime();