diff --git a/app/components/device-detail/device-detail-box.tsx b/app/components/device-detail/device-detail-box.tsx index f4a90404..fd575f83 100644 --- a/app/components/device-detail/device-detail-box.tsx +++ b/app/components/device-detail/device-detail-box.tsx @@ -1,6 +1,4 @@ import clsx from 'clsx' -import { formatDistanceToNow } from 'date-fns' -import { de, enUS } from 'date-fns/locale' import { ChevronUp, Minus, @@ -81,6 +79,7 @@ import { useGlobalCompareMode } from './useGlobalCompareMode' import { type SensorWithLatestMeasurement } from '~/db/schema' import { getArchiveLink } from '~/lib/archive-link' import { type loader } from '~/routes/explore.$deviceId' +import { dateDiffToNowInWords } from '~/lib/date' export interface MeasurementProps { sensorId: string @@ -96,7 +95,6 @@ export default function DeviceDetailBox() { const matches = useMatches() const { toast } = useToast() const { t, i18n } = useTranslation('device-detail-box') - const dateLocale = i18n.language.startsWith('de') ? de : enUS const dateFormatter = new Intl.DateTimeFormat(i18n.resolvedLanguage, { year: 'numeric', month: 'long', @@ -569,15 +567,12 @@ export default function DeviceDetailBox() { >
{sensor.lastMeasurement - ? formatDistanceToNow( + ? dateDiffToNowInWords( + i18n.language, new Date( sensor.lastMeasurement .createdAt, ), - { - addSuffix: true, - locale: dateLocale, - }, ) : t('no_recent_data')}
@@ -656,15 +651,12 @@ export default function DeviceDetailBox() { >{sensor.lastMeasurement - ? formatDistanceToNow( + ? dateDiffToNowInWords( + i18n.language, new Date( sensor.lastMeasurement .createdAt, ), - { - addSuffix: true, - locale: dateLocale, - }, ) : t('no_recent_data')}
diff --git a/app/components/device-detail/graph.tsx b/app/components/device-detail/graph.tsx index 2186a98f..5df5829e 100644 --- a/app/components/device-detail/graph.tsx +++ b/app/components/device-detail/graph.tsx @@ -11,7 +11,6 @@ import { type ChartOptions, } from 'chart.js' import 'chartjs-adapter-date-fns' -// import { de, enGB } from "date-fns/locale"; import { Download, RefreshCcw, X } from 'lucide-react' import { useMemo, diff --git a/app/components/map/layers/mobile/mobile-overview-layer.tsx b/app/components/map/layers/mobile/mobile-overview-layer.tsx index 6aa8caf4..ecc2d832 100644 --- a/app/components/map/layers/mobile/mobile-overview-layer.tsx +++ b/app/components/map/layers/mobile/mobile-overview-layer.tsx @@ -1,6 +1,5 @@ import bbox from '@turf/bbox' import { point, featureCollection } from '@turf/helpers' -import { format } from 'date-fns' import { type FeatureCollection, type Point } from 'geojson' import { CalendarClock } from 'lucide-react' import { useState, useEffect, useMemo, useCallback } from 'react' @@ -10,6 +9,7 @@ import { type LocationPoint, categorizeIntoTrips, } from '~/lib/mobile-box-helper' +import { useTranslation } from 'react-i18next' const FIT_PADDING = 100 @@ -121,6 +121,12 @@ export default function MobileOverviewLayer({ }: { locations: LocationPoint[] }) { + const { i18n } = useTranslation() + const dateTimeFormat = new Intl.DateTimeFormat(i18n.language, { + hour: 'numeric', + minute: '2-digit', + }) + // Generate trips and assign colors once const trips = useMemo(() => categorizeIntoTrips(locations, 50), [locations]) @@ -451,7 +457,7 @@ export default function MobileOverviewLayer({ )}- {format(new Date(popupInfo.startTime), 'Pp')} + {dateTimeFormat.format(new Date(popupInfo.startTime))}
- {format(new Date(popupInfo.endTime), 'Pp')} + {dateTimeFormat.format(new Date(popupInfo.endTime))}
)} diff --git a/app/components/mydevices/dt/columns.tsx b/app/components/mydevices/dt/columns.tsx index f3978eb5..3eafa5f5 100644 --- a/app/components/mydevices/dt/columns.tsx +++ b/app/components/mydevices/dt/columns.tsx @@ -32,7 +32,7 @@ export function getColumns( useTranslation: UseTranslationResponse<'data-table', any>, opts?: { isOwner?: boolean }, ): ColumnDef