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:
seiwailai 2021-05-01 03:29:59 +08:00
parent 30d78e8857
commit 0886414c72
3 changed files with 18 additions and 10 deletions

View File

@ -93,6 +93,14 @@ function ProjectListItem({
const missingExecutionEnvironment =
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 (
<>
<Tr id={`${project.id}`}>
@ -132,14 +140,14 @@ function ProjectListItem({
)}
</Td>
<Td dataLabel={i18n._(t`Status`)}>
{project.summary_fields.last_job && (
{job && (
<Tooltip
position="top"
content={generateLastJobTooltip(project.summary_fields.last_job)}
key={project.summary_fields.last_job.id}
content={generateLastJobTooltip(job)}
key={job.id}
>
<Link to={`/jobs/project/${project.summary_fields.last_job.id}`}>
<StatusLabel status={project.summary_fields.last_job.status} />
<Link to={`/jobs/project/${job.id}`}>
<StatusLabel status={job.status} />
</Link>
</Tooltip>
)}
@ -171,7 +179,7 @@ function ProjectListItem({
>
<ProjectSyncButton
projectId={project.id}
lastJobStatus={project.summary_fields.last_job.status}
lastJobStatus={job && job.status}
/>
</ActionItem>
<ActionItem

View File

@ -26,7 +26,7 @@ export default function useWsProjects(initialProjects) {
...project,
summary_fields: {
...project.summary_fields,
last_job: {
current_job: {
id: lastMessage.unified_job_id,
status: lastMessage.status,
finished: lastMessage.finished,

View File

@ -64,7 +64,7 @@ describe('useWsProjects', () => {
{
id: 1,
summary_fields: {
last_job: {
current_job: {
id: 1,
status: 'running',
finished: null,
@ -87,7 +87,7 @@ describe('useWsProjects', () => {
})
);
expect(
wrapper.find('TestInner').prop('projects')[0].summary_fields.last_job
wrapper.find('TestInner').prop('projects')[0].summary_fields.current_job
.status
).toEqual('running');
await act(async () => {
@ -104,7 +104,7 @@ describe('useWsProjects', () => {
wrapper.update();
expect(
wrapper.find('TestInner').prop('projects')[0].summary_fields.last_job
wrapper.find('TestInner').prop('projects')[0].summary_fields.current_job
).toEqual({
id: 12,
status: 'successful',