From bd6fac2815cc38153fdc32e4dfacffd3f86958e7 Mon Sep 17 00:00:00 2001 From: Rizqi Date: Fri, 26 Jun 2026 13:02:09 +0700 Subject: [PATCH] feat: add next scheduled run time to job metadata and implement detailed job view template --- gui_app.py | 11 +++++++++++ templates/job_detail.html | 9 +++++++++ templates/jobs.html | 6 ++++++ 3 files changed, 26 insertions(+) diff --git a/gui_app.py b/gui_app.py index a2bca0c..fccc848 100644 --- a/gui_app.py +++ b/gui_app.py @@ -445,6 +445,16 @@ def job_to_display(jid, info): vm_display = f"{len(vm_names)} VMs ({', '.join(vm_names[:3])}{'...' if len(vm_names) > 3 else ''})" else: vm_display = info.get('vm_name', '—') + + next_run = None + if HAS_SCHEDULER and scheduler and info.get('schedule_id'): + try: + sched_job = scheduler.get_job(f'backup-{jid}') + if sched_job and sched_job.next_run_time: + next_run = sched_job.next_run_time.strftime('%Y-%m-%d %H:%M:%S') + except Exception: + pass + return { 'id': jid, 'label': info.get('label', ''), @@ -468,6 +478,7 @@ def job_to_display(jid, info): 'weekly_day': info.get('weekly_day'), 'vm_names': vm_names, 'use_cbt': info.get('use_cbt', False), + 'next_run': next_run, } diff --git a/templates/job_detail.html b/templates/job_detail.html index 9ff792e..c0a1b4c 100644 --- a/templates/job_detail.html +++ b/templates/job_detail.html @@ -233,6 +233,15 @@ {% endif %} + {% if job.schedule_type and job.schedule_type != 'now' and job.next_run %} +
+
Next Run Time
+
+ + {{ job.next_run }} +
+
+ {% endif %}
Started
{{ job.started_fmt }}
diff --git a/templates/jobs.html b/templates/jobs.html index 80c7da7..ca90b94 100644 --- a/templates/jobs.html +++ b/templates/jobs.html @@ -177,6 +177,12 @@ {% if job.schedule_id %} Active + {% if job.next_run %} +
+ ⏱︎ + Next: {{ job.next_run }} +
+ {% endif %} {% else %} Cancelled {% endif %}