]>
git.proxmox.com Git - pve-manager.git/blob - www/manager6/window/USBMapEdit.js
1 Ext
.define('PVE.window.USBMapEditWindow', {
2 extend
: 'Proxmox.window.Edit',
4 mixins
: ['Proxmox.Mixin.CBind'],
6 cbindData: function(initialConfig
) {
8 me
.isCreate
= !me
.name
;
9 me
.method
= me
.isCreate
? 'POST' : 'PUT';
10 me
.hideMapping
= !!me
.entryOnly
;
11 me
.hideComment
= me
.name
&& !me
.entryOnly
;
12 me
.hideNodeSelector
= me
.nodename
|| me
.entryOnly
;
13 me
.hideNode
= !me
.nodename
|| !me
.hideNodeSelector
;
16 nodename
: me
.nodename
,
20 submitUrl: function(_url
, data
) {
22 let name
= me
.isCreate
? '' : me
.name
;
23 return `/cluster/mapping/usb/${name}`;
26 title
: gettext('Add USB mapping'),
28 onlineHelp
: 'resource_mapping',
33 xclass
: 'Ext.app.ViewController',
35 onGetValues: function(values
) {
37 let view
= me
.getView();
38 values
.node
??= view
.nodename
;
40 let type
= me
.getView().down('radiofield').getGroupValue();
41 let name
= values
.name
;
42 let description
= values
.description
;
43 delete values
.description
;
46 if (type
=== 'path') {
47 let usbsel
= me
.lookup(type
);
48 let usbDev
= usbsel
.getStore().findRecord('usbid', values
[type
], 0, false, true, true);
53 values
.id
= `${usbDev.data.vendid}:${usbDev.data.prodid}`;
58 map
= PVE
.Parser
.filterPropertyStringList(me
.originalMap
, (e
) => e
.node
!== values
.node
);
61 map
.push(PVE
.Parser
.printPropertyString(values
));
66 values
.description
= description
;
76 onSetValues: function(values
) {
78 let view
= me
.getView();
79 me
.originalMap
= [...values
.map
];
80 let configuredNodes
= [];
81 PVE
.Parser
.filterPropertyStringList(values
.map
, (e
) => {
82 configuredNodes
.push(e
.node
);
83 if (e
.node
=== view
.nodename
) {
89 me
.lookup('nodeselector').disallowedNodes
= configuredNodes
;
97 modeChange: function(field
, value
) {
99 let type
= field
.inputValue
;
100 let usbsel
= me
.lookup(type
);
101 usbsel
.setDisabled(!value
);
104 nodeChange: function(_field
, value
) {
105 this.lookup('id').setNodename(value
);
106 this.lookup('path').setNodename(value
);
110 init: function(view
) {
113 if (!view
.nodename
) {
114 //throw "no nodename given";
120 change
: 'modeChange',
123 change
: 'nodeChange',
131 onGetValues: function(values
) {
132 return this.up('window').getController().onGetValues(values
);
135 onSetValues: function(values
) {
136 return this.up('window').getController().onSetValues(values
);
141 xtype
: 'pmxDisplayEditField',
142 fieldLabel
: gettext('Name'),
146 submitValue
: '{isCreate}',
152 xtype
: 'displayfield',
153 fieldLabel
: gettext('Mapping on Node'),
158 disabled
: '{hideNode}',
159 hidden
: '{hideNode}',
164 xtype
: 'pveNodeSelector',
165 reference
: 'nodeselector',
166 fieldLabel
: gettext('Mapping on Node'),
170 disabled
: '{hideNodeSelector}',
171 hidden
: '{hideNodeSelector}',
179 xtype
: 'fieldcontainer',
180 defaultType
: 'radiofield',
183 disabled
: '{hideMapping}',
184 hidden
: '{hideMapping}',
191 boxLabel
: gettext('Use USB Vendor/Device ID'),
195 xtype
: 'pveUSBSelector',
200 nodename
: '{nodename}',
201 disabled
: '{hideMapping}',
205 fieldLabel
: gettext('Choose Device'),
211 boxLabel
: gettext('Use USB Port'),
215 xtype
: 'pveUSBSelector',
220 nodename
: '{nodename}',
225 fieldLabel
: gettext('Choose Port'),
234 xtype
: 'proxmoxtextfield',
235 fieldLabel
: gettext('Comment'),
239 disabled
: '{hideComment}',
240 hidden
: '{hideComment}',