]>
git.proxmox.com Git - pve-manager.git/blob - www/manager6/form/ControllerSelector.js
1 Ext
.define('PVE.form.ControllerSelector', {
2 extend
: 'Ext.form.FieldContainer',
3 alias
: 'widget.pveControllerSelector',
8 vmconfig
: {}, // used to check for existing devices
10 setToFree: function(controllers
, busField
, deviceIDField
) {
12 let freeId
= PVE
.Utils
.nextFreeDisk(controllers
, me
.vmconfig
);
14 if (freeId
!== undefined) {
15 busField
?.setValue(freeId
.controller
);
16 deviceIDField
.setValue(freeId
.id
);
20 updateVMConfig: function(vmconfig
) {
22 me
.vmconfig
= Ext
.apply({}, vmconfig
);
24 me
.down('field[name=deviceid]').validate();
27 setVMConfig: function(vmconfig
, autoSelect
) {
30 me
.vmconfig
= Ext
.apply({}, vmconfig
);
32 let bussel
= me
.down('field[name=controller]');
33 let deviceid
= me
.down('field[name=deviceid]');
36 if (autoSelect
=== 'cdrom') {
37 if (!Ext
.isDefined(me
.vmconfig
.ide2
)) {
38 bussel
.setValue('ide');
42 clist
= ['ide', 'scsi', 'sata'];
44 // in most cases we want to add a disk to the same controller we previously used
45 clist
= PVE
.Utils
.sortByPreviousUsage(me
.vmconfig
);
48 me
.setToFree(clist
, bussel
, deviceid
);
53 getConfId: function() {
55 let controller
= me
.getComponent('controller').getValue() || 'ide';
56 let id
= me
.getComponent('deviceid').getValue() || 0;
58 return `${controller}${id}`;
61 initComponent: function() {
65 fieldLabel
: gettext('Bus/Device'),
72 xtype
: 'pveBusSelector',
75 value
: PVE
.qemu
.OSDefaults
.generic
.busType
,
76 withVirtIO
: me
.withVirtIO
,
77 withUnused
: me
.withUnused
,
81 change: function(t
, value
) {
85 let field
= me
.down('field[name=deviceid]');
86 me
.setToFree([value
], undefined, field
);
87 field
.setMaxValue(PVE
.Utils
.diskControllerMaxIDs
[value
] - 1);
93 xtype
: 'proxmoxintegerfield',
97 maxValue
: PVE
.Utils
.diskControllerMaxIDs
.ide
- 1,
101 validator: function(value
) {
105 let controller
= me
.down('field[name=controller]').getValue();
106 let confid
= controller
+ value
;
107 if (Ext
.isDefined(me
.vmconfig
[confid
])) {
108 return "This device is already in use.";
119 me
.setVMConfig(me
.vmconfig
);