]> git.proxmox.com Git - pve-manager.git/blob - www/manager6/qemu/HDResize.js
ui: qemu: show progress bar for resize task
[pve-manager.git] / www / manager6 / qemu / HDResize.js
1 Ext.define('PVE.window.HDResize', {
2 extend: 'Ext.window.Window',
3
4 resizable: false,
5
6 resize_disk: function(disk, size) {
7 var me = this;
8 var params = { disk: disk, size: '+' + size + 'G' };
9
10 Proxmox.Utils.API2Request({
11 params: params,
12 url: '/nodes/' + me.nodename + '/qemu/' + me.vmid + '/resize',
13 waitMsgTarget: me,
14 method: 'PUT',
15 failure: function(response, opts) {
16 Ext.Msg.alert(gettext('Error'), response.htmlStatus);
17 },
18 success: function(response, options) {
19 Ext.create('Proxmox.window.TaskProgress', {
20 autoShow: true,
21 upid: response.result.data,
22 });
23 me.close();
24 },
25 });
26 },
27
28 initComponent: function() {
29 var me = this;
30
31 if (!me.nodename) {
32 throw "no node name specified";
33 }
34
35 if (!me.vmid) {
36 throw "no VM ID specified";
37 }
38
39 var items = [
40 {
41 xtype: 'displayfield',
42 name: 'disk',
43 value: me.disk,
44 fieldLabel: gettext('Disk'),
45 vtype: 'StorageId',
46 allowBlank: false,
47 },
48 ];
49
50 me.hdsizesel = Ext.createWidget('numberfield', {
51 name: 'size',
52 minValue: 0,
53 maxValue: 128*1024,
54 decimalPrecision: 3,
55 value: '0',
56 fieldLabel: gettext('Size Increment') + ' (GiB)',
57 allowBlank: false,
58 });
59
60 items.push(me.hdsizesel);
61
62 me.formPanel = Ext.create('Ext.form.Panel', {
63 bodyPadding: 10,
64 border: false,
65 fieldDefaults: {
66 labelWidth: 140,
67 anchor: '100%',
68 },
69 items: items,
70 });
71
72 var form = me.formPanel.getForm();
73
74 var submitBtn;
75
76 me.title = gettext('Resize disk');
77 submitBtn = Ext.create('Ext.Button', {
78 text: gettext('Resize disk'),
79 handler: function() {
80 if (form.isValid()) {
81 var values = form.getValues();
82 me.resize_disk(me.disk, values.size);
83 }
84 },
85 });
86
87 Ext.apply(me, {
88 modal: true,
89 width: 250,
90 height: 150,
91 border: false,
92 layout: 'fit',
93 buttons: [submitBtn],
94 items: [me.formPanel],
95 });
96
97
98 me.callParent();
99 },
100 });