fix(usage): render resource timestamps in their rollup tz, not browser-local
This commit is contained in:
@@ -32,7 +32,8 @@ import {
|
||||
import {
|
||||
bucketKey,
|
||||
generateBucketRange,
|
||||
Granularity
|
||||
Granularity,
|
||||
parseRollup
|
||||
} from '../utils/time-buckets';
|
||||
import { buildTrendSeries } from '../utils/trend-series';
|
||||
import MetricChartCard from './metric-chart-card';
|
||||
@@ -328,12 +329,14 @@ const GpuInstancesTab: React.FC = () => {
|
||||
/>
|
||||
)
|
||||
};
|
||||
// Last Active is a UTC instant (max bucket hour) → show formatted local time.
|
||||
// Last Active = the last active day. The backend sends a rollup-tz instant
|
||||
// with its offset; parseRollup keeps that wall clock (no browser-tz convert),
|
||||
// consistent with the trend chart buckets. Shown date-only.
|
||||
const lastActiveCol = {
|
||||
title: intl.formatMessage({ id: 'usage.table.lastActive' }),
|
||||
dataIndex: 'last_active',
|
||||
key: 'last_active',
|
||||
render: (v?: string) => (v ? dayjs(v).format('YYYY-MM-DD HH:mm:ss') : '-')
|
||||
render: (v?: string) => (v ? parseRollup(v).format('YYYY-MM-DD') : '-')
|
||||
};
|
||||
if (activeTableTab === 'gpu_type') {
|
||||
return [
|
||||
|
||||
@@ -24,6 +24,7 @@ import {
|
||||
ResourceEventItem,
|
||||
ResourceEventsResponse
|
||||
} from '../apis/resource';
|
||||
import { parseRollup } from '../utils/time-buckets';
|
||||
import ResourceFilterBar from './resource-filter-bar';
|
||||
|
||||
// Only these four are ever emitted (see resource_event_logger): create/delete
|
||||
@@ -177,8 +178,10 @@ const ResourceEvents: React.FC = () => {
|
||||
title: intl.formatMessage({ id: 'usage.events.col.time' }),
|
||||
dataIndex: 'occurred_at',
|
||||
key: 'occurred_at',
|
||||
// Backend sends the rollup-tz instant with its offset; parseRollup keeps
|
||||
// it (no conversion to the browser tz).
|
||||
render: (v: string) =>
|
||||
v ? dayjs(v).format('YYYY-MM-DD HH:mm:ss') : '-',
|
||||
v ? parseRollup(v).format('YYYY-MM-DD HH:mm:ss') : '-',
|
||||
width: 200
|
||||
},
|
||||
{
|
||||
|
||||
@@ -28,7 +28,8 @@ import useResourceMeta from '../hooks/use-resource-meta';
|
||||
import {
|
||||
bucketKey,
|
||||
generateBucketRange,
|
||||
Granularity
|
||||
Granularity,
|
||||
parseRollup
|
||||
} from '../utils/time-buckets';
|
||||
import { buildTrendSeries } from '../utils/trend-series';
|
||||
import MetricChartCard from './metric-chart-card';
|
||||
@@ -293,12 +294,14 @@ const StorageTab: React.FC = () => {
|
||||
render: (v: number) => (v ?? 0).toFixed(2)
|
||||
}
|
||||
];
|
||||
// Last Active is a UTC instant (max bucket hour) → show formatted local time.
|
||||
// Last Active = the last active day. The backend sends a rollup-tz instant
|
||||
// with its offset; parseRollup keeps that wall clock (no browser-tz convert),
|
||||
// consistent with the trend chart buckets. Shown date-only.
|
||||
const lastActiveCol = {
|
||||
title: intl.formatMessage({ id: 'usage.table.lastActive' }),
|
||||
dataIndex: 'last_active',
|
||||
key: 'last_active',
|
||||
render: (v?: string) => (v ? dayjs(v).format('YYYY-MM-DD HH:mm:ss') : '-')
|
||||
render: (v?: string) => (v ? parseRollup(v).format('YYYY-MM-DD') : '-')
|
||||
};
|
||||
if (activeTableTab === 'volume') {
|
||||
return [
|
||||
|
||||
Reference in New Issue
Block a user