]>
git.proxmox.com Git - pve-manager.git/blob - www/manager6/qemu/USBEdit.js
1 Ext
.define('PVE.qemu.USBInputPanel', {
2 extend
: 'Proxmox.panel.InputPanel',
5 onlineHelp
: 'qm_usb_passthrough',
8 xclass
: 'Ext.app.ViewController',
12 change: function(field
, newValue
, oldValue
) {
13 var hwidfield
= this.lookupReference('hwid');
14 var portfield
= this.lookupReference('port');
15 var usb3field
= this.lookupReference('usb3');
16 if (field
.inputValue
=== 'hostdevice') {
17 hwidfield
.setDisabled(!newValue
);
18 } else if(field
.inputValue
=== 'port') {
19 portfield
.setDisabled(!newValue
);
20 } else if(field
.inputValue
=== 'spice') {
21 usb3field
.setDisabled(newValue
);
26 change: function(field
, newValue
, oldValue
) {
27 var usbval
= field
.getUSBValue();
28 var usb3field
= this.lookupReference('usb3');
29 var usb3
= /usb3/.test(usbval
);
30 if(usb3
&& !usb3field
.isDisabled()) {
31 usb3field
.savedVal
= usb3field
.getValue();
32 usb3field
.setValue(true);
33 usb3field
.setDisabled(true);
34 } else if(!usb3
&& usb3field
.isDisabled()){
35 var val
= (usb3field
.savedVal
=== undefined)?usb3field
.originalValue
:usb3field
.savedVal
;
36 usb3field
.setValue(val
);
37 usb3field
.setDisabled(false);
44 setVMConfig: function(vmconfig
) {
46 me
.vmconfig
= vmconfig
;
49 onGetValues: function(values
) {
53 for (i
= 0; i
< 6; i
++) {
54 if (!me
.vmconfig
['usb' + i
.toString()]) {
55 me
.confid
= 'usb' + i
.toString();
61 var type
= me
.down('radiofield').getGroupValue();
67 val
= me
.down('pveUSBSelector[name=' + type
+ ']').getUSBValue();
68 if (!/usb3/.test(val
) && me
.down('field[name=usb3]').getValue() === true) {
73 throw "invalid type selected";
76 values
[me
.confid
] = val
;
80 initComponent: function () {
85 xtype
: 'fieldcontainer',
86 defaultType
: 'radiofield',
91 boxLabel
: gettext('Spice Port'),
97 inputValue
: 'hostdevice',
98 boxLabel
: gettext('Use USB Vendor/Device ID'),
102 xtype
: 'pveUSBSelector',
106 pveSelNode
: me
.pveSelNode
,
110 fieldLabel
: 'Choose Device',
117 boxLabel
: gettext('Use USB Port'),
121 xtype
: 'pveUSBSelector',
124 pveSelNode
: me
.pveSelNode
,
129 fieldLabel
: gettext('Choose Port'),
138 fieldLabel
: gettext('Use USB3')
152 Ext
.define('PVE.qemu.USBEdit', {
153 extend
: 'Proxmox.window.Edit',
159 subject
: gettext('USB Device'),
162 initComponent : function() {
165 me
.isCreate
= !me
.confid
;
167 var ipanel
= Ext
.create('PVE.qemu.USBInputPanel', {
169 pveSelNode
: me
.pveSelNode
179 success: function(response
, options
) {
180 ipanel
.setVMConfig(response
.result
.data
);
182 var data
= response
.result
.data
[me
.confid
].split(',');
183 var port
, hostdevice
, usb3
= false;
186 for (i
= 0; i
< data
.length
; i
++) {
187 if (/^(host=)?(0x)?[a-zA-Z0-9]{4}\:(0x)?[a-zA-Z0-9]{4}$/.test(data
[i
])) {
188 hostdevice
= data
[i
];
189 hostdevice
= hostdevice
.replace('host=', '').replace('0x','');
191 } else if (/^(host=)?(\d+)\-(\d+(\.\d+)*)$/.test(data
[i
])) {
193 port
= port
.replace('host=','');
197 if (/^usb3=(1|on|true)$/.test(data
[i
])) {
203 hostdevice
: hostdevice
,
208 ipanel
.setValues(values
);