},
{
xtype: 'displayfield',
- name: 'selMode',
- fieldLabel: gettext('Selection mode'),
+ name: 'next-run',
+ fieldLabel: gettext('Next Run'),
+ renderer: PVE.Utils.render_next_event,
},
{
xtype: 'displayfield',
- name: 'pool',
- fieldLabel: gettext('Pool to backup'),
+ name: 'selMode',
+ fieldLabel: gettext('Selection mode'),
},
],
column2: [
{
xtype: 'displayfield',
name: 'mailnotification',
- fieldLabel: gettext('Email notification'),
+ fieldLabel: gettext('Notification'),
renderer: function(value) {
let mailto = this.up('pveBackupInfo')?.record?.mailto || 'root@localhost';
let when = gettext('Always');
name: 'mode',
fieldLabel: gettext('Mode'),
renderer: function(value) {
- let msg;
- switch (value) {
- case 'snapshot':
- msg = gettext('Snapshot');
- break;
- case 'suspend':
- msg = gettext('Suspend');
- break;
- case 'stop':
- msg = gettext('Stop');
- break;
- }
- return msg;
+ const modeToDisplay = {
+ snapshot: gettext('Snapshot'),
+ stop: gettext('Stop'),
+ suspend: gettext('Snapshot'),
+ };
+ return modeToDisplay[value] ?? gettext('Unknown');
},
},
{
fieldLabel: gettext('Enabled'),
renderer: v => PVE.Parser.parseBoolean(v.toString()) ? gettext('Yes') : gettext('No'),
},
+ {
+ xtype: 'displayfield',
+ name: 'pool',
+ fieldLabel: gettext('Pool to backup'),
+ },
],
columnB: [
xtype: 'displayfield',
name: 'comment',
fieldLabel: gettext('Comment'),
+ renderer: Ext.String.htmlEncode,
},
{
- xtype: 'label',
- name: 'pruneLabel',
- text: gettext('Retention Configuration') + ':',
- bind: {
- hidden: '{!hasRetention}',
- },
- },
- {
+ xtype: 'fieldset',
+ title: gettext('Retention Configuration'),
layout: 'hbox',
- border: false,
+ collapsible: true,
defaults: {
border: false,
layout: 'anchor',
flex: 1,
},
+ bind: {
+ hidden: '{!hasRetention}',
+ },
items: [
{
padding: '0 10 0 0',
me.store.clearFilter(true);
me.store.filterBy(function(record) {
let data = record.data;
- for (const property in ['name', 'id', 'type']) {
+ for (const property of ['name', 'vmid', 'type']) {
if (data[property] === null) {
continue;
}