]>
git.proxmox.com Git - pve-manager.git/blob - www/manager6/qemu/USBEdit.js
1 Ext
.define('PVE.qemu.USBInputPanel', {
2 extend
: 'Proxmox.panel.InputPanel',
3 mixins
: ['Proxmox.Mixin.CBind' ],
6 onlineHelp
: 'qm_usb_passthrough',
13 xclass
: 'Ext.app.ViewController',
17 change: function(field
, newValue
, oldValue
) {
18 var usbval
= field
.getUSBValue();
19 var usb3field
= this.lookupReference('usb3');
20 var usb3
= /usb3/.test(usbval
);
21 if(usb3
&& !usb3field
.isDisabled()) {
22 usb3field
.savedVal
= usb3field
.getValue();
23 usb3field
.setValue(true);
24 usb3field
.setDisabled(true);
25 } else if(!usb3
&& usb3field
.isDisabled()){
26 var val
= (usb3field
.savedVal
=== undefined)?usb3field
.originalValue
:usb3field
.savedVal
;
27 usb3field
.setValue(val
);
28 usb3field
.setDisabled(false);
35 setVMConfig: function(vmconfig
) {
37 me
.vmconfig
= vmconfig
;
40 onGetValues: function(values
) {
44 for (i
= 0; i
< 6; i
++) {
45 if (!me
.vmconfig
['usb' + i
.toString()]) {
46 me
.confid
= 'usb' + i
.toString();
52 var type
= me
.down('radiofield').getGroupValue();
58 val
= me
.down('pveUSBSelector[name=' + type
+ ']').getUSBValue();
61 throw "invalid type selected";
68 values
[me
.confid
] = val
;
74 xtype
: 'fieldcontainer',
75 defaultType
: 'radiofield',
80 boxLabel
: gettext('Spice Port'),
86 inputValue
: 'hostdevice',
87 boxLabel
: gettext('Use USB Vendor/Device ID'),
88 reference
: 'hostdevice',
92 xtype
: 'pveUSBSelector',
96 cbind
: { pveSelNode
: '{pveSelNode}' },
97 bind
: { disabled
: '{!hostdevice.checked}' },
100 fieldLabel
: 'Choose Device',
107 boxLabel
: gettext('Use USB Port'),
112 xtype
: 'pveUSBSelector',
115 cbind
: { pveSelNode
: '{pveSelNode}' },
116 bind
: { disabled
: '{!port.checked}' },
120 fieldLabel
: gettext('Choose Port'),
129 fieldLabel
: gettext('Use USB3')
136 Ext
.define('PVE.qemu.USBEdit', {
137 extend
: 'Proxmox.window.Edit',
143 subject
: gettext('USB Device'),
146 initComponent : function() {
149 me
.isCreate
= !me
.confid
;
151 var ipanel
= Ext
.create('PVE.qemu.USBInputPanel', {
153 pveSelNode
: me
.pveSelNode
163 success: function(response
, options
) {
164 ipanel
.setVMConfig(response
.result
.data
);
166 var data
= response
.result
.data
[me
.confid
].split(',');
167 var port
, hostdevice
, usb3
= false;
170 for (i
= 0; i
< data
.length
; i
++) {
171 if (/^(host=)?(0x)?[a-zA-Z0-9]{4}\:(0x)?[a-zA-Z0-9]{4}$/.test(data
[i
])) {
172 hostdevice
= data
[i
];
173 hostdevice
= hostdevice
.replace('host=', '').replace('0x','');
175 } else if (/^(host=)?(\d+)\-(\d+(\.\d+)*)$/.test(data
[i
])) {
177 port
= port
.replace('host=','');
181 if (/^usb3=(1|on|true)$/.test(data
[i
])) {
187 hostdevice
: hostdevice
,
192 ipanel
.setValues(values
);