1- import { createEffect , createResource , createSignal , Suspense , type VoidComponent } from 'solid-js'
1+ import { Show , createEffect , createResource , createSignal , Suspense , type VoidComponent } from 'solid-js'
22
33import { setRouteViewed } from '~/api/athena'
44import { getDevice } from '~/api/devices'
@@ -15,11 +15,13 @@ import RouteVideoPlayer from '~/components/RouteVideoPlayer'
1515import RouteUploadButtons from '~/components/RouteUploadButtons'
1616import Timeline from '~/components/Timeline'
1717import { generateTimelineStatistics , getTimelineEvents } from '~/api/derived'
18+ import { A } from '@solidjs/router'
1819
1920type RouteActivityProps = {
2021 dongleId : string
2122 dateStr : string
2223 startTime : number
24+ endTime : number | undefined
2325}
2426
2527const RouteActivity : VoidComponent < RouteActivityProps > = ( props ) => {
@@ -30,6 +32,8 @@ const RouteActivity: VoidComponent<RouteActivityProps> = (props) => {
3032 const [ route ] = createResource ( routeName , getRoute )
3133 const [ startTime ] = createResource ( route , ( route ) => dayjs ( route . start_time ) ?. format ( 'ddd, MMM D, YYYY' ) )
3234
35+ const selection = ( ) => ( { startTime : props . startTime , endTime : props . endTime } )
36+
3337 // FIXME: generateTimelineStatistics is given different versions of TimelineEvents multiple times, leading to stuttering engaged % on switch
3438 const [ events ] = createResource ( route , getTimelineEvents , { initialValue : [ ] } )
3539 const [ timeline ] = createResource (
@@ -64,8 +68,18 @@ const RouteActivity: VoidComponent<RouteActivityProps> = (props) => {
6468
6569 < div class = "flex flex-col gap-6 px-4 pb-4" >
6670 < div class = "flex flex-col" >
67- < RouteVideoPlayer ref = { setVideoRef } routeName = { routeName ( ) } startTime = { seekTime ( ) } onProgress = { setSeekTime } />
71+ < RouteVideoPlayer ref = { setVideoRef } routeName = { routeName ( ) } selection = { selection ( ) } onProgress = { setSeekTime } />
6872 < Timeline class = "mb-1" route = { route ( ) } seekTime = { seekTime ( ) } updateTime = { onTimelineChange } events = { events ( ) } />
73+
74+ < Show when = { selection ( ) . startTime || selection ( ) . endTime } >
75+ < A
76+ class = "flex items-center justify-center text-center text-label-lg text-gray-500 mt-4"
77+ href = { `/${ props . dongleId } /${ props . dateStr } ` }
78+ >
79+ Clear current route selection
80+ < IconButton name = "close_small" />
81+ </ A >
82+ </ Show >
6983 </ div >
7084
7185 < div class = "flex flex-col gap-2" >
0 commit comments