]> git.proxmox.com Git - pve-manager.git/blame - www/manager6/form/MemoryField.js
update shipped appliance info index
[pve-manager.git] / www / manager6 / form / MemoryField.js
CommitLineData
9f806bcf
DM
1Ext.define('PVE.form.MemoryField', {
2 extend: 'Ext.form.field.Number',
3 alias: 'widget.pveMemoryField',
4
5 allowBlank: false,
6
7 hotplug: false,
8
9 minValue: 32,
10
11 maxValue: 4178944,
12
13 step: 32,
14
63308ba7 15 value: '512', // qm backend default
9f806bcf 16
ecf9179f
DC
17 allowDecimals: false,
18
19 allowExponential: false,
20
9f806bcf
DM
21 computeUpDown: function(value) {
22 var me = this;
23
24 if (!me.hotplug) {
25 return { up: value + me.step, down: value - me.step };
26 }
2a4971d8 27
9f806bcf
DM
28 var dimm_size = 512;
29 var prev_dimm_size = 0;
30 var min_size = 1024;
31 var current_size = min_size;
32 var value_up = min_size;
33 var value_down = min_size;
34 var value_start = min_size;
35
36 var i, j;
37 for (j = 0; j < 9; j++) {
38 for (i = 0; i < 32; i++) {
53e3ea84 39 if (value >= current_size && value < current_size + dimm_size) {
a764c5f7 40 value_start = current_size;
9f806bcf 41 value_up = current_size + dimm_size;
53e3ea84 42 value_down = current_size - (i === 0 ? prev_dimm_size : dimm_size);
9f806bcf 43 }
2a4971d8 44 current_size += dimm_size;
9f806bcf
DM
45 }
46 prev_dimm_size = dimm_size;
47 dimm_size = dimm_size*2;
48 }
49
50 return { up: value_up, down: value_down, start: value_start };
51 },
52
53 onSpinUp: function() {
54 var me = this;
55 if (!me.readOnly) {
56 var res = me.computeUpDown(me.getValue());
57 me.setValue(Ext.Number.constrain(res.up, me.minValue, me.maxValue));
58 }
59 },
60
61 onSpinDown: function() {
62 var me = this;
63 if (!me.readOnly) {
64 var res = me.computeUpDown(me.getValue());
65 me.setValue(Ext.Number.constrain(res.down, me.minValue, me.maxValue));
66 }
67 },
68
69 initComponent: function() {
70 var me = this;
71
72 if (me.hotplug) {
73 me.minValue = 1024;
74
75 me.on('blur', function(field) {
68f8c765 76 var value = me.getValue();
9f806bcf
DM
77 var res = me.computeUpDown(value);
78 if (value === res.start || value === res.up || value === res.down) {
79 return;
80 }
81 field.setValue(res.up);
82 });
83 }
84
85 me.callParent();
f6710aac 86 },
9f806bcf 87});