Ext.define('PVE.form.ControllerSelector', {
extend: 'Ext.form.FieldContainer',
alias: 'widget.pveControllerSelector',
-
- statics: {
- maxIds: {
- ide: 3,
- sata: 5,
- virtio: 15,
- scsi: 13
- }
- },
noVirtIO: false,
vmconfig: {}, // used to check for existing devices
sortByPreviousUsage: function(vmconfig, controllerList) {
-
- var usedControllers = Ext.clone(PVE.form.ControllerSelector.maxIds);
-
- var type;
- for (type in usedControllers) {
- if(usedControllers.hasOwnProperty(type)) {
- usedControllers[type] = 0;
- }
+ let usedControllers = {};
+ for (const type of Object.keys(PVE.Utils.diskControllerMaxIDs)) {
+ usedControllers[type] = 0;
}
- var property;
- for (property in vmconfig) {
- if (vmconfig.hasOwnProperty(property)) {
- if (property.match(PVE.Utils.bus_match) && !vmconfig[property].match(/media=cdrom/)) {
- var foundController = property.match(PVE.Utils.bus_match)[1];
- usedControllers[foundController]++;
- }
+ for (const property of Object.keys(vmconfig)) {
+ if (property.match(PVE.Utils.bus_match) && !vmconfig[property].match(/media=cdrom/)) {
+ const foundController = property.match(PVE.Utils.bus_match)[1];
+ usedControllers[foundController]++;
}
}
- var vmDefaults = PVE.qemu.OSDefaults[vmconfig.ostype];
-
- var sortPriority = vmDefaults && vmDefaults.busPriority
- ? vmDefaults.busPriority : PVE.qemu.OSDefaults.generic;
+ var sortPriority = PVE.qemu.OSDefaults.getDefaults(vmconfig.ostype).busPriority;
var sortedList = Ext.clone(controllerList);
- sortedList.sort(function(a,b) {
+ sortedList.sort(function(a, b) {
if (usedControllers[b] == usedControllers[a]) {
return sortPriority[b] - sortPriority[a];
}
return usedControllers[b] - usedControllers[a];
});
-
+
return sortedList;
},
var deviceid = me.down('field[name=deviceid]');
if (autoSelect === 'cdrom') {
- clist = ['ide', 'scsi', 'sata'];
if (!Ext.isDefined(me.vmconfig.ide2)) {
bussel.setValue('ide');
deviceid.setValue(2);
return;
}
- } else {
+ clist = ['ide', 'scsi', 'sata'];
+ } else {
// in most cases we want to add a disk to the same controller
// we previously used
clist = me.sortByPreviousUsage(me.vmconfig, clist);
}
- Ext.Array.each(clist, function(controller) {
- var confid, i;
- if (controller === 'virtio' && me.noVirtIO) {
- return; //continue
- }
+clist_loop:
+ for (const controller of clist) {
bussel.setValue(controller);
- for (i = 0; i <= PVE.form.ControllerSelector.maxIds[controller]; i++) {
- confid = controller + i.toString();
+ for (let i = 0; i < PVE.Utils.diskControllerMaxIDs[controller]; i++) {
+ let confid = controller + i.toString();
if (!Ext.isDefined(me.vmconfig[confid])) {
deviceid.setValue(i);
- return false; // break
+ break clist_loop; // we found the desired controller/id combo
}
}
- });
+ }
deviceid.validate();
},
fieldLabel: gettext('Bus/Device'),
layout: 'hbox',
defaults: {
- hideLabel: true
+ hideLabel: true,
},
items: [
{
flex: 2,
listeners: {
change: function(t, value) {
- if (!me.rendered || !value) {
+ if (!value) {
return;
}
var field = me.down('field[name=deviceid]');
- field.setMaxValue(PVE.form.ControllerSelector.maxIds[value]);
+ field.setMaxValue(PVE.Utils.diskControllerMaxIDs[value]);
field.validate();
- }
- }
+ },
+ },
},
{
- xtype: 'pveIntegerField',
+ xtype: 'proxmoxintegerfield',
name: 'deviceid',
minValue: 0,
- maxValue: PVE.form.ControllerSelector.maxIds.ide,
+ maxValue: PVE.Utils.diskControllerMaxIDs.ide,
value: '0',
flex: 1,
+ allowBlank: false,
validator: function(value) {
- /*jslint confusion: true */
if (!me.rendered) {
return;
}
return "This device is already in use.";
}
return true;
- }
- }
- ]
+ },
+ },
+ ],
});
me.callParent();
- }
+ },
});