]>
Commit | Line | Data |
---|---|---|
5d485b70 | 1 | Ext.define('PVE.window.HDMove', { |
1b42be84 AL |
2 | extend: 'Proxmox.window.Edit', |
3 | mixins: ['Proxmox.Mixin.CBind'], | |
5d485b70 DM |
4 | |
5 | resizable: false, | |
1b42be84 AL |
6 | modal: true, |
7 | width: 350, | |
8 | border: false, | |
9 | layout: 'fit', | |
10 | showReset: false, | |
c956508c | 11 | showTaskViewer: true, |
1b42be84 AL |
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 | }, | |
5d485b70 | 33 | |
1b42be84 AL |
34 | getValues: function() { |
35 | let me = this; | |
36 | let values = me.formPanel.getForm().getValues(); | |
5d485b70 | 37 | |
1b42be84 AL |
38 | let params = { |
39 | storage: values.hdstorage, | |
40 | }; | |
41 | params[me.qemu ? 'disk' : 'volume'] = me.disk; | |
5d485b70 | 42 | |
1b42be84 AL |
43 | if (values.diskformat && me.qemu) { |
44 | params.format = values.diskformat; | |
d47512af | 45 | } |
5d485b70 | 46 | |
1b42be84 | 47 | if (values.deleteDisk) { |
399ffa76 | 48 | params.delete = 1; |
5d485b70 | 49 | } |
1b42be84 AL |
50 | return params; |
51 | }, | |
5d485b70 | 52 | |
1b42be84 AL |
53 | items: [ |
54 | { | |
55 | xtype: 'form', | |
56 | reference: 'moveFormPanel', | |
57 | border: false, | |
58 | fieldDefaults: { | |
59 | labelWidth: 100, | |
60 | anchor: '100%', | |
f6710aac | 61 | }, |
1b42be84 AL |
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 | ], | |
5d485b70 | 92 | |
8058410f | 93 | initComponent: function() { |
1b42be84 | 94 | let me = this; |
5d485b70 | 95 | |
5d485b70 DM |
96 | if (!me.nodename) { |
97 | throw "no node name specified"; | |
98 | } | |
99 | ||
100 | if (!me.vmid) { | |
101 | throw "no VM ID specified"; | |
102 | } | |
103 | ||
d47512af | 104 | if (!me.type) { |
1b42be84 | 105 | throw "no type specified"; |
d47512af DC |
106 | } |
107 | ||
5d485b70 | 108 | me.callParent(); |
f6710aac | 109 | }, |
5d485b70 | 110 | }); |