|
1 | 1 | import React, { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react'; |
2 | 2 | import { useTranslation } from 'react-i18next'; |
| 3 | +import { useParams } from 'react-router-dom'; |
3 | 4 | import classNames from 'classnames'; |
4 | 5 |
|
5 | 6 | import { Box, Button, Code, Container, Header, ListEmptyMessage, Loader, TextContent } from 'components'; |
6 | 7 |
|
7 | 8 | import { useLocalStorageState } from 'hooks/useLocalStorageState'; |
8 | 9 | import { useLazyGetProjectLogsQuery } from 'services/project'; |
| 10 | +import { useGetRunQuery } from 'services/run'; |
9 | 11 |
|
10 | 12 | import { LogRow } from './components/LogRow'; |
11 | | -import { decodeLogs } from './helpers'; |
| 13 | +import { decodeLogs, getJobSubmissionId } from './helpers'; |
12 | 14 |
|
13 | 15 | import { IProps } from './types'; |
14 | 16 |
|
@@ -222,3 +224,43 @@ export const Logs: React.FC<IProps> = ({ className, projectName, runName, jobSub |
222 | 224 | </div> |
223 | 225 | ); |
224 | 226 | }; |
| 227 | + |
| 228 | +const getJobSubmissionIdFromJobData = (job?: IJob): string | undefined => { |
| 229 | + if (!job) return; |
| 230 | + |
| 231 | + return job.job_submissions[job.job_submissions.length - 1]?.id; |
| 232 | +}; |
| 233 | + |
| 234 | +export const JobLogs = () => { |
| 235 | + const params = useParams(); |
| 236 | + const paramProjectName = params.projectName ?? ''; |
| 237 | + const paramRunId = params.runId ?? ''; |
| 238 | + const paramJobName = params.jobName ?? ''; |
| 239 | + |
| 240 | + const { data: runData, isLoading: isLoadingRun } = useGetRunQuery({ |
| 241 | + project_name: paramProjectName, |
| 242 | + id: paramRunId, |
| 243 | + }); |
| 244 | + |
| 245 | + const jobData = useMemo<IJob | null>(() => { |
| 246 | + if (!runData) return null; |
| 247 | + |
| 248 | + return runData.jobs.find((job) => job.job_spec.job_name === paramJobName) ?? null; |
| 249 | + }, [runData]); |
| 250 | + |
| 251 | + if (isLoadingRun) |
| 252 | + return ( |
| 253 | + <Container> |
| 254 | + <Loader /> |
| 255 | + </Container> |
| 256 | + ); |
| 257 | + |
| 258 | + return ( |
| 259 | + <Logs |
| 260 | + projectName={paramProjectName} |
| 261 | + runName={runData?.run_spec?.run_name ?? ''} |
| 262 | + jobSubmissionId={jobData ? getJobSubmissionIdFromJobData(jobData) : getJobSubmissionId(runData)} |
| 263 | + className={styles.logsPage} |
| 264 | + /> |
| 265 | + ); |
| 266 | +}; |
0 commit comments