diff --git a/frontend/src/features/shadow-run/pages/ShadowRunQueue.vue b/frontend/src/features/shadow-run/pages/ShadowRunQueue.vue index 6552a570..9f31ccd0 100644 --- a/frontend/src/features/shadow-run/pages/ShadowRunQueue.vue +++ b/frontend/src/features/shadow-run/pages/ShadowRunQueue.vue @@ -79,13 +79,13 @@ const filteredJobs = computed(() => { }) const shadowRunColumns: UiGridColumn[] = [ - { field: 'jobId', header: 'Job ID', width: 90, formatter: value => `#${value}` }, - { field: 'modelName', header: 'Model Name', minWidth: 160 }, - { field: 'windowStart', header: 'Window Period', minWidth: 180, formatter: (val, row) => `${val} ~ ${(row as any)?.windowEnd ?? ''}` }, - { field: 'tradingDays', header: 'Days', width: 80, formatter: val => `${val}d` }, - { field: 'status', header: 'Status', width: 110, formatter: val => String(val).toUpperCase() }, - { field: 'progress', header: 'Progress', width: 100, formatter: val => `${val}%` }, - { field: 'startedAt', header: 'Started At', minWidth: 160, formatter: val => val ? formatAsOf(String(val)) : '—' }, + { field: 'jobId', header: 'Job ID', minWidth: 90, flex: 1, formatter: value => `#${value}` }, + { field: 'modelName', header: 'Model Name', minWidth: 200, flex: 3 }, + { field: 'windowStart', header: 'Window Period', minWidth: 220, flex: 3, formatter: (val, row) => `${val} ~ ${(row as any)?.windowEnd ?? ''}` }, + { field: 'tradingDays', header: 'Days', minWidth: 70, flex: 1, formatter: val => `${val}d` }, + { field: 'status', header: 'Status', minWidth: 100, flex: 1, formatter: val => String(val).toUpperCase() }, + { field: 'progress', header: 'Progress', minWidth: 90, flex: 1, formatter: val => `${val}%` }, + { field: 'startedAt', header: 'Started At', minWidth: 160, flex: 2, formatter: val => val ? formatAsOf(String(val)) : '—' }, ] const handleRetry = () => { diff --git a/frontend/src/shared/ui/adapter/contracts.ts b/frontend/src/shared/ui/adapter/contracts.ts index b1ccc4e6..940d081c 100644 --- a/frontend/src/shared/ui/adapter/contracts.ts +++ b/frontend/src/shared/ui/adapter/contracts.ts @@ -50,6 +50,7 @@ export interface UiGridColumn { header: string width?: number minWidth?: number + flex?: number sortable?: boolean filterable?: boolean sensitive?: boolean diff --git a/frontend/src/shared/ui/components/KsDataGrid.vue b/frontend/src/shared/ui/components/KsDataGrid.vue index d57a6b90..bad54e20 100644 --- a/frontend/src/shared/ui/components/KsDataGrid.vue +++ b/frontend/src/shared/ui/components/KsDataGrid.vue @@ -12,8 +12,8 @@ const columnDefs = computed(() => props.columns.map(column => ({ field: column.field, headerName: column.header, width: column.width, - minWidth: column.minWidth ?? 100, - flex: column.width ? undefined : 1, + minWidth: column.minWidth ?? 80, + flex: column.flex ?? (column.width ? undefined : 1), sortable: column.sortable ?? true, filter: column.filterable ?? true, valueFormatter: column.formatter ? params => column.formatter?.(params.value, params.data) ?? '' : undefined