]>
Commit | Line | Data |
---|---|---|
e5bb8722 | 1 | Ext.define('PVE.qemu.MemoryInputPanel', { |
ef4ef788 | 2 | extend: 'Proxmox.panel.InputPanel', |
42902182 | 3 | alias: 'widget.pveQemuMemoryPanel', |
c8802a60 | 4 | onlineHelp: 'qm_memory', |
e5bb8722 DM |
5 | |
6 | insideWizard: false, | |
7 | ||
8 | onGetValues: function(values) { | |
9 | var me = this; | |
10 | ||
869f8053 DC |
11 | var res = {}; |
12 | ||
13 | res.memory = values.memory; | |
14 | res.balloon = values.balloon; | |
15 | ||
16 | if (!values.ballooning) { | |
17 | res.balloon = 0; | |
18 | res['delete'] = 'shares'; | |
19 | } else if (values.memory === values.balloon) { | |
20 | delete res.balloon; | |
21 | res['delete'] = 'balloon,shares'; | |
22 | } else if (Ext.isDefined(values.shares) && (values.shares !== "")) { | |
23 | res.shares = values.shares; | |
e5bb8722 | 24 | } else { |
869f8053 | 25 | res['delete'] = "shares"; |
e5bb8722 DM |
26 | } |
27 | ||
28 | return res; | |
29 | }, | |
30 | ||
869f8053 | 31 | initComponent: function() { |
e5bb8722 DM |
32 | var me = this; |
33 | var labelWidth = 160; | |
34 | ||
869f8053 | 35 | me.items= [ |
e5bb8722 DM |
36 | { |
37 | xtype: 'pveMemoryField', | |
9a60a19b | 38 | labelWidth: labelWidth, |
869f8053 DC |
39 | fieldLabel: gettext('Memory') + ' (MiB)', |
40 | name: 'memory', | |
77496e1b | 41 | value: me.insideWizard ? '2048' : '512', |
869f8053 | 42 | minValue: 1, |
869f8053 | 43 | step: 32, |
e5bb8722 | 44 | hotplug: me.hotplug, |
e5bb8722 | 45 | listeners: { |
869f8053 | 46 | change: function(f, value, old) { |
b6450910 DC |
47 | var bf = me.down('field[name=balloon]'); |
48 | var balloon = bf.getValue(); | |
49 | bf.setMaxValue(value); | |
869f8053 | 50 | if (balloon === old) { |
e5bb8722 DM |
51 | bf.setValue(value); |
52 | } | |
869f8053 | 53 | bf.validate(); |
e5bb8722 DM |
54 | } |
55 | } | |
869f8053 DC |
56 | } |
57 | ]; | |
58 | ||
59 | me.advancedItems= [ | |
e5bb8722 | 60 | { |
869f8053 | 61 | xtype: 'pveMemoryField', |
e5bb8722 | 62 | name: 'balloon', |
869f8053 | 63 | minValue: 1, |
e30cddd2 | 64 | maxValue: 512, |
e5bb8722 | 65 | step: 32, |
07de0118 | 66 | fieldLabel: gettext('Minimum memory') + ' (MiB)', |
869f8053 | 67 | hotplug: me.hotplug, |
e5bb8722 | 68 | labelWidth: labelWidth, |
869f8053 DC |
69 | allowBlank: false, |
70 | listeners: { | |
71 | change: function(f, value) { | |
72 | var memory = me.down('field[name=memory]').getValue(); | |
73 | var shares = me.down('field[name=shares]'); | |
74 | shares.setDisabled(value === memory); | |
75 | } | |
76 | } | |
e5bb8722 DM |
77 | }, |
78 | { | |
bf96f60d | 79 | xtype: 'proxmoxintegerfield', |
e5bb8722 DM |
80 | name: 'shares', |
81 | disabled: true, | |
82 | minValue: 0, | |
83 | maxValue: 50000, | |
84 | value: '', | |
85 | step: 10, | |
86 | fieldLabel: gettext('Shares'), | |
e5bb8722 DM |
87 | labelWidth: labelWidth, |
88 | allowBlank: true, | |
e7ade592 | 89 | emptyText: Proxmox.Utils.defaultText + ' (1000)', |
e5bb8722 | 90 | submitEmptyText: false |
869f8053 DC |
91 | }, |
92 | { | |
93 | xtype: 'proxmoxcheckbox', | |
94 | labelWidth: labelWidth, | |
95 | value: '1', | |
96 | name: 'ballooning', | |
97 | fieldLabel: gettext('Ballooning Device'), | |
98 | listeners: { | |
99 | change: function(f, value) { | |
100 | var bf = me.down('field[name=balloon]'); | |
101 | var shares = me.down('field[name=shares]'); | |
102 | var memory = me.down('field[name=memory]'); | |
103 | bf.setDisabled(!value); | |
104 | shares.setDisabled(!value || (bf.getValue() === memory.getValue())); | |
105 | } | |
106 | } | |
22f2f9d6 | 107 | } |
e5bb8722 DM |
108 | ]; |
109 | ||
110 | if (me.insideWizard) { | |
869f8053 DC |
111 | me.column1 = me.items; |
112 | me.items = undefined; | |
113 | me.advancedColumn1 = me.advancedItems; | |
114 | me.advancedItems = undefined; | |
e5bb8722 | 115 | } |
e5bb8722 DM |
116 | me.callParent(); |
117 | } | |
869f8053 | 118 | |
e5bb8722 DM |
119 | }); |
120 | ||
121 | Ext.define('PVE.qemu.MemoryEdit', { | |
9fccc702 | 122 | extend: 'Proxmox.window.Edit', |
e5bb8722 | 123 | |
869f8053 | 124 | initComponent: function() { |
e5bb8722 DM |
125 | var me = this; |
126 | ||
127 | var memoryhotplug; | |
128 | if(me.hotplug) { | |
129 | Ext.each(me.hotplug.split(','), function(el) { | |
130 | if (el === 'memory') { | |
131 | memoryhotplug = 1; | |
132 | } | |
133 | }); | |
134 | } | |
869f8053 DC |
135 | |
136 | var ipanel = Ext.create('PVE.qemu.MemoryInputPanel', { | |
137 | hotplug: memoryhotplug | |
138 | }); | |
e5bb8722 DM |
139 | |
140 | Ext.apply(me, { | |
141 | subject: gettext('Memory'), | |
ec0bd652 | 142 | items: [ ipanel ], |
e5bb8722 DM |
143 | // uncomment the following to use the async configiguration API |
144 | // backgroundDelay: 5, | |
145 | width: 400 | |
146 | }); | |
147 | ||
148 | me.callParent(); | |
149 | ||
150 | me.load({ | |
151 | success: function(response, options) { | |
152 | var data = response.result.data; | |
153 | ||
154 | var values = { | |
9a60a19b | 155 | ballooning: data.balloon === 0 ? '0' : '1', |
e5bb8722 | 156 | shares: data.shares, |
869f8053 DC |
157 | memory: data.memory || '512', |
158 | balloon: data.balloon > 0 ? data.balloon : (data.memory || '512') | |
e5bb8722 | 159 | }; |
869f8053 | 160 | |
e5bb8722 DM |
161 | ipanel.setValues(values); |
162 | } | |
163 | }); | |
164 | } | |
165 | }); |