]> git.proxmox.com Git - pve-manager.git/blob - www/manager6/qemu/HDMove.js
update shipped appliance info index
[pve-manager.git] / www / manager6 / qemu / HDMove.js
1 Ext.define('PVE.window.HDMove', {
2 extend: 'Proxmox.window.Edit',
3 mixins: ['Proxmox.Mixin.CBind'],
4
5 resizable: false,
6 modal: true,
7 width: 350,
8 border: false,
9 layout: 'fit',
10 showReset: false,
11 showTaskViewer: true,
12 method: 'POST',
13
14 cbindData: function() {
15 let me = this;
16 return {
17 disk: me.disk,
18 isQemu: me.type === 'qemu',
19 nodename: me.nodename,
20 url: () => {
21 let endpoint = me.type === 'qemu' ? 'move_disk' : 'move_volume';
22 return `/nodes/${me.nodename}/${me.type}/${me.vmid}/${endpoint}`;
23 },
24 };
25 },
26
27 cbind: {
28 title: get => get('isQemu') ? gettext("Move disk") : gettext('Move Volume'),
29 submitText: get => get('title'),
30 qemu: '{isQemu}',
31 url: '{url}',
32 },
33
34 getValues: function() {
35 let me = this;
36 let values = me.formPanel.getForm().getValues();
37
38 let params = {
39 storage: values.hdstorage,
40 };
41 params[me.qemu ? 'disk' : 'volume'] = me.disk;
42
43 if (values.diskformat && me.qemu) {
44 params.format = values.diskformat;
45 }
46
47 if (values.deleteDisk) {
48 params.delete = 1;
49 }
50 return params;
51 },
52
53 items: [
54 {
55 xtype: 'form',
56 reference: 'moveFormPanel',
57 border: false,
58 fieldDefaults: {
59 labelWidth: 100,
60 anchor: '100%',
61 },
62 items: [
63 {
64 xtype: 'displayfield',
65 cbind: {
66 name: get => get('isQemu') ? 'disk' : 'volume',
67 fieldLabel: get => get('isQemu') ? gettext('Disk') : gettext('Mount Point'),
68 value: '{disk}',
69 },
70 allowBlank: false,
71 },
72 {
73 xtype: 'pveDiskStorageSelector',
74 storageLabel: gettext('Target Storage'),
75 cbind: {
76 nodename: '{nodename}',
77 storageContent: get => get('isQemu') ? 'images' : 'rootdir',
78 hideFormat: get => get('disk') === 'tpmstate0',
79 },
80 hideSize: true,
81 },
82 {
83 xtype: 'proxmoxcheckbox',
84 fieldLabel: gettext('Delete source'),
85 name: 'deleteDisk',
86 uncheckedValue: 0,
87 checked: false,
88 },
89 ],
90 },
91 ],
92
93 initComponent: function() {
94 let me = this;
95
96 if (!me.nodename) {
97 throw "no node name specified";
98 }
99
100 if (!me.vmid) {
101 throw "no VM ID specified";
102 }
103
104 if (!me.type) {
105 throw "no type specified";
106 }
107
108 me.callParent();
109 },
110 });