mirror of
https://github.com/ansible/awx.git
synced 2026-05-19 14:57:39 -02:30
ProjectList: Change job status UI update logic.
1. Render current job status if there is current waiting, pending or running job.\n 2. Render last job status if there is no current job.
This commit is contained in:
@@ -93,6 +93,14 @@ function ProjectListItem({
|
|||||||
const missingExecutionEnvironment =
|
const missingExecutionEnvironment =
|
||||||
project.custom_virtualenv && !project.default_environment;
|
project.custom_virtualenv && !project.default_environment;
|
||||||
|
|
||||||
|
let job = null;
|
||||||
|
|
||||||
|
if (project.summary_fields?.current_job) {
|
||||||
|
job = project.summary_fields.current_job;
|
||||||
|
} else if (project.summary_fields?.last_job) {
|
||||||
|
job = project.summary_fields.last_job;
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<Tr id={`${project.id}`}>
|
<Tr id={`${project.id}`}>
|
||||||
@@ -132,14 +140,14 @@ function ProjectListItem({
|
|||||||
)}
|
)}
|
||||||
</Td>
|
</Td>
|
||||||
<Td dataLabel={i18n._(t`Status`)}>
|
<Td dataLabel={i18n._(t`Status`)}>
|
||||||
{project.summary_fields.last_job && (
|
{job && (
|
||||||
<Tooltip
|
<Tooltip
|
||||||
position="top"
|
position="top"
|
||||||
content={generateLastJobTooltip(project.summary_fields.last_job)}
|
content={generateLastJobTooltip(job)}
|
||||||
key={project.summary_fields.last_job.id}
|
key={job.id}
|
||||||
>
|
>
|
||||||
<Link to={`/jobs/project/${project.summary_fields.last_job.id}`}>
|
<Link to={`/jobs/project/${job.id}`}>
|
||||||
<StatusLabel status={project.summary_fields.last_job.status} />
|
<StatusLabel status={job.status} />
|
||||||
</Link>
|
</Link>
|
||||||
</Tooltip>
|
</Tooltip>
|
||||||
)}
|
)}
|
||||||
@@ -171,7 +179,7 @@ function ProjectListItem({
|
|||||||
>
|
>
|
||||||
<ProjectSyncButton
|
<ProjectSyncButton
|
||||||
projectId={project.id}
|
projectId={project.id}
|
||||||
lastJobStatus={project.summary_fields.last_job.status}
|
lastJobStatus={job && job.status}
|
||||||
/>
|
/>
|
||||||
</ActionItem>
|
</ActionItem>
|
||||||
<ActionItem
|
<ActionItem
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ export default function useWsProjects(initialProjects) {
|
|||||||
...project,
|
...project,
|
||||||
summary_fields: {
|
summary_fields: {
|
||||||
...project.summary_fields,
|
...project.summary_fields,
|
||||||
last_job: {
|
current_job: {
|
||||||
id: lastMessage.unified_job_id,
|
id: lastMessage.unified_job_id,
|
||||||
status: lastMessage.status,
|
status: lastMessage.status,
|
||||||
finished: lastMessage.finished,
|
finished: lastMessage.finished,
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ describe('useWsProjects', () => {
|
|||||||
{
|
{
|
||||||
id: 1,
|
id: 1,
|
||||||
summary_fields: {
|
summary_fields: {
|
||||||
last_job: {
|
current_job: {
|
||||||
id: 1,
|
id: 1,
|
||||||
status: 'running',
|
status: 'running',
|
||||||
finished: null,
|
finished: null,
|
||||||
@@ -87,7 +87,7 @@ describe('useWsProjects', () => {
|
|||||||
})
|
})
|
||||||
);
|
);
|
||||||
expect(
|
expect(
|
||||||
wrapper.find('TestInner').prop('projects')[0].summary_fields.last_job
|
wrapper.find('TestInner').prop('projects')[0].summary_fields.current_job
|
||||||
.status
|
.status
|
||||||
).toEqual('running');
|
).toEqual('running');
|
||||||
await act(async () => {
|
await act(async () => {
|
||||||
@@ -104,7 +104,7 @@ describe('useWsProjects', () => {
|
|||||||
wrapper.update();
|
wrapper.update();
|
||||||
|
|
||||||
expect(
|
expect(
|
||||||
wrapper.find('TestInner').prop('projects')[0].summary_fields.last_job
|
wrapper.find('TestInner').prop('projects')[0].summary_fields.current_job
|
||||||
).toEqual({
|
).toEqual({
|
||||||
id: 12,
|
id: 12,
|
||||||
status: 'successful',
|
status: 'successful',
|
||||||
|
|||||||
Reference in New Issue
Block a user