frigate/web/src/components/TimelineSummary.jsx

40 lines
1.5 KiB
React
Raw Normal View History

2023-04-21 02:01:13 +03:00
import { h } from 'preact';
import useSWR from 'swr';
import Heading from './Heading';
import ActivityIndicator from './ActivityIndicator';
import { formatUnixTimestampToDateTime } from '../utils/dateUtil';
export default function TimelineSummary({ event }) {
const { data: eventTimeline } = useSWR([
'timeline',
{
source_id: event.id,
},
]);
2023-04-21 02:16:08 +03:00
const { data: config } = useSWR('config');
if (!eventTimeline || !config) {
2023-04-21 02:01:13 +03:00
return <ActivityIndicator />;
}
return (
<div>
<Heading>Timeline:</Heading>
{eventTimeline.map((item, index) => (
2023-04-21 02:16:08 +03:00
<div key="index">{getTimelineItemDescription(config, item, event, index)}</div>
2023-04-21 02:01:13 +03:00
))}
</div>
);
}
2023-04-21 02:16:08 +03:00
function getTimelineItemDescription(config, timelineItem, event, index) {
2023-04-21 02:01:13 +03:00
if (timelineItem.class_type == 'visible') {
2023-04-21 02:16:08 +03:00
return `${index + 1}. ${event.label} detected at ${formatUnixTimestampToDateTime(timelineItem.timestamp, { date_style: "short", time_style: "medium", time_format: config.ui.time_format })}`;
2023-04-21 02:01:13 +03:00
} else if (timelineItem.class_type == 'entered_zone') {
2023-04-21 02:16:08 +03:00
return `${index + 1}. ${event.label} entered ${timelineItem.data.zones} at ${formatUnixTimestampToDateTime(timelineItem.timestamp, { date_style: "short", time_style: "medium", time_format: config.ui.time_format })}`;
2023-04-21 02:01:13 +03:00
}
2023-04-21 02:16:08 +03:00
return `${index + 1}. ${event.label} left at ${formatUnixTimestampToDateTime(timelineItem.timestamp, { date_style: "short", time_style: "medium", time_format: config.ui.time_format })}`;
2023-04-21 02:01:13 +03:00
}