diff --git a/src/pobsync_backend/templates/pobsync_backend/base.html b/src/pobsync_backend/templates/pobsync_backend/base.html index d2695b3..4e8c6a7 100644 --- a/src/pobsync_backend/templates/pobsync_backend/base.html +++ b/src/pobsync_backend/templates/pobsync_backend/base.html @@ -296,7 +296,23 @@ .status-summary.failed { border-color: #e8b4b4; background: #fff7f7; color: var(--failed); } .status-summary.warning, .status-summary.running { border-color: #e7cf8a; background: #fffaf0; color: var(--running); } - .status-summary.queued { border-color: #b5cdea; background: #eef6ff; color: var(--link); } + .status-summary.queued { border-color: #b5cdea; background: #eef6ff; color: var(--link); } + a.status-summary { + color: inherit; + text-decoration: none; + transition: border-color 0.15s ease, box-shadow 0.15s ease, transform 0.15s ease; + } + a.status-summary:hover { + border-color: var(--border-strong); + box-shadow: var(--shadow-sm); + transform: translateY(-1px); + } + .status-summary .summary-action { + color: var(--muted-strong); + font-size: 12px; + font-weight: 650; + margin-left: auto; + } .operator-state { align-items: center; display: flex; diff --git a/src/pobsync_backend/templates/pobsync_backend/dashboard.html b/src/pobsync_backend/templates/pobsync_backend/dashboard.html index f78f584..e748d4d 100644 --- a/src/pobsync_backend/templates/pobsync_backend/dashboard.html +++ b/src/pobsync_backend/templates/pobsync_backend/dashboard.html @@ -43,33 +43,37 @@
Failed
{{ counts.failed_runs }}
-
+

Operational Status

{% if counts.failed_runs or counts.warning_runs or counts.running_runs or counts.queued_runs %} {% elif counts.hosts %} @@ -79,7 +83,7 @@ {% endif %}
-
+

Backup Trends

{% if stats_summary.runs_sampled %}
diff --git a/src/pobsync_backend/tests/test_views.py b/src/pobsync_backend/tests/test_views.py index 08c7040..cef4230 100644 --- a/src/pobsync_backend/tests/test_views.py +++ b/src/pobsync_backend/tests/test_views.py @@ -125,6 +125,10 @@ class ViewTests(TestCase): self.assertContains(response, "1 run completed with warnings.") self.assertContains(response, "1 backup run in progress.") self.assertContains(response, "1 backup run waiting for the worker.") + self.assertContains(response, "Review failed runs") + self.assertContains(response, "Review warnings") + self.assertContains(response, "View running runs") + self.assertContains(response, "View queued runs") self.assertContains(response, f'href="{reverse("runs_list")}"', html=False) self.assertContains(response, f'href="{reverse("runs_list")}?status=queued"', html=False) self.assertContains(response, f'href="{reverse("runs_list")}?status=running"', html=False)