Merge pull request #7943 from mabashian/7660-workflow-details

Adds workflow detail tab to workflow results

Reviewed-by: Jake McDermott <yo@jakemcdermott.me>
             https://github.com/jakemcdermott
This commit is contained in:
softwarefactory-project-zuul[bot]
2020-08-20 16:30:23 +00:00
committed by GitHub
5 changed files with 16 additions and 13 deletions

View File

@@ -7,10 +7,8 @@ import { Card, PageSection } from '@patternfly/react-core';
import { JobsAPI } from '../../api'; import { JobsAPI } from '../../api';
import ContentError from '../../components/ContentError'; import ContentError from '../../components/ContentError';
import RoutedTabs from '../../components/RoutedTabs'; import RoutedTabs from '../../components/RoutedTabs';
import JobDetail from './JobDetail'; import JobDetail from './JobDetail';
import JobOutput from './JobOutput'; import JobOutput from './JobOutput';
import WorkflowDetail from './WorkflowDetail';
import { WorkflowOutput } from './WorkflowOutput'; import { WorkflowOutput } from './WorkflowOutput';
import { JOB_TYPE_URL_SEGMENTS } from '../../constants'; import { JOB_TYPE_URL_SEGMENTS } from '../../constants';
@@ -129,7 +127,7 @@ class Job extends Component {
{job && {job &&
job.type === 'workflow_job' && [ job.type === 'workflow_job' && [
<Route key="workflow-details" path="/jobs/workflow/:id/details"> <Route key="workflow-details" path="/jobs/workflow/:id/details">
<WorkflowDetail job={job} /> <JobDetail type={match.params.type} job={job} />
</Route>, </Route>,
<Route key="workflow-output" path="/jobs/workflow/:id/output"> <Route key="workflow-output" path="/jobs/workflow/:id/output">
<WorkflowOutput job={job} /> <WorkflowOutput job={job} />

View File

@@ -84,6 +84,7 @@ function JobDetail({ job, i18n }) {
instance_group: instanceGroup, instance_group: instanceGroup,
inventory, inventory,
job_template: jobTemplate, job_template: jobTemplate,
workflow_job_template: workflowJobTemplate,
labels, labels,
project, project,
} = job.summary_fields; } = job.summary_fields;
@@ -143,7 +144,7 @@ function JobDetail({ job, i18n }) {
/> />
{jobTemplate && ( {jobTemplate && (
<Detail <Detail
label={i18n._(t`Template`)} label={i18n._(t`Job Template`)}
value={ value={
<Link to={`/templates/job_template/${jobTemplate.id}`}> <Link to={`/templates/job_template/${jobTemplate.id}`}>
{jobTemplate.name} {jobTemplate.name}
@@ -151,6 +152,18 @@ function JobDetail({ job, i18n }) {
} }
/> />
)} )}
{workflowJobTemplate && (
<Detail
label={i18n._(t`Workflow Job Template`)}
value={
<Link
to={`/templates/workflow_job_template/${workflowJobTemplate.id}`}
>
{workflowJobTemplate.name}
</Link>
}
/>
)}
<Detail label={i18n._(t`Job Type`)} value={toTitleCase(job.job_type)} /> <Detail label={i18n._(t`Job Type`)} value={toTitleCase(job.job_type)} />
<Detail <Detail
label={i18n._(t`Launched By`)} label={i18n._(t`Launched By`)}

View File

@@ -31,7 +31,7 @@ describe('<JobDetail />', () => {
assertDetail('Status', 'Successful'); assertDetail('Status', 'Successful');
assertDetail('Started', '8/8/2019, 7:24:18 PM'); assertDetail('Started', '8/8/2019, 7:24:18 PM');
assertDetail('Finished', '8/8/2019, 7:24:50 PM'); assertDetail('Finished', '8/8/2019, 7:24:50 PM');
assertDetail('Template', mockJobData.summary_fields.job_template.name); assertDetail('Job Template', mockJobData.summary_fields.job_template.name);
assertDetail('Job Type', 'Run'); assertDetail('Job Type', 'Run');
assertDetail('Launched By', mockJobData.summary_fields.created_by.username); assertDetail('Launched By', mockJobData.summary_fields.created_by.username);
assertDetail('Inventory', mockJobData.summary_fields.inventory.name); assertDetail('Inventory', mockJobData.summary_fields.inventory.name);

View File

@@ -1,7 +0,0 @@
import React from 'react';
function WorkflowDetail() {
return <div>Workflow Detail!</div>;
}
export default WorkflowDetail;

View File

@@ -1 +0,0 @@
export { default } from './WorkflowDetail';