Skip to content

Commit 0313f67

Browse files
authored
refactor: rename TimelineStatistics to RouteStatistics (commaai#527)
1 parent 6340ddb commit 0313f67

File tree

4 files changed

+23
-21
lines changed

4 files changed

+23
-21
lines changed

src/api/derived.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ type UserFlagTimelineEvent = {
7070

7171
export type TimelineEvent = EngagedTimelineEvent | AlertTimelineEvent | OverridingTimelineEvent | UserFlagTimelineEvent
7272

73-
export interface TimelineStatistics {
73+
export interface RouteStatistics {
7474
duration: number
7575
engagedDuration: number
7676
userFlags: number
@@ -189,7 +189,7 @@ const generateTimelineEvents = (route: Route, events: DriveEvent[]): TimelineEve
189189
export const getTimelineEvents = (route: Route): Promise<TimelineEvent[]> =>
190190
getDriveEvents(route).then((events) => generateTimelineEvents(route, events))
191191

192-
export const generateTimelineStatistics = (route: Route | undefined, timeline: TimelineEvent[]): TimelineStatistics => {
192+
export const generateRouteStatistics = (route: Route | undefined, timeline: TimelineEvent[]): RouteStatistics => {
193193
let engagedDuration = 0
194194
let userFlags = 0
195195
timeline.forEach((ev) => {
@@ -207,5 +207,5 @@ export const generateTimelineStatistics = (route: Route | undefined, timeline: T
207207
}
208208
}
209209

210-
export const getTimelineStatistics = async (route: Route): Promise<TimelineStatistics> =>
211-
getTimelineEvents(route).then((timeline) => generateTimelineStatistics(route, timeline))
210+
export const getRouteStatistics = async (route: Route): Promise<RouteStatistics> =>
211+
getTimelineEvents(route).then((timeline) => generateRouteStatistics(route, timeline))
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,29 @@
11
import type { VoidComponent } from 'solid-js'
22

3-
import type { TimelineStatistics } from '~/api/derived'
3+
import type { RouteStatistics } from '~/api/derived'
44
import type { Route } from '~/api/types'
55
import { formatDistance, formatRouteDuration } from '~/utils/format'
66
import StatisticBar from './StatisticBar'
77

8-
const formatEngagement = (timeline: TimelineStatistics | undefined): string | undefined => {
9-
if (!timeline || timeline.duration === 0) return undefined
10-
const { engagedDuration, duration } = timeline
8+
const formatEngagement = (statistics: RouteStatistics | undefined): string | undefined => {
9+
if (!statistics || statistics.duration === 0) return undefined
10+
const { engagedDuration, duration } = statistics
1111
return `${(100 * (engagedDuration / duration)).toFixed(0)}%`
1212
}
1313

14-
const RouteStatistics: VoidComponent<{ class?: string; route: Route | undefined; timeline: TimelineStatistics | undefined }> = (props) => {
14+
const RouteStatisticsBar: VoidComponent<{ class?: string; route: Route | undefined; statistics: RouteStatistics | undefined }> = (
15+
props,
16+
) => {
1517
return (
1618
<StatisticBar
1719
class={props.class}
1820
statistics={[
1921
{ label: 'Distance', value: () => formatDistance(props.route?.length) },
2022
{ label: 'Duration', value: () => (props.route ? formatRouteDuration(props.route) : undefined) },
21-
{ label: 'Engaged', value: () => formatEngagement(props.timeline) },
23+
{ label: 'Engaged', value: () => formatEngagement(props.statistics) },
2224
]}
2325
/>
2426
)
2527
}
2628

27-
export default RouteStatistics
29+
export default RouteStatisticsBar

src/pages/dashboard/activities/RouteActivity.tsx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,11 @@ import IconButton from '~/components/material/IconButton'
1010
import TopAppBar from '~/components/material/TopAppBar'
1111
import RouteActions from '~/components/RouteActions'
1212
import RouteStaticMap from '~/components/RouteStaticMap'
13-
import RouteStatistics from '~/components/RouteStatistics'
13+
import RouteStatisticsBar from '~/components/RouteStatisticsBar'
1414
import RouteVideoPlayer from '~/components/RouteVideoPlayer'
1515
import RouteUploadButtons from '~/components/RouteUploadButtons'
1616
import Timeline from '~/components/Timeline'
17-
import { generateTimelineStatistics, getTimelineEvents } from '~/api/derived'
17+
import { generateRouteStatistics, getTimelineEvents } from '~/api/derived'
1818
import { A } from '@solidjs/router'
1919

2020
type RouteActivityProps = {
@@ -36,9 +36,9 @@ const RouteActivity: VoidComponent<RouteActivityProps> = (props) => {
3636

3737
// FIXME: generateTimelineStatistics is given different versions of TimelineEvents multiple times, leading to stuttering engaged % on switch
3838
const [events] = createResource(route, getTimelineEvents, { initialValue: [] })
39-
const [timeline] = createResource(
39+
const [statistics] = createResource(
4040
() => [route(), events()] as const,
41-
([r, e]) => generateTimelineStatistics(r, e),
41+
([r, e]) => generateRouteStatistics(r, e),
4242
)
4343

4444
const onTimelineChange = (newTime: number) => {
@@ -85,7 +85,7 @@ const RouteActivity: VoidComponent<RouteActivityProps> = (props) => {
8585
<div class="flex flex-col gap-2">
8686
<span class="text-label-md uppercase">Route Info</span>
8787
<div class="flex flex-col rounded-md overflow-hidden bg-surface-container">
88-
<RouteStatistics class="p-5" route={route()} timeline={timeline()} />
88+
<RouteStatisticsBar class="p-5" route={route()} statistics={statistics()} />
8989

9090
<RouteActions routeName={routeName()} route={route()} />
9191
</div>

src/pages/dashboard/components/RouteList.tsx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@ dayjs.extend(utc)
66
dayjs.extend(timezone)
77

88
import { fetcher } from '~/api'
9-
import { getTimelineStatistics } from '~/api/derived'
9+
import { getRouteStatistics } from '~/api/derived'
1010
import Card, { CardContent, CardHeader } from '~/components/material/Card'
1111
import Icon from '~/components/material/Icon'
12-
import RouteStatistics from '~/components/RouteStatistics'
12+
import RouteStatisticsBar from '~/components/RouteStatisticsBar'
1313
import { getPlaceName } from '~/map/geocode'
1414
import type { Route } from '~/api/types'
1515
import { dateTimeToColorBetween } from '~/utils/format'
@@ -22,7 +22,7 @@ const RouteCard: VoidComponent<RouteCardProps> = (props) => {
2222
const startTime = () => dayjs.utc(props.route.start_time).local()
2323
const endTime = () => dayjs.utc(props.route.end_time).local()
2424
const color = () => dateTimeToColorBetween(startTime().toDate(), endTime().toDate(), [30, 57, 138], [218, 161, 28])
25-
const [timeline] = createResource(() => props.route, getTimelineStatistics)
25+
const [statistics] = createResource(() => props.route, getRouteStatistics)
2626
const [location] = createResource(async () => {
2727
const startPos = [props.route.start_lng || 0, props.route.start_lat || 0]
2828
const endPos = [props.route.end_lng || 0, props.route.end_lat || 0]
@@ -45,7 +45,7 @@ const RouteCard: VoidComponent<RouteCardProps> = (props) => {
4545
subhead={<Suspense fallback={<div class="h-[20px] w-auto skeleton-loader rounded-xs" />}>{location()}</Suspense>}
4646
trailing={
4747
<Suspense>
48-
<Show when={timeline()?.userFlags}>
48+
<Show when={statistics()?.userFlags}>
4949
<div class="flex items-center justify-center rounded-full p-1 border-amber-300 border-2">
5050
<Icon class="text-yellow-300" size="24" name="flag" filled />
5151
</div>
@@ -55,7 +55,7 @@ const RouteCard: VoidComponent<RouteCardProps> = (props) => {
5555
/>
5656

5757
<CardContent>
58-
<RouteStatistics route={props.route} timeline={timeline()} />
58+
<RouteStatisticsBar route={props.route} statistics={statistics()} />
5959
</CardContent>
6060
<div class="h-2.5 w-full" style={{ background: color() }} />
6161
</Card>

0 commit comments

Comments
 (0)