]> git.proxmox.com Git - pve-manager.git/blame - www/manager6/qemu/HDMove.js
ui: eslint: enforce "dot-notation" rule
[pve-manager.git] / www / manager6 / qemu / HDMove.js
CommitLineData
5d485b70
DM
1Ext.define('PVE.window.HDMove', {
2 extend: 'Ext.window.Window',
3
4 resizable: false,
5
6
7 move_disk: function(disk, storage, format, delete_disk) {
8 var me = this;
53e3ea84 9 var qemu = me.type === 'qemu';
d47512af
DC
10 var params = {};
11 params.storage = storage;
12 params[qemu ? 'disk':'volume'] = disk;
5d485b70 13
d47512af
DC
14 if (format && qemu) {
15 params.format = format;
16 }
5d485b70 17
5d485b70 18 if (delete_disk) {
399ffa76 19 params.delete = 1;
5d485b70
DM
20 }
21
d47512af
DC
22 var url = '/nodes/' + me.nodename + '/' + me.type + '/' + me.vmid + '/';
23 url += qemu ? 'move_disk' : 'move_volume';
24
e7ade592 25 Proxmox.Utils.API2Request({
5d485b70 26 params: params,
d47512af 27 url: url,
5d485b70
DM
28 waitMsgTarget: me,
29 method: 'POST',
30 failure: function(response, opts) {
31 Ext.Msg.alert('Error', response.htmlStatus);
32 },
33 success: function(response, options) {
34 var upid = response.result.data;
811a06ca 35 var win = Ext.create('Proxmox.window.TaskViewer', {
f6710aac 36 upid: upid,
811a06ca 37 });
5d485b70 38 win.show();
eb273d60 39 win.on('destroy', function() { me.close(); });
f6710aac 40 },
5d485b70 41 });
5d485b70
DM
42 },
43
8058410f 44 initComponent: function() {
5d485b70
DM
45 var me = this;
46
47 var diskarray = [];
48
49 if (!me.nodename) {
50 throw "no node name specified";
51 }
52
53 if (!me.vmid) {
54 throw "no VM ID specified";
55 }
56
d47512af
DC
57 if (!me.type) {
58 me.type = 'qemu';
59 }
60
53e3ea84 61 var qemu = me.type === 'qemu';
d47512af 62
5d485b70
DM
63 var items = [
64 {
65 xtype: 'displayfield',
d47512af 66 name: qemu ? 'disk' : 'volume',
5d485b70 67 value: me.disk,
d47512af 68 fieldLabel: qemu ? gettext('Disk') : gettext('Mount Point'),
5d485b70 69 vtype: 'StorageId',
f6710aac
TL
70 allowBlank: false,
71 },
5d485b70
DM
72 ];
73
fb71c9a5
DC
74 items.push({
75 xtype: 'pveDiskStorageSelector',
76 storageLabel: gettext('Target Storage'),
77 nodename: me.nodename,
d47512af 78 storageContent: qemu ? 'images' : 'rootdir',
f6710aac 79 hideSize: true,
5d485b70
DM
80 });
81
5d485b70 82 items.push({
896c0d50 83 xtype: 'proxmoxcheckbox',
5d485b70
DM
84 fieldLabel: gettext('Delete source'),
85 name: 'deleteDisk',
86 uncheckedValue: 0,
f6710aac 87 checked: false,
5d485b70
DM
88 });
89
90 me.formPanel = Ext.create('Ext.form.Panel', {
91 bodyPadding: 10,
92 border: false,
93 fieldDefaults: {
94 labelWidth: 100,
f6710aac 95 anchor: '100%',
5d485b70 96 },
f6710aac 97 items: items,
5d485b70
DM
98 });
99
100 var form = me.formPanel.getForm();
101
102 var submitBtn;
103
d47512af 104 me.title = qemu ? gettext("Move disk") : gettext('Move Volume');
5d485b70 105 submitBtn = Ext.create('Ext.Button', {
d47512af 106 text: me.title,
5d485b70
DM
107 handler: function() {
108 if (form.isValid()) {
109 var values = form.getValues();
110 me.move_disk(me.disk, values.hdstorage, values.diskformat,
111 values.deleteDisk);
112 }
f6710aac 113 },
5d485b70
DM
114 });
115
116 Ext.apply(me, {
117 modal: true,
118 width: 350,
119 border: false,
120 layout: 'fit',
8058410f
TL
121 buttons: [submitBtn],
122 items: [me.formPanel],
5d485b70
DM
123 });
124
125
126 me.callParent();
127
fb71c9a5
DC
128 me.mon(me.formPanel, 'validitychange', function(fp, isValid) {
129 submitBtn.setDisabled(!isValid);
130 });
5d485b70 131
fb71c9a5 132 me.formPanel.isValid();
f6710aac 133 },
5d485b70 134});