]> git.proxmox.com Git - pve-manager.git/blame - www/manager6/qemu/MemoryEdit.js
update aplinfo
[pve-manager.git] / www / manager6 / qemu / MemoryEdit.js
CommitLineData
e5bb8722 1Ext.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
121Ext.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});