]> git.proxmox.com Git - pve-manager.git/blame - www/manager5/form/ControllerSelector.js
update build infrastucture to be able to develop with Ext6
[pve-manager.git] / www / manager5 / form / ControllerSelector.js
CommitLineData
711c07d1
DM
1Ext.define('PVE.form.ControllerSelector', {
2 extend: 'Ext.form.FieldContainer',
3 alias: ['widget.PVE.form.ControllerSelector'],
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 height: 22, // hack: set to same height as other fields
63 defaults: {
64 flex: 1,
65 hideLabel: true
66 },
67 items: [
68 {
69 xtype: 'PVE.form.BusTypeSelector',
70 name: 'controller',
71 value: 'ide',
72 noVirtIO: me.noVirtIO,
73 noScsi: me.noScsi,
74 allowBlank: false,
75 listeners: {
76 change: function(t, value) {
77 if (!me.rendered || !value) {
78 return;
79 }
80 var field = me.down('field[name=deviceid]');
81 field.setMaxValue(PVE.form.ControllerSelector.maxIds[value]);
82 field.validate();
83 }
84 }
85 },
86 {
87 xtype: 'numberfield',
88 name: 'deviceid',
89 minValue: 0,
90 maxValue: PVE.form.ControllerSelector.maxIds.ide,
91 value: '0',
92 validator: function(value) {
93 /*jslint confusion: true */
94 if (!me.rendered) {
95 return;
96 }
97 var field = me.down('field[name=controller]');
98 var controller = field.getValue();
99 var confid = controller + value;
100 if (Ext.isDefined(me.vmconfig[confid])) {
101 return "This device is already in use.";
102 }
103 return true;
104 }
105 }
106 ]
107 });
108
109 me.callParent();
110 }
111});