Sync latest TrueGrowth updates
This commit is contained in:
@@ -143,3 +143,66 @@ export function getTaskElapsedTime(task: Task): number {
|
||||
* formatDateTime(Date.now()) // Returns "2025-12-18 14:30:25"
|
||||
*/
|
||||
export const formatDateTime = formatDate;
|
||||
|
||||
export interface TaskTimelineItem {
|
||||
label: string;
|
||||
value: string;
|
||||
}
|
||||
|
||||
function isValidTimestamp(timestamp: number | undefined): timestamp is number {
|
||||
return (
|
||||
typeof timestamp === 'number' &&
|
||||
Number.isFinite(timestamp) &&
|
||||
timestamp > 0
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Builds the labeled absolute times shown in task-center rows.
|
||||
*/
|
||||
export function getTaskTimelineItems(task: Task): TaskTimelineItem[] {
|
||||
const items: TaskTimelineItem[] = [];
|
||||
|
||||
if (isValidTimestamp(task.createdAt)) {
|
||||
items.push({
|
||||
label: '创建',
|
||||
value: formatDateTime(task.createdAt),
|
||||
});
|
||||
}
|
||||
|
||||
const completedAt = isValidTimestamp(task.completedAt)
|
||||
? task.completedAt
|
||||
: task.updatedAt;
|
||||
if (task.status === TaskStatus.COMPLETED && isValidTimestamp(completedAt)) {
|
||||
items.push({
|
||||
label: '完成',
|
||||
value: formatDateTime(completedAt),
|
||||
});
|
||||
return items;
|
||||
}
|
||||
|
||||
if (
|
||||
(task.status === TaskStatus.FAILED ||
|
||||
task.status === TaskStatus.CANCELLED) &&
|
||||
isValidTimestamp(task.updatedAt)
|
||||
) {
|
||||
items.push({
|
||||
label: task.status === TaskStatus.FAILED ? '失败' : '取消',
|
||||
value: formatDateTime(task.updatedAt),
|
||||
});
|
||||
return items;
|
||||
}
|
||||
|
||||
if (
|
||||
task.status === TaskStatus.PROCESSING &&
|
||||
isValidTimestamp(task.updatedAt) &&
|
||||
task.updatedAt !== task.createdAt
|
||||
) {
|
||||
items.push({
|
||||
label: '更新',
|
||||
value: formatDateTime(task.updatedAt),
|
||||
});
|
||||
}
|
||||
|
||||
return items;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user