From 80df7cadedf596f32f7dbe156f3cbe6edb3889da Mon Sep 17 00:00:00 2001 From: Dominik Csapak Date: Fri, 13 May 2022 08:34:11 +0200 Subject: [PATCH] ui: tape/Backup: add namespace and recursion field for manual backup and change the layout to two columns, because the window was getting too tall. Signed-off-by: Dominik Csapak --- www/tape/window/TapeBackup.js | 135 +++++++++++++++++++++------------- 1 file changed, 83 insertions(+), 52 deletions(-) diff --git a/www/tape/window/TapeBackup.js b/www/tape/window/TapeBackup.js index 8a48897f..941b6b83 100644 --- a/www/tape/window/TapeBackup.js +++ b/www/tape/window/TapeBackup.js @@ -2,67 +2,98 @@ Ext.define('PBS.TapeManagement.TapeBackupWindow', { extend: 'Proxmox.window.Edit', alias: 'pbsTapeBackupWindow', - width: 400, subject: gettext('Backup'), url: '/api2/extjs/tape/backup', method: 'POST', showTaskViewer: true, isCreate: true, - defaults: { - labelWidth: 150, - }, - items: [ { - xtype: 'pbsDataStoreSelector', - fieldLabel: gettext('Datastore'), - name: 'store', - }, - { - xtype: 'pbsMediaPoolSelector', - fieldLabel: gettext('Media Pool'), - name: 'pool', - }, - { - xtype: 'pbsDriveSelector', - fieldLabel: gettext('Drive'), - name: 'drive', - }, - { - xtype: 'proxmoxcheckbox', - name: 'force-media-set', - fieldLabel: gettext('Force new Media-Set'), - }, - { - xtype: 'proxmoxcheckbox', - 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: '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: 'proxmoxcheckbox', - name: 'eject-media', - fieldLabel: gettext('Eject Media'), - }, - { - xtype: 'pmxUserSelector', - name: 'notify-user', - fieldLabel: gettext('Notify User'), - emptyText: 'root@pam', - value: null, - allowBlank: true, - skipEmptyText: true, - renderer: Ext.String.htmlEncode, + { + xtype: 'pbsNamespaceSelector', + fieldLabel: gettext('Namespace'), + disabled: true, + name: 'ns', + }, + { + xtype: 'pbsNamespaceMaxDepth', + fieldLabel: gettext('Max Depth'), + disabled: true, + name: 'max-depth', + }, + { + 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: 'pmxUserSelector', + labelWidth: 150, + name: 'notify-user', + fieldLabel: gettext('Notify User'), + emptyText: 'root@pam', + value: null, + allowBlank: true, + skipEmptyText: true, + renderer: Ext.String.htmlEncode, + }, + ], }, ], + });