From 0732de361ab72597fbaeb3f7658d9f2bb80af258 Mon Sep 17 00:00:00 2001 From: Dominik Csapak Date: Wed, 26 May 2021 15:48:07 +0200 Subject: [PATCH] ui: tape/TapeRestore: add MediaSetSelector when no uuid/mediaset is given. we change a bit how we use the uuid by moving it into the viewmodel (instead of a simple property on the view) so that we can always use the selected one Signed-off-by: Dominik Csapak --- www/tape/window/TapeRestore.js | 45 ++++++++++++++++++++++++++++++++-- 1 file changed, 43 insertions(+), 2 deletions(-) diff --git a/www/tape/window/TapeRestore.js b/www/tape/window/TapeRestore.js index 1afd57fe..1987dff4 100644 --- a/www/tape/window/TapeRestore.js +++ b/www/tape/window/TapeRestore.js @@ -14,6 +14,10 @@ Ext.define('PBS.TapeManagement.TapeRestoreWindow', { showTaskViewer: true, isCreate: true, + mediaset: undefined, + prefilter: undefined, + uuid: undefined, + cbindData: function(config) { let me = this; if (me.prefilter !== undefined) { @@ -27,6 +31,7 @@ Ext.define('PBS.TapeManagement.TapeRestoreWindow', { viewModel: { data: { + uuid: "", singleDatastore: true, }, formulas: { @@ -43,6 +48,13 @@ Ext.define('PBS.TapeManagement.TapeRestoreWindow', { return panel.query('[isFormField]').every(field => field.isValid()); }, + changeMediaSet: function(field, value) { + let me = this; + let vm = me.getViewModel(); + vm.set('uuid', value); + me.updateSnapshots(); + }, + checkValidity: function() { let me = this; @@ -203,10 +215,12 @@ Ext.define('PBS.TapeManagement.TapeRestoreWindow', { let me = this; let view = me.getView(); let grid = me.lookup('snapshotGrid'); + let vm = me.getViewModel(); + let uuid = vm.get('uuid'); Proxmox.Utils.API2Request({ waitMsgTarget: view, - url: `/tape/media/content?media-set=${view.uuid}`, + url: `/tape/media/content?media-set=${uuid}`, success: function(response, opt) { let datastores = {}; for (const content of response.result.data) { @@ -229,6 +243,13 @@ Ext.define('PBS.TapeManagement.TapeRestoreWindow', { }); }, + init: function(view) { + let me = this; + let vm = me.getViewModel(); + + vm.set('uuid', view.uuid); + }, + control: { '[isFormField]': { change: 'checkValidity', @@ -283,11 +304,29 @@ Ext.define('PBS.TapeManagement.TapeRestoreWindow', { }, column1: [ + { + xtype: 'pbsMediaSetSelector', + fieldLabel: gettext('Media-Set'), + width: 350, + submitValue: false, + bind: { + value: '{uuid}', + }, + cbind: { + hidden: '{uuid}', + disabled: '{uuid}', + }, + listeners: { + change: 'changeMediaSet', + }, + }, { xtype: 'displayfield', fieldLabel: gettext('Media-Set'), cbind: { value: '{mediaset}', + hidden: '{!uuid}', + disabled: '{!uuid}', }, }, ], @@ -298,8 +337,10 @@ Ext.define('PBS.TapeManagement.TapeRestoreWindow', { fieldLabel: gettext('Media-Set UUID'), name: 'media-set', submitValue: true, - cbind: { + bind: { value: '{uuid}', + hidden: '{!uuid}', + disabled: '{!uuid}', }, }, ],