ui: backup job details: show notification-mode instead of legacy keys

The backup job details view was never updated after the overhaul of the
notification system. In this commit we remove the left-over
notification-policy/target handling and change the view so that we
display the current configuration based on notification-mode, mailto and
mailnotification.

Signed-off-by: Lukas Wagner <l.wagner@proxmox.com>
Link: https://lore.proxmox.com/20250709081432.91868-3-l.wagner@proxmox.com
This commit is contained in:
Lukas Wagner 2025-07-09 10:14:32 +02:00 committed by Thomas Lamprecht
parent df147ed0ff
commit 0640648bcd

View file

@ -165,6 +165,7 @@ Ext.define('PVE.dc.BackupInfo', {
viewModel: {
data: {
retentionType: 'none',
hideRecipients: true,
},
formulas: {
hasRetention: (get) => get('retentionType') !== 'none',
@ -206,28 +207,37 @@ Ext.define('PVE.dc.BackupInfo', {
column2: [
{
xtype: 'displayfield',
name: 'notification-policy',
name: 'notification-mode',
fieldLabel: gettext('Notification'),
renderer: function (value) {
value = value ?? 'auto';
let record = this.up('pveBackupInfo')?.record;
let mailto = record?.mailto;
let mailnotification = record?.mailnotification ?? 'always';
// Fall back to old value, in case this option is not migrated yet.
let policy = value || record?.mailnotification || 'always';
let when = gettext('Always');
if (policy === 'failure') {
when = gettext('On failure only');
} else if (policy === 'never') {
when = gettext('Never');
if ((value === 'auto' && mailto === undefined) || (value === 'notification-system')) {
return gettext('Use global notification settings');
} else if (mailnotification === 'always') {
return gettext('Always send email');
} else {
return gettext('Send email on failure');
}
},
},
{
xtype: 'displayfield',
name: 'mailto',
fieldLabel: gettext('Recipients'),
hidden: true,
bind: {
hidden: '{hideRecipients}',
},
renderer: function (value) {
if (!value) {
return gettext('No recipients configured');
}
// Notification-target takes precedence
let target =
record?.['notification-target'] ||
record?.mailto ||
gettext('No target configured');
return `${when} (${target})`;
return value;
},
},
{
@ -382,6 +392,12 @@ Ext.define('PVE.dc.BackupInfo', {
vm.set('retentionType', 'none');
}
let notificationMode = values['notification-mode'] ?? 'auto';
let mailto = values.mailto;
let hideRecipients = (notificationMode === 'auto' && mailto === undefined) || (notificationMode === 'notification-system');
vm.set('hideRecipients', hideRecipients);
// selection Mode depends on the presence/absence of several keys
let selModeField = me.query('[isFormField][name=selMode]')[0];
let selMode = 'none';