|
@@ -8,7 +8,7 @@ import { NewWebsocketOptions, useWebsockets } from "shared/hooks/useWebsockets";
|
|
|
import styled from "styled-components";
|
|
import styled from "styled-components";
|
|
|
|
|
|
|
|
type Props = {
|
|
type Props = {
|
|
|
- lastRunStatus: "failed" | "succeded" | "active" | "all";
|
|
|
|
|
|
|
+ lastRunStatus: "failed" | "succeeded" | "active" | "all";
|
|
|
namespace: string;
|
|
namespace: string;
|
|
|
sortType: "Newest" | "Oldest" | "Alphabetical";
|
|
sortType: "Newest" | "Oldest" | "Alphabetical";
|
|
|
};
|
|
};
|
|
@@ -96,9 +96,20 @@ const JobRunTable: React.FC<Props> = ({
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
Header: "Finished At",
|
|
Header: "Finished At",
|
|
|
- accessor: (originalRow) =>
|
|
|
|
|
- dateFormatter(originalRow.status?.completionTime) ||
|
|
|
|
|
- "Still running...",
|
|
|
|
|
|
|
+ accessor: (originalRow) => {
|
|
|
|
|
+ if (originalRow.status?.completionTime) {
|
|
|
|
|
+ return dateFormatter(originalRow.status?.completionTime);
|
|
|
|
|
+ } else if (
|
|
|
|
|
+ Array.isArray(originalRow.status?.conditions) &&
|
|
|
|
|
+ originalRow.status?.conditions[0]?.lastTransitionTime
|
|
|
|
|
+ ) {
|
|
|
|
|
+ return dateFormatter(
|
|
|
|
|
+ originalRow.status?.conditions[0]?.lastTransitionTime
|
|
|
|
|
+ );
|
|
|
|
|
+ } else {
|
|
|
|
|
+ return "Still running...";
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
Header: "Status",
|
|
Header: "Status",
|
|
@@ -152,12 +163,12 @@ const JobRunTable: React.FC<Props> = ({
|
|
|
case "active":
|
|
case "active":
|
|
|
tmp = filter.filterByActive();
|
|
tmp = filter.filterByActive();
|
|
|
break;
|
|
break;
|
|
|
- case "succeded":
|
|
|
|
|
- tmp = filter.filterBySucceded();
|
|
|
|
|
- break;
|
|
|
|
|
case "failed":
|
|
case "failed":
|
|
|
tmp = filter.filterByFailed();
|
|
tmp = filter.filterByFailed();
|
|
|
break;
|
|
break;
|
|
|
|
|
+ case "succeeded":
|
|
|
|
|
+ tmp = filter.filterBySucceded();
|
|
|
|
|
+ break;
|
|
|
default:
|
|
default:
|
|
|
tmp = filter.dontFilter();
|
|
tmp = filter.dontFilter();
|
|
|
break;
|
|
break;
|
|
@@ -343,7 +354,12 @@ class JobRunsFilter {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
filterBySucceded() {
|
|
filterBySucceded() {
|
|
|
- return this.jobRuns.filter((jobRun) => jobRun?.status?.succeeded);
|
|
|
|
|
|
|
+ return this.jobRuns.filter(
|
|
|
|
|
+ (jobRun) =>
|
|
|
|
|
+ jobRun?.status?.succeeded &&
|
|
|
|
|
+ !jobRun?.status?.active &&
|
|
|
|
|
+ !jobRun?.status?.failed
|
|
|
|
|
+ );
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
dontFilter() {
|
|
dontFilter() {
|