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
}