fix: Show next run time correctly for schedules
This commit is contained in:
@@ -703,6 +703,28 @@ function formatTimeAgo(dateStr: string | null): string {
|
|||||||
return `${Math.floor(diff / 86400)}d ago`;
|
return `${Math.floor(diff / 86400)}d ago`;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function formatNextRun(dateStr: string | null): string {
|
||||||
|
if (!dateStr) return '-';
|
||||||
|
const date = new Date(dateStr);
|
||||||
|
const now = new Date();
|
||||||
|
const diff = (date.getTime() - now.getTime()) / 1000;
|
||||||
|
|
||||||
|
// If in the past, show "overdue"
|
||||||
|
if (diff < 0) {
|
||||||
|
const absDiff = Math.abs(diff);
|
||||||
|
if (absDiff < 60) return 'overdue';
|
||||||
|
if (absDiff < 3600) return `${Math.floor(absDiff / 60)}m overdue`;
|
||||||
|
if (absDiff < 86400) return `${Math.floor(absDiff / 3600)}h overdue`;
|
||||||
|
return `${Math.floor(absDiff / 86400)}d overdue`;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Future time
|
||||||
|
if (diff < 60) return `in ${Math.round(diff)}s`;
|
||||||
|
if (diff < 3600) return `in ${Math.floor(diff / 60)}m`;
|
||||||
|
if (diff < 86400) return `in ${Math.floor(diff / 3600)}h ${Math.floor((diff % 3600) / 60)}m`;
|
||||||
|
return `in ${Math.floor(diff / 86400)}d ${Math.floor((diff % 86400) / 3600)}h`;
|
||||||
|
}
|
||||||
|
|
||||||
export default function TasksDashboard() {
|
export default function TasksDashboard() {
|
||||||
const [tasks, setTasks] = useState<Task[]>([]);
|
const [tasks, setTasks] = useState<Task[]>([]);
|
||||||
const [counts, setCounts] = useState<TaskCounts | null>(null);
|
const [counts, setCounts] = useState<TaskCounts | null>(null);
|
||||||
@@ -1235,7 +1257,7 @@ export default function TasksDashboard() {
|
|||||||
{schedule.last_run_at ? formatTimeAgo(schedule.last_run_at) : '-'}
|
{schedule.last_run_at ? formatTimeAgo(schedule.last_run_at) : '-'}
|
||||||
</td>
|
</td>
|
||||||
<td className="px-4 py-3 text-sm text-gray-600">
|
<td className="px-4 py-3 text-sm text-gray-600">
|
||||||
{schedule.next_run_at ? formatTimeAgo(schedule.next_run_at) : '-'}
|
{schedule.next_run_at ? formatNextRun(schedule.next_run_at) : '-'}
|
||||||
</td>
|
</td>
|
||||||
<td className="px-4 py-3">
|
<td className="px-4 py-3">
|
||||||
<span
|
<span
|
||||||
|
|||||||
Reference in New Issue
Block a user