]>
Commit | Line | Data |
---|---|---|
e5bb8722 DM |
1 | Ext.define('PVE.qemu.MemoryInputPanel', { |
2 | extend: 'PVE.panel.InputPanel', | |
3 | alias: 'widget.PVE.qemu.MemoryInputPanel', | |
de382084 | 4 | onlineHelp: 'chapter-qm.html#_memory', |
e5bb8722 DM |
5 | |
6 | insideWizard: false, | |
7 | ||
8 | onGetValues: function(values) { | |
9 | var me = this; | |
10 | ||
11 | var res; | |
12 | ||
13 | if (values.memoryType === 'fixed') { | |
14 | res = { memory: values.memory }; | |
15 | res['delete'] = "balloon,shares"; | |
16 | } else { | |
17 | res = { | |
18 | memory: values.maxmemory, | |
19 | balloon: values.balloon | |
20 | }; | |
21 | if (Ext.isDefined(values.shares) && (values.shares !== "")) { | |
22 | res.shares = values.shares; | |
23 | } else { | |
24 | res['delete'] = "shares"; | |
25 | } | |
26 | } | |
27 | ||
28 | return res; | |
29 | }, | |
30 | ||
31 | initComponent : function() { | |
32 | var me = this; | |
33 | var labelWidth = 160; | |
34 | ||
35 | var items = [ | |
36 | { | |
37 | xtype: 'radiofield', | |
38 | name: 'memoryType', | |
39 | inputValue: 'fixed', | |
40 | boxLabel: gettext('Use fixed size memory'), | |
41 | checked: true, | |
42 | listeners: { | |
43 | change: function(f, value) { | |
44 | if (!me.rendered) { | |
45 | return; | |
46 | } | |
47 | me.down('field[name=memory]').setDisabled(!value); | |
48 | me.down('field[name=maxmemory]').setDisabled(value); | |
49 | me.down('field[name=balloon]').setDisabled(value); | |
50 | me.down('field[name=shares]').setDisabled(value); | |
51 | } | |
52 | } | |
53 | }, | |
54 | { | |
55 | xtype: 'pveMemoryField', | |
56 | name: 'memory', | |
57 | hotplug: me.hotplug, | |
58 | fieldLabel: gettext('Memory') + ' (MB)', | |
59 | labelAlign: 'right', | |
22f2f9d6 | 60 | labelWidth: labelWidth |
e5bb8722 DM |
61 | }, |
62 | { | |
63 | xtype: 'radiofield', | |
64 | name: 'memoryType', | |
65 | inputValue: 'dynamic', | |
66 | boxLabel: gettext('Automatically allocate memory within this range'), | |
67 | listeners: { | |
68 | change: function(f, value) { | |
69 | if (!me.rendered) { | |
70 | return; | |
71 | } | |
72 | } | |
73 | } | |
74 | }, | |
75 | { | |
76 | xtype: 'pveMemoryField', | |
77 | name: 'maxmemory', | |
78 | hotplug: me.hotplug, | |
79 | disabled: true, | |
80 | value: '1024', | |
81 | fieldLabel: gettext('Maximum memory') + ' (MB)', | |
82 | labelAlign: 'right', | |
83 | labelWidth: labelWidth, | |
84 | listeners: { | |
85 | change: function(f, value) { | |
86 | var bf = me.down('field[name=balloon]'); | |
87 | var balloon = bf.getValue(); | |
88 | if (balloon > value) { | |
89 | bf.setValue(value); | |
90 | } | |
91 | bf.setMaxValue(value); | |
92 | } | |
93 | } | |
94 | }, | |
95 | { | |
96 | xtype: 'numberfield', | |
97 | name: 'balloon', | |
98 | disabled: true, | |
99 | minValue: 0, | |
100 | maxValue: 512*1024, | |
101 | value: '512', | |
102 | step: 32, | |
103 | fieldLabel: gettext('Minimum memory') + ' (MB)', | |
104 | labelAlign: 'right', | |
105 | labelWidth: labelWidth, | |
106 | allowBlank: false | |
107 | }, | |
108 | { | |
109 | xtype: 'numberfield', | |
110 | name: 'shares', | |
111 | disabled: true, | |
112 | minValue: 0, | |
113 | maxValue: 50000, | |
114 | value: '', | |
115 | step: 10, | |
116 | fieldLabel: gettext('Shares'), | |
117 | labelAlign: 'right', | |
118 | labelWidth: labelWidth, | |
119 | allowBlank: true, | |
120 | emptyText: PVE.Utils.defaultText + ' (1000)', | |
121 | submitEmptyText: false | |
22f2f9d6 | 122 | } |
e5bb8722 DM |
123 | ]; |
124 | ||
125 | if (me.insideWizard) { | |
126 | me.column1 = items; | |
127 | } else { | |
128 | me.items = items; | |
129 | } | |
130 | ||
131 | me.callParent(); | |
132 | } | |
133 | }); | |
134 | ||
135 | Ext.define('PVE.qemu.MemoryEdit', { | |
136 | extend: 'PVE.window.Edit', | |
137 | ||
138 | initComponent : function() { | |
139 | var me = this; | |
140 | ||
141 | var memoryhotplug; | |
142 | if(me.hotplug) { | |
143 | Ext.each(me.hotplug.split(','), function(el) { | |
144 | if (el === 'memory') { | |
145 | memoryhotplug = 1; | |
146 | } | |
147 | }); | |
148 | } | |
149 | ||
150 | var ipanel = Ext.create('PVE.qemu.MemoryInputPanel', { | |
22f2f9d6 | 151 | hotplug: memoryhotplug |
e5bb8722 DM |
152 | }); |
153 | ||
154 | Ext.apply(me, { | |
155 | subject: gettext('Memory'), | |
ec0bd652 | 156 | items: [ ipanel ], |
e5bb8722 DM |
157 | // uncomment the following to use the async configiguration API |
158 | // backgroundDelay: 5, | |
159 | width: 400 | |
160 | }); | |
161 | ||
162 | me.callParent(); | |
163 | ||
164 | me.load({ | |
165 | success: function(response, options) { | |
166 | var data = response.result.data; | |
167 | ||
168 | var values = { | |
169 | memory: data.memory, | |
170 | maxmemory: data.memory, | |
171 | balloon: data.balloon, | |
172 | shares: data.shares, | |
22f2f9d6 | 173 | memoryType: data.balloon ? 'dynamic' : 'fixed' |
e5bb8722 DM |
174 | }; |
175 | ipanel.setValues(values); | |
176 | } | |
177 | }); | |
178 | } | |
179 | }); |