- {item.outputs.map((output, j) => {
+ {item.outputs?.map((output, j) => {
return (
[{dayjs(output.time).format("YYYY-MM-DD HH:mm:ss")}]
diff --git a/ui/src/domain/workflowRun.ts b/ui/src/domain/workflowRun.ts
index 95b44546..eaac90b4 100644
--- a/ui/src/domain/workflowRun.ts
+++ b/ui/src/domain/workflowRun.ts
@@ -6,8 +6,8 @@ export interface WorkflowRunModel extends BaseModel {
trigger: string;
startedAt: ISO8601String;
endedAt: ISO8601String;
- logs: WorkflowRunLog[];
- error: string;
+ logs?: WorkflowRunLog[];
+ error?: string;
expand?: {
workflowId?: WorkflowModel;
};
@@ -16,15 +16,15 @@ export interface WorkflowRunModel extends BaseModel {
export type WorkflowRunLog = {
nodeId: string;
nodeName: string;
- outputs: WorkflowRunLogOutput[];
- error: string;
+ outputs?: WorkflowRunLogOutput[];
+ error?: string;
};
export type WorkflowRunLogOutput = {
time: ISO8601String;
title: string;
content: string;
- error: string;
+ error?: string;
};
export const WORKFLOW_RUN_STATUSES = Object.freeze({
diff --git a/ui/src/pages/workflows/WorkflowList.tsx b/ui/src/pages/workflows/WorkflowList.tsx
index f997b98d..a1fce6c1 100644
--- a/ui/src/pages/workflows/WorkflowList.tsx
+++ b/ui/src/pages/workflows/WorkflowList.tsx
@@ -7,6 +7,7 @@ import {
DeleteOutlined as DeleteOutlinedIcon,
EditOutlined as EditOutlinedIcon,
PlusOutlined as PlusOutlinedIcon,
+ SyncOutlined as SyncOutlinedIcon,
} from "@ant-design/icons";
import { PageHeader } from "@ant-design/pro-components";
@@ -159,7 +160,14 @@ const WorkflowList = () => {
title: t("workflow.props.last_run_at"),
render: (_, record) => {
if (record.lastRunId) {
- if (record.lastRunStatus === WORKFLOW_RUN_STATUSES.SUCCEEDED) {
+ if (record.lastRunStatus === WORKFLOW_RUN_STATUSES.RUNNING) {
+ return (
+
+ } />
+ {dayjs(record.lastRunTime!).format("YYYY-MM-DD HH:mm:ss")}
+
+ );
+ } else if (record.lastRunStatus === WORKFLOW_RUN_STATUSES.SUCCEEDED) {
return (
} />