]> git.proxmox.com Git - pve-manager.git/blob - www/manager6/form/ControllerSelector.js
Rename Wizard Component aliases using camelCase
[pve-manager.git] / www / manager6 / form / ControllerSelector.js
1 Ext.define('PVE.form.ControllerSelector', {
2 extend: 'Ext.form.FieldContainer',
3 alias: 'widget.pveControllerSelector',
4
5 statics: {
6 maxIds: {
7 ide: 3,
8 sata: 5,
9 virtio: 15,
10 scsi: 13
11 }
12 },
13
14 noVirtIO: false,
15
16 noScsi: false,
17
18 vmconfig: {}, // used to check for existing devices
19
20 setVMConfig: function(vmconfig, autoSelect) {
21 var me = this;
22
23 me.vmconfig = Ext.apply({}, vmconfig);
24 if (autoSelect) {
25 var clist = ['ide', 'virtio', 'scsi', 'sata'];
26 if (autoSelect === 'cdrom') {
27 clist = ['ide', 'scsi', 'sata'];
28 if (!Ext.isDefined(me.vmconfig.ide2)) {
29 me.down('field[name=controller]').setValue('ide');
30 me.down('field[name=deviceid]').setValue(2);
31 return;
32 }
33 } else if (me.vmconfig.ostype === 'l26') {
34 clist = ['virtio', 'ide', 'scsi', 'sata'];
35 }
36
37 Ext.Array.each(clist, function(controller) {
38 var confid, i;
39 if ((controller === 'virtio' && me.noVirtIO) ||
40 (controller === 'scsi' && me.noScsi)) {
41 return; //continue
42 }
43 me.down('field[name=controller]').setValue(controller);
44 for (i = 0; i <= PVE.form.ControllerSelector.maxIds[controller]; i++) {
45 confid = controller + i.toString();
46 if (!Ext.isDefined(me.vmconfig[confid])) {
47 me.down('field[name=deviceid]').setValue(i);
48 return false; // break
49 }
50 }
51 });
52 }
53 me.down('field[name=deviceid]').validate();
54 },
55
56 initComponent: function() {
57 var me = this;
58
59 Ext.apply(me, {
60 fieldLabel: gettext('Bus/Device'),
61 layout: 'hbox',
62 defaults: {
63 flex: 1,
64 hideLabel: true
65 },
66 items: [
67 {
68 xtype: 'pveBusSelector',
69 name: 'controller',
70 value: 'ide',
71 noVirtIO: me.noVirtIO,
72 noScsi: me.noScsi,
73 allowBlank: false,
74 listeners: {
75 change: function(t, value) {
76 if (!me.rendered || !value) {
77 return;
78 }
79 var field = me.down('field[name=deviceid]');
80 field.setMaxValue(PVE.form.ControllerSelector.maxIds[value]);
81 field.validate();
82 }
83 }
84 },
85 {
86 xtype: 'numberfield',
87 name: 'deviceid',
88 minValue: 0,
89 maxValue: PVE.form.ControllerSelector.maxIds.ide,
90 value: '0',
91 validator: function(value) {
92 /*jslint confusion: true */
93 if (!me.rendered) {
94 return;
95 }
96 var field = me.down('field[name=controller]');
97 var controller = field.getValue();
98 var confid = controller + value;
99 if (Ext.isDefined(me.vmconfig[confid])) {
100 return "This device is already in use.";
101 }
102 return true;
103 }
104 }
105 ]
106 });
107
108 me.callParent();
109 }
110 });