]> git.proxmox.com Git - pve-manager.git/blame - www/manager6/qemu/HDThrottle.js
use windowEdit from widget toolkit
[pve-manager.git] / www / manager6 / qemu / HDThrottle.js
CommitLineData
ac3c553c
DM
1Ext.define('PVE.qemu.HDThrottleInputPanel', {
2 extend: 'PVE.panel.InputPanel',
3 alias: 'widget.PVE.qemu.HDThrottleInputPanel',
4
5 insideWizard: false,
6
7 unused: false, // ADD usused disk imaged
8
9 vmconfig: {}, // used to select usused disks
10
11 onGetValues: function(values) {
12 var me = this;
13
14 var confid = me.confid;
15
16 var names = ['mbps_rd', 'mbps_wr', 'iops_rd', 'iops_wr'];
17 Ext.Array.each(names, function(name) {
18 if (values[name]) {
19 me.drive[name] = values[name];
20 } else {
21 delete me.drive[name];
22 }
23 var burst_name = name + '_max';
24 if (values[burst_name] && values[name]) {
25 me.drive[burst_name] = values[burst_name];
26 } else {
27 delete me.drive[burst_name];
28 }
29 });
30
31 var params = {};
32
33 params[confid] = PVE.Parser.printQemuDrive(me.drive);
34
35 return params;
36 },
37
38 setDrive: function(drive) {
39 var me = this;
40
41 me.drive = drive;
42
43 var values = {};
44
45 values.mbps_rd = drive.mbps_rd;
46 values.mbps_wr = drive.mbps_wr;
47 values.iops_rd = drive.iops_rd;
48 values.iops_wr = drive.iops_wr;
49 values.mbps_rd_max = drive.mbps_rd_max;
50 values.mbps_wr_max = drive.mbps_wr_max;
51 values.iops_rd_max = drive.iops_rd_max;
52 values.iops_wr_max = drive.iops_wr_max;
53
54 me.setValues(values);
55 },
56
57 initComponent : function() {
58 var me = this;
59
60 me.drive = {};
61
62 me.column1 = [];
63 me.column2 = [];
64
65 var width2 = 140;
66
67 me.mbps_rd = Ext.widget('numberfield', {
68 name: 'mbps_rd',
69 minValue: 1,
70 step: 1,
71 fieldLabel: gettext('Read limit') + ' (MB/s)',
72 labelWidth: width2,
73 emptyText: gettext('unlimited')
74 });
75
76 me.column1.push(me.mbps_rd);
77
78 me.mbps_rd_max = Ext.widget('numberfield', {
79 name: 'mbps_rd_max',
80 minValue: 1,
81 step: 1,
82 fieldLabel: gettext('Read max burst') + ' (MB)',
83 labelWidth: width2,
84 emptyText: gettext('default')
85 });
86
87 me.column2.push(me.mbps_rd_max);
88
89
90 me.mbps_wr = Ext.widget('numberfield', {
91 name: 'mbps_wr',
92 minValue: 1,
93 step: 1,
94 fieldLabel: gettext('Write limit') + ' (MB/s)',
95 labelWidth: width2,
96 emptyText: gettext('unlimited')
97 });
98
99 me.column1.push(me.mbps_wr);
100
101 me.mbps_wr_max = Ext.widget('numberfield', {
102 name: 'mbps_wr_max',
103 minValue: 1,
104 step: 1,
105 fieldLabel: gettext('Write max burst') + ' (MB)',
106 labelWidth: width2,
107 emptyText: gettext('default')
108 });
109
110 me.column2.push(me.mbps_wr_max);
111
bf96f60d 112 me.iops_rd = Ext.widget('proxmoxintegerfield', {
ac3c553c
DM
113 name: 'iops_rd',
114 minValue: 10,
115 step: 10,
116 fieldLabel: gettext('Read limit') + ' (ops/s)',
117 labelWidth: width2,
118 emptyText: gettext('unlimited')
119 });
120
121 me.column1.push(me.iops_rd);
122
bf96f60d 123 me.iops_rd_max = Ext.widget('proxmoxintegerfield', {
ac3c553c
DM
124 name: 'iops_rd_max',
125 minValue: 10,
126 step: 10,
127 fieldLabel: gettext('Read max burst') + ' (ops)',
128 labelWidth: width2,
129 emptyText: gettext('default')
130 });
131
132 me.column2.push(me.iops_rd_max);
133
bf96f60d 134 me.iops_wr = Ext.widget('proxmoxintegerfield', {
ac3c553c
DM
135 name: 'iops_wr',
136 minValue: 10,
137 step: 10,
138 fieldLabel: gettext('Write limit') + ' (ops/s)',
139 labelWidth: width2,
140 emptyText: gettext('unlimited')
141 });
142
143 me.column1.push(me.iops_wr);
144
bf96f60d 145 me.iops_wr_max = Ext.widget('proxmoxintegerfield', {
ac3c553c
DM
146 name: 'iops_wr_max',
147 minValue: 10,
148 step: 10,
149 fieldLabel: gettext('Write max burst') + ' (ops)',
150 labelWidth: width2,
151 emptyText: gettext('default')
152 });
153
154 me.column2.push(me.iops_wr_max);
155
156 me.callParent();
157 }
158});
159
160Ext.define('PVE.qemu.HDThrottle', {
9fccc702 161 extend: 'Proxmox.window.Edit',
ac3c553c
DM
162
163 isAdd: true,
164
165 initComponent : function() {
166 var me = this;
167
168 var nodename = me.pveSelNode.data.node;
169 if (!nodename) {
170 throw "no node name specified";
171 }
172
173 var unused = me.confid && me.confid.match(/^unused\d+$/);
174
d5e771ce 175 me.isCreate = me.confid ? unused : true;
ac3c553c
DM
176
177 var ipanel = Ext.create('PVE.qemu.HDThrottleInputPanel', {
178 confid: me.confid,
179 nodename: nodename
180 });
181
182 var subject;
183 if (unused) {
184 me.subject = gettext('Unused Disk');
185 } else {
186 me.subject = gettext('Hard Disk') + ' (' + me.confid + ')';
187 }
188
189 me.items = [ ipanel ];
190
191 me.callParent();
192
193 me.load({
194 success: function(response, options) {
195 if (me.confid) {
196 var value = response.result.data[me.confid];
197 var drive = PVE.Parser.parseQemuDrive(me.confid, value);
198 if (!drive) {
185a77e5 199 Ext.Msg.alert(gettext('Error'), 'Unable to parse drive options');
ac3c553c
DM
200 me.close();
201 return;
202 }
203 ipanel.setDrive(drive);
204 me.isValid(); // trigger validation
205 }
206 }
207 });
208 }
209});