From 96e4e8c14339d1133c3765d9b37dceb5c07ecf75 Mon Sep 17 00:00:00 2001 From: Ivo Oskamp Date: Thu, 19 Mar 2026 15:48:11 +0100 Subject: [PATCH] Dashboard redesign: bc-stat-grid with colored values - Replace Bootstrap display-6 stats with bc-stat-grid layout: Inbox card spans 2 columns; status values colored by type (success=green, warning=yellow, failed=red, override=blue, muted=grey) - Fix extra that caused large empty space below stats - Compact Legend to horizontal flex-wrap row - Move System status card above description text - Shorten description to 3 paragraphs - Add bc-stat-grid / bc-stat-card CSS to layout.css Co-Authored-By: Claude Sonnet 4.6 --- .../backupchecks/src/static/css/layout.css | 54 ++++++ .../src/templates/main/dashboard.html | 177 +++++++----------- 2 files changed, 120 insertions(+), 111 deletions(-) diff --git a/containers/backupchecks/src/static/css/layout.css b/containers/backupchecks/src/static/css/layout.css index 71acf72..e5c1381 100644 --- a/containers/backupchecks/src/static/css/layout.css +++ b/containers/backupchecks/src/static/css/layout.css @@ -486,3 +486,57 @@ main.content-container, main.dashboard-container { /* Replaced by .bc-content — these are no-ops now but kept for safety */ } + +/* ============================================================ + DASHBOARD STAT CARDS + ============================================================ */ +.bc-stat-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); + gap: 12px; +} + +.bc-stat-card { + background: var(--bs-card-bg); + border: 1px solid var(--bs-border-color); + border-radius: var(--bc-radius); + padding: 14px 16px; +} + +.bc-stat-card.bc-stat-large { + grid-column: span 2; +} + +.bc-stat-label { + display: flex; + align-items: center; + gap: 5px; + font-size: 11.5px; + font-weight: 500; + opacity: .55; + margin-bottom: 5px; +} + +.bc-stat-value { + font-size: 30px; + font-weight: 600; + letter-spacing: -.03em; + line-height: 1; +} + +.bc-stat-sub { + font-size: 11px; + opacity: .4; + margin-top: 4px; +} + +.bc-stat-success { color: var(--bs-success); } +.bc-stat-warning { color: var(--bs-warning); } +.bc-stat-failed { color: var(--bs-danger); } +.bc-stat-override{ color: var(--bs-primary); } +.bc-stat-muted { color: var(--bs-secondary); } + +@media (max-width: 767px) { + .bc-stat-card.bc-stat-large { grid-column: span 1; } + .bc-stat-grid { grid-template-columns: repeat(2, 1fr); } +} diff --git a/containers/backupchecks/src/templates/main/dashboard.html b/containers/backupchecks/src/templates/main/dashboard.html index 35a64b6..5fb623b 100644 --- a/containers/backupchecks/src/templates/main/dashboard.html +++ b/containers/backupchecks/src/templates/main/dashboard.html @@ -2,95 +2,70 @@ {% block content %}

Dashboard

-
-
-
-
-
Inbox
-
{{ inbox_count }}
-
Open items
-
+
+
+
+ + Inbox
+
{{ inbox_count }}
+
Open items
-
-
-
-
-
-
Success
-
{{ jobs_success_count }}
-
-
-
-
-
-
-
Success (override)
-
{{ jobs_success_override_count }}
-
-
-
-
-
-
-
Expected
-
{{ jobs_expected_count }}
-
-
-
-
-
-
-
Warning
-
{{ jobs_warning_count }}
-
-
-
-
-
-
-
Failed
-
{{ jobs_error_count }}
-
-
-
-
-
-
-
Missed
-
{{ jobs_missed_count }}
-
-
-
+
+
Success
+
{{ jobs_success_count }}
+
+ +
+
Success (override)
+
{{ jobs_success_override_count }}
+
+ +
+
Expected
+
{{ jobs_expected_count }}
+
+ +
+
Warning
+
{{ jobs_warning_count }}
+
+ +
+
Failed
+
{{ jobs_error_count }}
+
+ +
+
Missed
+
{{ jobs_missed_count }}
+
+
+ +
+
Legend
+
+
+
Success — job run completed successfully
+
Failed — job run failed, action required
+
Warning — job run completed with a warning
+
Missed — job run expected but did not execute
+
Expected — job run not yet due
+
Success (override) — marked as successful via override
-
- -
-
Legend
-
-
-
Success — job run completed successfully
-
Failed — job run failed, action required
-
Warning — job run completed with a warning
-
Missed — job run expected but did not execute
-
Expected — job run not yet due
-
Success (override) — marked as successful via override
-
-
-
{% if news_items %} -
-
- News +
+
+ News {% if active_role == 'admin' %} Manage {% endif %}
-
+
{% for item in news_items %}
@@ -122,46 +97,20 @@
{% endif %} -
-

Backupchecks provides a centralized and consistent overview of the health and reliability of all backups within your environment. The platform collects backup results from multiple backup solutions and normalizes them into a single, clear and consistent status model. This enables teams to monitor backup quality across different vendors and environments in a predictable and uniform way.

-

Backup results are imported and evaluated automatically. Each backup run is analyzed and assigned a status such as Success, Warning, Failed, or Success (override). These statuses are determined by interpreting exit codes, detected error messages, log content, and configured rules, ensuring that the reported outcome reflects the real operational impact rather than raw technical output alone.

-

The dashboard provides an at-a-glance overview of the current backup situation:

-
    -
  • A consolidated summary of all monitored backup jobs and their latest known results.
  • -
  • Clear counters for successful, warning, failed, and overridden runs.
  • -
  • Immediate visibility into environments that require attention or follow-up.
  • -
-

The Daily Jobs view shows the most recent run per backup job, grouped by customer, backup software, and backup type. This view is intended for high-level monitoring and trend awareness. It reflects the latest state of each job, but it does not replace the daily operational review process.

-

Daily operational validation is performed from the Run Checks page. This page acts as the primary workspace for reviewing backup runs. All runs that require attention are listed here, allowing operators to systematically review results and decide on the appropriate next step. The main objective of this process is to actively review backup runs and keep the Run Checks page clear.

-

When reviewing a run, operators assess whether the result is acceptable, requires follow-up, or can be treated as successful. A run can be marked as reviewed once it has been checked, even if additional actions are required. Marking a run as reviewed confirms that the result has been acknowledged and assessed, and prevents it from repeatedly appearing as unprocessed.

-

If a backup run requires further investigation or corrective action, operators can add a remark or reference an external ticket number. After adding this information, the run can still be marked as reviewed, ensuring that it no longer blocks daily checks.

-

Reviewed runs that require follow-up retain their status until they are explicitly marked as resolved. The reviewed state remains in place to indicate that the run has been handled operationally, while the resolved state confirms that the underlying issue has been fully addressed.

-

Overrides can be applied during this process when a warning or error is known, accepted, or considered non-critical. Overrides allow such runs to be treated as successful for reporting and dashboard purposes, while preserving the original messages and maintaining a full audit trail.

-

The ultimate goal of the Run Checks workflow is to maintain an empty or near-empty Run Checks page.

-

Backupchecks is designed as a monitoring, validation, and control platform. It does not replace your backup software, but enhances it by adding structured review workflows, consistent reporting, and operational clarity across all backup solutions.

- - - - -
{% if active_role == 'admin' %} -
-
- System status -
-
-
+
+
System status
+
+
+
Database size: {{ db_size_human }}
- Database size: {{ db_size_human }} -
-
- Free disk space: + Free disk space: {% if free_disk_warning %} - {{ free_disk_human }} + {{ free_disk_human }} (mail import will be blocked below 2 GB) {% else %} - {{ free_disk_human }} + {{ free_disk_human }} {% endif %}
@@ -169,4 +118,10 @@
{% endif %} +
+

Backupchecks provides a centralized and consistent overview of the health and reliability of all backups within your environment. The platform collects backup results from multiple backup solutions and normalizes them into a single, clear and consistent status model. This enables teams to monitor backup quality across different vendors and environments in a predictable and uniform way.

+

Backup results are imported and evaluated automatically. Each backup run is analyzed and assigned a status such as Success, Warning, Failed, or Success (override). These statuses are determined by interpreting exit codes, detected error messages, log content, and configured rules, ensuring that the reported outcome reflects the real operational impact rather than raw technical output alone.

+

Daily operational validation is performed from the Run Checks page. This page acts as the primary workspace for reviewing backup runs. All runs that require attention are listed here, allowing operators to systematically review results and decide on the appropriate next step. The main objective of this process is to actively review backup runs and keep the Run Checks page clear.

+
+ {% endblock %}