[pve-devel] r6228 - pve-manager/pve2/www/manager/qemu
svn-commits at proxmox.com
svn-commits at proxmox.com
Mon Jul 4 10:50:44 CEST 2011
Author: dietmar
Date: 2011-07-04 10:50:44 +0200 (Mon, 04 Jul 2011)
New Revision: 6228
Modified:
pve-manager/pve2/www/manager/qemu/HardwareView.js
Log:
better Bus/Device selector
Modified: pve-manager/pve2/www/manager/qemu/HardwareView.js
===================================================================
--- pve-manager/pve2/www/manager/qemu/HardwareView.js 2011-07-04 06:40:23 UTC (rev 6227)
+++ pve-manager/pve2/www/manager/qemu/HardwareView.js 2011-07-04 08:50:44 UTC (rev 6228)
@@ -109,7 +109,10 @@
var drive = {};
- var confid = me.down('field[name=_confid]').getValue();
+ var controller = me.down('field[name=_controller]').getValue();
+ var deviceid = me.down('field[name=_deviceid]').getValue();
+
+ var confid = '' + controller + deviceid;
var field = me.down('field[name=_disksize]');
var hdsize = field.getValue();
@@ -164,6 +167,12 @@
allowBlank: false
});
+ var maxIds = {
+ ide: 3,
+ virtio: 15,
+ scsi: 15
+ };
+
me.column1 = [
hdstoragesel,
{
@@ -176,12 +185,44 @@
allowBlank: false
},
{
- // fixme: we need a selector for all unused disk ids
- xtype: 'displayfield',
- name: '_confid',
- value: 'virtio5',
+ xtype: 'fieldcontainer',
fieldLabel: 'Bus/Device',
- allowBlank: false
+ layout: 'hbox',
+ defaults: {
+ flex: 1,
+ hideLabel: true
+ },
+ items: [
+ {
+ xtype: 'PVE.form.BusTypeSelector',
+ name: '_controller',
+ value: 'ide',
+ allowBlank: false,
+ listeners: {
+ change: function(t, value) {
+ if (!value)
+ return;
+ var field = me.down('field[name=_deviceid]');
+ field.setMaxValue(maxIds[value]);
+ field.validate();
+ }
+ }
+ },
+ {
+ xtype: 'numberfield',
+ name: '_deviceid',
+ minValue: 0,
+ maxValue: maxIds['ide'],
+ value: 0,
+ validator: function(value) {
+ var controller = me.down('field[name=_controller]').getValue();
+ var confid = '' + controller + value;
+ if (Ext.isDefined(me.vmconfig[confid]))
+ return "This device is already in use.";
+ return true;
+ }
+ }
+ ]
}
];
@@ -214,7 +255,21 @@
me.load({
success: function(form, action) {
+ var confid;
me.vmconfig = action.result.data;
+ var controller = 'ide';
+ if (me.vmconfig.ostype === 'l26') {
+ controller = 'virtio';
+ }
+ me.down('field[name=_controller]').setValue(controller);
+ var i;
+ for (i = 0; i <= maxIds[controller]; i++) {
+ confid = '' + controller + i;
+ if (!Ext.isDefined(me.vmconfig[confid])) {
+ me.down('field[name=_deviceid]').setValue(i);
+ break;
+ }
+ }
}
});
}
More information about the pve-devel
mailing list