]> git.proxmox.com Git - pve-manager.git/commitdiff
ui: move disk reassign into window/ folder
authorThomas Lamprecht <t.lamprecht@proxmox.com>
Thu, 7 Apr 2022 12:33:58 +0000 (14:33 +0200)
committerThomas Lamprecht <t.lamprecht@proxmox.com>
Fri, 8 Apr 2022 12:53:55 +0000 (14:53 +0200)
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Reviewed-by: Fabian Ebner <f.ebner@proxmox.com>
www/manager6/Makefile
www/manager6/lxc/Resources.js
www/manager6/qemu/HDReassign.js [deleted file]
www/manager6/qemu/HardwareView.js
www/manager6/window/GuestDiskReassign.js [new file with mode: 0644]

index a71015536002d76790dc6e177b21558ba1086f5f..d488c3a8c77327b01816e30e02b841c5956f7e3d 100644 (file)
@@ -114,6 +114,7 @@ JSSRC=                                                      \
        window/UploadToStorage.js                       \
        window/ScheduleSimulator.js                     \
        window/Wizard.js                                \
+       window/GuestDiskReassign.js                             \
        ha/Fencing.js                                   \
        ha/GroupEdit.js                                 \
        ha/GroupSelector.js                             \
@@ -213,7 +214,6 @@ JSSRC=                                                      \
        qemu/HDEfi.js                                   \
        qemu/HDTPM.js                                   \
        qemu/HDMove.js                                  \
-       qemu/HDReassign.js                              \
        qemu/HDResize.js                                \
        qemu/HardwareView.js                            \
        qemu/IPConfigEdit.js                            \
index 73defa18cd9ff20088b6d6d78c4459ae4d3b1c5e..f56f02a9fd561e3ede465465d1d91769c4aeee21 100644 (file)
@@ -186,7 +186,7 @@ Ext.define('PVE.lxc.RessourceView', {
                return;
            }
 
-           Ext.create('PVE.window.HDReassign', {
+           Ext.create('PVE.window.GuestDiskReassign', {
                disk: rec.data.key,
                nodename: nodename,
                autoShow: true,
diff --git a/www/manager6/qemu/HDReassign.js b/www/manager6/qemu/HDReassign.js
deleted file mode 100644 (file)
index b6c6796..0000000
+++ /dev/null
@@ -1,272 +0,0 @@
-Ext.define('PVE.window.HDReassign', {
-    extend: 'Proxmox.window.Edit',
-    mixins: ['Proxmox.Mixin.CBind'],
-
-    resizable: false,
-    modal: true,
-    width: 350,
-    border: false,
-    layout: 'fit',
-    showReset: false,
-    showProgress: true,
-    method: 'POST',
-
-    viewModel: {
-       data: {
-           mpType: '',
-       },
-       formulas: {
-           mpMaxCount: get => get('mpType') === 'mp'
-               ? PVE.Utils.mp_counts.mps - 1
-               : PVE.Utils.mp_counts.unused - 1,
-       },
-    },
-
-    cbindData: function() {
-       let me = this;
-       return {
-           vmid: me.vmid,
-           disk: me.disk,
-           isQemu: me.type === 'qemu',
-           nodename: me.nodename,
-           url: () => {
-               let endpoint = me.type === 'qemu' ? 'move_disk' : 'move_volume';
-               return `/nodes/${me.nodename}/${me.type}/${me.vmid}/${endpoint}`;
-           },
-       };
-    },
-
-    cbind: {
-       title: get => get('isQemu') ? gettext('Reassign disk') : gettext('Reassign volume'),
-       submitText: get => get('title'),
-       qemu: '{isQemu}',
-       url: '{url}',
-    },
-
-    getValues: function() {
-       let me = this;
-       let values = me.formPanel.getForm().getValues();
-
-       let params = {
-           vmid: me.vmid,
-           'target-vmid': values.targetVmid,
-       };
-
-       params[me.qemu ? 'disk' : 'volume'] = me.disk;
-
-       if (me.qemu) {
-           params['target-disk'] = `${values.controller}${values.deviceid}`;
-       } else {
-           params['target-volume'] = `${values.mpType}${values.mpId}`;
-       }
-       return params;
-    },
-
-    controller: {
-       xclass: 'Ext.app.ViewController',
-
-       initViewModel: function(model) {
-           let view = this.getView();
-           let mpTypeValue = view.disk.match(/^unused\d+/) ? 'unused' : 'mp';
-           model.set('mpType', mpTypeValue);
-       },
-
-       onMpTypeChange: function(value) {
-           this.getView().getViewModel().set('mpType', value.getValue());
-           this.getView().lookup('mpIdSelector').validate();
-       },
-
-       onTargetVMChange: function(f, vmid) {
-           let me = this;
-           let view = me.getView();
-           let diskSelector = view.lookup('diskSelector');
-           if (!vmid) {
-               diskSelector.setVMConfig(null);
-               me.VMConfig = null;
-               return;
-           }
-
-           let type = view.qemu ? 'qemu' : 'lxc';
-
-           let url = `/nodes/${view.nodename}/${type}/${vmid}/config`;
-           Proxmox.Utils.API2Request({
-               url: url,
-               method: 'GET',
-               failure: response => Ext.Msg.alert(gettext('Error'), response.htmlStatus),
-               success: function(response, options) {
-                   if (view.qemu) {
-                       diskSelector.setVMConfig(response.result.data);
-                       diskSelector.setDisabled(false);
-                   } else {
-                       let mpIdSelector = view.lookup('mpIdSelector');
-                       let mpType = view.lookup('mpType');
-
-                       view.VMConfig = response.result.data;
-
-                       mpIdSelector.setValue(
-                           PVE.Utils.nextFreeMP(
-                               view.getViewModel().get('mpType'),
-                               view.VMConfig,
-                           ).id,
-                       );
-
-                       mpType.setDisabled(false);
-                       mpIdSelector.setDisabled(false);
-                       mpIdSelector.validate();
-                   }
-               },
-           });
-       },
-    },
-
-    items: [
-       {
-           xtype: 'form',
-           reference: 'moveFormPanel',
-           border: false,
-           fieldDefaults: {
-               labelWidth: 100,
-               anchor: '100%',
-           },
-           items: [
-               {
-                   xtype: 'displayfield',
-                   name: 'sourceDisk',
-                   fieldLabel: gettext('Source'),
-                   cbind: {
-                       name: get => get('isQemu') ? 'disk' : 'volume',
-                       value: '{disk}',
-                   },
-                   allowBlank: false,
-               },
-               {
-                   xtype: 'vmComboSelector',
-                   reference: 'targetVMID',
-                   name: 'targetVmid',
-                   allowBlank: false,
-                   fieldLabel: gettext('Target'),
-                   bind: {
-                       value: '{targetVMID}',
-                   },
-                   store: {
-                       model: 'PVEResources',
-                       autoLoad: true,
-                       sorters: 'vmid',
-                       cbind: {}, // for nested cbinds
-                       filters: [
-                           {
-                               property: 'type',
-                               cbind: {
-                                   value: get => get('isQemu') ? 'qemu' : 'lxc',
-                               },
-                           },
-                           {
-                               property: 'node',
-                               cbind: {
-                                   value: '{nodename}',
-                               },
-                           },
-                           {
-                               property: 'vmid',
-                               operator: '!=',
-                               cbind: {
-                                   value: '{vmid}',
-                               },
-                           },
-                           {
-                               property: 'template',
-                               value: 0,
-                           },
-                       ],
-                   },
-                   listeners: { change: 'onTargetVMChange' },
-               },
-               {
-                   xtype: 'pveControllerSelector',
-                   reference: 'diskSelector',
-                   withUnused: true,
-                   disabled: true,
-                   cbind: {
-                       hidden: '{!isQemu}',
-                   },
-               },
-               {
-                   xtype: 'container',
-                   layout: 'hbox',
-                   cbind: {
-                       hidden: '{isQemu}',
-                       disabled: '{isQemu}',
-                   },
-                   items: [
-                       {
-                           xtype: 'pmxDisplayEditField',
-                           cbind: {
-                               editable: get => !get('disk').match(/^unused\d+/),
-                               value: get => get('disk').match(/^unused\d+/) ? 'unused' : 'mp',
-                           },
-                           disabled: true,
-                           name: 'mpType',
-                           reference: 'mpType',
-                           fieldLabel: gettext('Add as'),
-                           submitValue: true,
-                           flex: 4,
-                           editConfig: {
-                               xtype: 'proxmoxKVComboBox',
-                               name: 'mpTypeCombo',
-                               reference: 'mpTypeCombo',
-                               deleteEmpty: false,
-                               cbind: {
-                                   hidden: '{isQemu}',
-                               },
-                               comboItems: [
-                                   ['mp', gettext('Mount Point')],
-                                   ['unused', gettext('Unused')],
-                               ],
-                               listeners: { change: 'onMpTypeChange' },
-                           },
-                       },
-                       {
-                           xtype: 'proxmoxintegerfield',
-                           name: 'mpId',
-                           reference: 'mpIdSelector',
-                           minValue: 0,
-                           flex: 1,
-                           allowBlank: false,
-                           validateOnChange: true,
-                           disabled: true,
-                           bind: {
-                               maxValue: '{mpMaxCount}',
-                           },
-                           validator: function(value) {
-                               let view = this.up('window');
-                               let type = view.getViewModel().get('mpType');
-                               if (Ext.isDefined(view.VMConfig[`${type}${value}`])) {
-                                   return "Mount point is already in use.";
-                               }
-                               return true;
-                           },
-                       },
-                   ],
-               },
-           ],
-       },
-    ],
-
-    initComponent: function() {
-       let me = this;
-
-       if (!me.nodename) {
-           throw "no node name specified";
-       }
-
-       if (!me.vmid) {
-           throw "no VM ID specified";
-       }
-
-       if (!me.type) {
-           throw "no type specified";
-       }
-
-       me.callParent();
-    },
-});
index 3974d94982290b7efbb9b71657ca68098acb2a85..6e9d03b4a36867defbe2dd1c606c3979d67e8dcc 100644 (file)
@@ -411,7 +411,7 @@ Ext.define('PVE.qemu.HardwareView', {
                    return;
                }
 
-               Ext.create('PVE.window.HDReassign', {
+               Ext.create('PVE.window.GuestDiskReassign', {
                    autoShow: true,
                    disk: rec.data.key,
                    nodename: nodename,
diff --git a/www/manager6/window/GuestDiskReassign.js b/www/manager6/window/GuestDiskReassign.js
new file mode 100644 (file)
index 0000000..f288956
--- /dev/null
@@ -0,0 +1,272 @@
+Ext.define('PVE.window.GuestDiskReassign', {
+    extend: 'Proxmox.window.Edit',
+    mixins: ['Proxmox.Mixin.CBind'],
+
+    resizable: false,
+    modal: true,
+    width: 350,
+    border: false,
+    layout: 'fit',
+    showReset: false,
+    showProgress: true,
+    method: 'POST',
+
+    viewModel: {
+       data: {
+           mpType: '',
+       },
+       formulas: {
+           mpMaxCount: get => get('mpType') === 'mp'
+               ? PVE.Utils.mp_counts.mps - 1
+               : PVE.Utils.mp_counts.unused - 1,
+       },
+    },
+
+    cbindData: function() {
+       let me = this;
+       return {
+           vmid: me.vmid,
+           disk: me.disk,
+           isQemu: me.type === 'qemu',
+           nodename: me.nodename,
+           url: () => {
+               let endpoint = me.type === 'qemu' ? 'move_disk' : 'move_volume';
+               return `/nodes/${me.nodename}/${me.type}/${me.vmid}/${endpoint}`;
+           },
+       };
+    },
+
+    cbind: {
+       title: get => get('isQemu') ? gettext('Reassign disk') : gettext('Reassign volume'),
+       submitText: get => get('title'),
+       qemu: '{isQemu}',
+       url: '{url}',
+    },
+
+    getValues: function() {
+       let me = this;
+       let values = me.formPanel.getForm().getValues();
+
+       let params = {
+           vmid: me.vmid,
+           'target-vmid': values.targetVmid,
+       };
+
+       params[me.qemu ? 'disk' : 'volume'] = me.disk;
+
+       if (me.qemu) {
+           params['target-disk'] = `${values.controller}${values.deviceid}`;
+       } else {
+           params['target-volume'] = `${values.mpType}${values.mpId}`;
+       }
+       return params;
+    },
+
+    controller: {
+       xclass: 'Ext.app.ViewController',
+
+       initViewModel: function(model) {
+           let view = this.getView();
+           let mpTypeValue = view.disk.match(/^unused\d+/) ? 'unused' : 'mp';
+           model.set('mpType', mpTypeValue);
+       },
+
+       onMpTypeChange: function(value) {
+           this.getView().getViewModel().set('mpType', value.getValue());
+           this.getView().lookup('mpIdSelector').validate();
+       },
+
+       onTargetVMChange: function(f, vmid) {
+           let me = this;
+           let view = me.getView();
+           let diskSelector = view.lookup('diskSelector');
+           if (!vmid) {
+               diskSelector.setVMConfig(null);
+               me.VMConfig = null;
+               return;
+           }
+
+           let type = view.qemu ? 'qemu' : 'lxc';
+
+           let url = `/nodes/${view.nodename}/${type}/${vmid}/config`;
+           Proxmox.Utils.API2Request({
+               url: url,
+               method: 'GET',
+               failure: response => Ext.Msg.alert(gettext('Error'), response.htmlStatus),
+               success: function(response, options) {
+                   if (view.qemu) {
+                       diskSelector.setVMConfig(response.result.data);
+                       diskSelector.setDisabled(false);
+                   } else {
+                       let mpIdSelector = view.lookup('mpIdSelector');
+                       let mpType = view.lookup('mpType');
+
+                       view.VMConfig = response.result.data;
+
+                       mpIdSelector.setValue(
+                           PVE.Utils.nextFreeMP(
+                               view.getViewModel().get('mpType'),
+                               view.VMConfig,
+                           ).id,
+                       );
+
+                       mpType.setDisabled(false);
+                       mpIdSelector.setDisabled(false);
+                       mpIdSelector.validate();
+                   }
+               },
+           });
+       },
+    },
+
+    items: [
+       {
+           xtype: 'form',
+           reference: 'moveFormPanel',
+           border: false,
+           fieldDefaults: {
+               labelWidth: 100,
+               anchor: '100%',
+           },
+           items: [
+               {
+                   xtype: 'displayfield',
+                   name: 'sourceDisk',
+                   fieldLabel: gettext('Source'),
+                   cbind: {
+                       name: get => get('isQemu') ? 'disk' : 'volume',
+                       value: '{disk}',
+                   },
+                   allowBlank: false,
+               },
+               {
+                   xtype: 'vmComboSelector',
+                   reference: 'targetVMID',
+                   name: 'targetVmid',
+                   allowBlank: false,
+                   fieldLabel: gettext('Target'),
+                   bind: {
+                       value: '{targetVMID}',
+                   },
+                   store: {
+                       model: 'PVEResources',
+                       autoLoad: true,
+                       sorters: 'vmid',
+                       cbind: {}, // for nested cbinds
+                       filters: [
+                           {
+                               property: 'type',
+                               cbind: {
+                                   value: get => get('isQemu') ? 'qemu' : 'lxc',
+                               },
+                           },
+                           {
+                               property: 'node',
+                               cbind: {
+                                   value: '{nodename}',
+                               },
+                           },
+                           {
+                               property: 'vmid',
+                               operator: '!=',
+                               cbind: {
+                                   value: '{vmid}',
+                               },
+                           },
+                           {
+                               property: 'template',
+                               value: 0,
+                           },
+                       ],
+                   },
+                   listeners: { change: 'onTargetVMChange' },
+               },
+               {
+                   xtype: 'pveControllerSelector',
+                   reference: 'diskSelector',
+                   withUnused: true,
+                   disabled: true,
+                   cbind: {
+                       hidden: '{!isQemu}',
+                   },
+               },
+               {
+                   xtype: 'container',
+                   layout: 'hbox',
+                   cbind: {
+                       hidden: '{isQemu}',
+                       disabled: '{isQemu}',
+                   },
+                   items: [
+                       {
+                           xtype: 'pmxDisplayEditField',
+                           cbind: {
+                               editable: get => !get('disk').match(/^unused\d+/),
+                               value: get => get('disk').match(/^unused\d+/) ? 'unused' : 'mp',
+                           },
+                           disabled: true,
+                           name: 'mpType',
+                           reference: 'mpType',
+                           fieldLabel: gettext('Add as'),
+                           submitValue: true,
+                           flex: 4,
+                           editConfig: {
+                               xtype: 'proxmoxKVComboBox',
+                               name: 'mpTypeCombo',
+                               reference: 'mpTypeCombo',
+                               deleteEmpty: false,
+                               cbind: {
+                                   hidden: '{isQemu}',
+                               },
+                               comboItems: [
+                                   ['mp', gettext('Mount Point')],
+                                   ['unused', gettext('Unused')],
+                               ],
+                               listeners: { change: 'onMpTypeChange' },
+                           },
+                       },
+                       {
+                           xtype: 'proxmoxintegerfield',
+                           name: 'mpId',
+                           reference: 'mpIdSelector',
+                           minValue: 0,
+                           flex: 1,
+                           allowBlank: false,
+                           validateOnChange: true,
+                           disabled: true,
+                           bind: {
+                               maxValue: '{mpMaxCount}',
+                           },
+                           validator: function(value) {
+                               let view = this.up('window');
+                               let type = view.getViewModel().get('mpType');
+                               if (Ext.isDefined(view.VMConfig[`${type}${value}`])) {
+                                   return "Mount point is already in use.";
+                               }
+                               return true;
+                           },
+                       },
+                   ],
+               },
+           ],
+       },
+    ],
+
+    initComponent: function() {
+       let me = this;
+
+       if (!me.nodename) {
+           throw "no node name specified";
+       }
+
+       if (!me.vmid) {
+           throw "no VM ID specified";
+       }
+
+       if (!me.type) {
+           throw "no type specified";
+       }
+
+       me.callParent();
+    },
+});