From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from gate001.proxmox.com (gate001.proxmox.com [IPv6:2a0f:8001:1:32::40]) by lore.proxmox.com (Postfix) with ESMTPS id E2BE31FF0B0 for ; Fri, 09 Oct 2026 16:55:07 +0200 (CEST) Received: from gate001.proxmox.com (localhost.localdomain [127.0.0.1]) by gate001.proxmox.com (Proxmox) with ESMTP id 16A1F21677; Fri, 09 Oct 2026 16:55:04 +0200 (CEST) From: Jonas Theisen To: pbs-devel@lists.proxmox.com Subject: [PATCH proxmox-backup v3 07/10] ui: improve visibility of disabled {sync,verify,tape,GC,prune} jobs on the overview page Date: Fri, 9 Oct 2026 16:54:38 +0200 Message-ID: <20261009145445.282494-5-j.theisen@proxmox.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20261009145445.282494-1-j.theisen@proxmox.com> References: <20261009145445.282494-1-j.theisen@proxmox.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1791557699795 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.157 Adjusted score from AWL reputation of From: address DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment (newer systems) RCVD_IN_DNSWL_MED -2.3 Sender listed at https://www.dnswl.org/, medium trust SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Message-ID-Hash: QD6KJ3GIQRMHU5SLEO2RVQZQGWPAVVP5 X-Message-ID-Hash: QD6KJ3GIQRMHU5SLEO2RVQZQGWPAVVP5 X-MailFrom: j.theisen@proxmox.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Proxmox Backup Server development discussion List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: This commit adds additional logic to prominently display if a job was disabled on the respective overview page by introducing a new renderer. If the job is disabled the text "Disabled" is shown instead of the schedule which is still present in the config file. For backwords compatibility if no schedule is defined the fallback is still None. Signed-off-by: Jonas Theisen --- www/Utils.js | 10 ++++++++++ www/config/GCView.js | 4 +++- www/config/PruneView.js | 1 + www/config/SyncView.js | 2 ++ www/config/VerifyView.js | 2 ++ www/tape/BackupJobs.js | 2 ++ 6 files changed, 20 insertions(+), 1 deletion(-) diff --git a/www/Utils.js b/www/Utils.js index d6bfd459e..1d70e8d2a 100644 --- a/www/Utils.js +++ b/www/Utils.js @@ -335,6 +335,16 @@ Ext.define('PBS.Utils', { ); }, + render_schedule: function (val, metadat, record) { + if(record.data.disable === true) { + return gettext('Disabled'); + } + if(val) { + return val; + } + return Proxmox.Utils.NoneText; + }, + get_help_tool: function (blockid) { let info = Proxmox.Utils.get_help_info(blockid); if (info === undefined) { diff --git a/www/config/GCView.js b/www/config/GCView.js index 9fcc22344..b966fdf66 100644 --- a/www/config/GCView.js +++ b/www/config/GCView.js @@ -5,6 +5,7 @@ Ext.define('pbs-gc-jobs-status', { 'upid', 'removed-bytes', 'pending-bytes', + 'disable', 'schedule', 'next-run', 'last-run-endtime', @@ -73,6 +74,7 @@ Ext.define('PBS.config.GCJobView', { datastore: data.store, id: data.store, schedule: data.schedule, + disable: data.disable, listeners: { destroy: () => this.reload(), }, @@ -181,7 +183,7 @@ Ext.define('PBS.config.GCJobView', { header: gettext('Schedule'), dataIndex: 'schedule', hideable: false, - renderer: (value) => (value ? value : Proxmox.Utils.NoneText), + renderer: PBS.Utils.render_schedule, minWidth: 85, flex: 1, }, diff --git a/www/config/PruneView.js b/www/config/PruneView.js index f38724687..c6fb750c7 100644 --- a/www/config/PruneView.js +++ b/www/config/PruneView.js @@ -234,6 +234,7 @@ Ext.define('PBS.config.PruneJobView', { minWidth: 80, flex: 1, sortable: true, + renderer: PBS.Utils.render_schedule, }, { text: gettext('Keep'), diff --git a/www/config/SyncView.js b/www/config/SyncView.js index 386489120..499c5f2e2 100644 --- a/www/config/SyncView.js +++ b/www/config/SyncView.js @@ -8,6 +8,7 @@ Ext.define('pbs-sync-jobs-status', { 'remote-ns', 'store', 'ns', + 'disable', 'schedule', 'group-filter', 'next-run', @@ -395,6 +396,7 @@ Ext.define('PBS.config.SyncJobView', { minWidth: 80, flex: 1, sortable: true, + renderer: PBS.Utils.render_schedule, }, { header: gettext('Last Sync'), diff --git a/www/config/VerifyView.js b/www/config/VerifyView.js index 2c63f0d79..7b72e7a35 100644 --- a/www/config/VerifyView.js +++ b/www/config/VerifyView.js @@ -5,6 +5,7 @@ Ext.define('pbs-verify-jobs-status', { 'store', 'outdated-after', 'ignore-verified', + 'disable', 'schedule', 'next-run', 'last-run-upid', @@ -253,6 +254,7 @@ Ext.define('PBS.config.VerifyJobView', { maxWidth: 220, minWidth: 80, flex: 1, + renderer: PBS.Utils.render_schedule, }, { header: gettext('Last Verification'), diff --git a/www/tape/BackupJobs.js b/www/tape/BackupJobs.js index 68d808af5..7e36ad4d2 100644 --- a/www/tape/BackupJobs.js +++ b/www/tape/BackupJobs.js @@ -7,6 +7,7 @@ Ext.define('pbs-tape-backup-job-status', { 'drive', 'store', 'schedule', + 'disable', 'comment', 'group-filter', { name: 'eject-media', type: 'boolean' }, @@ -259,6 +260,7 @@ Ext.define('PBS.config.TapeBackupJobView', { minWidth: 80, flex: 1, sortable: true, + renderer: PBS.Utils.render_schedule, }, { header: gettext('Last Backup'), -- 2.47.3