pve-trunks-plugin/pve-trunks-plugin.js

60 lines
1.8 KiB
JavaScript

/*
* Proxmox VE - VLAN Trunks UI Plugin
* Adds "Trunks" field to QEMU VM Network Device editor
*
* Install: place in /usr/share/pve-manager/js/ and patch index template
* See install.sh for automated installation
*/
Ext.define('PVE.patch.QemuNetworkTrunks', {
override: 'PVE.qemu.NetworkInputPanel',
onGetValues: function(values) {
var me = this;
if (values.trunks) {
me.network.trunks = values.trunks;
} else {
delete me.network.trunks;
}
delete values.trunks;
return me.callParent([values]);
},
initComponent: function() {
var me = this;
me.callParent(arguments);
// Add trunks field after MTU in advanced column
var mtuFields = me.query('[name=mtu]');
if (mtuFields.length > 0) {
var container = mtuFields[0].ownerCt;
if (container) {
container.add({
xtype: 'textfield',
name: 'trunks',
fieldLabel: 'Trunks',
emptyText: 'e.g. 100;200;300-400',
allowBlank: true,
regex: /^\d+(?:-\d+)?(?:;\d+(?:-\d+)?)*$/,
regexText: 'VLAN IDs separated by semicolons, e.g. 100;200;300-400',
});
}
}
// Handle "No network device" checkbox in wizard
var noNetworkCb = me.down('[name=nonetwork]');
if (noNetworkCb) {
var origHandler = noNetworkCb.listeners && noNetworkCb.listeners.change;
noNetworkCb.on('change', function(cb, value) {
var trunksField = me.down('[name=trunks]');
if (trunksField) {
trunksField.setDisabled(value);
}
});
}
},
});