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