proxmox-backup/www/tape/window/TapeBackup.js
Stefan Sterz 5e12ca4ce7 fix: tape ui: unset deleteEmpty in TapeBackupWindow
since the api rejects unknown parameters, deleteEmpty needs to be
unset here, because the endpoint for creating backups does not support
deleting parameters. otherwise a user will get a fairly cryptic error
message in the gui.

Signed-off-by: Stefan Sterz <s.sterz@proxmox.com>
2024-04-25 11:46:43 +02:00

126 lines
2.8 KiB
JavaScript

Ext.define('PBS.TapeManagement.TapeBackupWindow', {
extend: 'Proxmox.window.Edit',
alias: 'pbsTapeBackupWindow',
subject: gettext('Backup'),
url: '/api2/extjs/tape/backup',
method: 'POST',
showTaskViewer: true,
isCreate: true,
viewModel: {
data: {
notificationMode: 'notification-system',
},
formulas: {
notificationSystemSelected: (get) => get('notificationMode') === 'notification-system',
},
},
items: [
{
xtype: 'inputpanel',
column1: [
{
xtype: 'pbsDataStoreSelector',
fieldLabel: gettext('Datastore'),
name: 'store',
listeners: {
change: function(_, value) {
let me = this;
if (value) {
let namespace = me.up('window').down('pbsNamespaceSelector');
namespace.setDatastore(value);
namespace.setDisabled(false);
me.up('window').down('pbsNamespaceMaxDepth').setDisabled(false);
}
},
},
},
{
xtype: 'pbsNamespaceSelector',
fieldLabel: gettext('Namespace'),
disabled: true,
name: 'ns',
},
{
xtype: 'pbsNamespaceMaxDepth',
fieldLabel: gettext('Max Depth'),
disabled: true,
name: 'max-depth',
deleteEmpty: false,
},
{
xtype: 'pbsMediaPoolSelector',
fieldLabel: gettext('Media Pool'),
name: 'pool',
},
{
xtype: 'pbsDriveSelector',
fieldLabel: gettext('Drive'),
name: 'drive',
},
],
column2: [
{
xtype: 'proxmoxcheckbox',
labelWidth: 150,
name: 'force-media-set',
fieldLabel: gettext('Force new Media-Set'),
},
{
xtype: 'proxmoxcheckbox',
labelWidth: 150,
name: 'export-media-set',
fieldLabel: gettext('Export Media-Set'),
listeners: {
change: function(cb, value) {
let me = this;
let eject = me.up('window').down('proxmoxcheckbox[name=eject-media]');
if (value) {
eject.setValue(false);
}
eject.setDisabled(!!value);
},
},
},
{
xtype: 'proxmoxcheckbox',
labelWidth: 150,
name: 'eject-media',
fieldLabel: gettext('Eject Media'),
},
{
xtype: 'proxmoxKVComboBox',
labelWidth: 150,
comboItems: [
['legacy-sendmail', gettext('Email (legacy)')],
['notification-system', gettext('Notification system')],
],
fieldLabel: gettext('Notification mode'),
name: 'notification-mode',
bind: {
value: '{notificationMode}',
},
},
{
xtype: 'pmxUserSelector',
labelWidth: 150,
name: 'notify-user',
fieldLabel: gettext('Notify User'),
emptyText: 'root@pam',
value: null,
allowBlank: true,
skipEmptyText: true,
bind: {
disabled: "{notificationSystemSelected}",
},
renderer: Ext.String.htmlEncode,
},
],
},
],
});