form/CacheTypeSelector.js \
form/SnapshotSelector.js \
form/ContentTypeSelector.js \
+ form/HotplugFeatureSelector.js \
form/iScsiProviderSelector.js \
form/DayOfWeekSelector.js \
form/BackupModeSelector.js \
return value;
},
+ render_hotplug_features: function (value) {
+ var fa = [];
+
+ if (!value || (value === '0')) {
+ return gettext('disabled');
+ }
+
+ Ext.each(value.split(','), function(el) {
+ if (el === 'disk') {
+ fa.push(gettext('Disk'));
+ } else if (el === 'network') {
+ fa.push(gettext('Network'));
+ } else if (el === 'usb') {
+ fa.push(gettext('USB'));
+ } else if (el === 'memory') {
+ fa.push(gettext('Memory'));
+ } else if (el === 'cpu') {
+ fa.push(gettext('CPU'));
+ } else {
+ fa.push(el);
+ }
+ });
+
+ return fa.join(', ');
+ },
+
network_iface_types: {
eth: gettext("Network Device"),
bridge: 'Linux Bridge',
--- /dev/null
+Ext.define('PVE.form.HotplugFeatureSelector', {
+ extend: 'PVE.form.KVComboBox',
+ alias: ['widget.pveHotplugFeatureSelector'],
+
+ multiSelect: true,
+ allowBlank: true,
+ deleteEmpty: false,
+
+ setValue: function(value, doSelect) {
+ var me = this;
+
+ if (me.multiSelect && Ext.isString(value)) {
+ if (value === '0') {
+ value = [];
+ } else if (value === '1') {
+ value = ['disk', 'network', 'usb'];
+ } else {
+ value = value.split(',');
+ }
+ }
+
+ me.callParent([value, doSelect]);
+ },
+
+ getSubmitData: function() {
+ var me = this,
+ data = null,
+ val;
+ if (!me.disabled && me.submitValue) {
+ val = me.getSubmitValue();
+ if (Ext.isArray(val)) {
+ val = val.join(',') || '0';
+ }
+ if (val !== null && val !== '') {
+ data = {};
+ data[me.getName()] = val;
+ } else if (me.deleteEmpty) {
+ data = {};
+ data['delete'] = me.getName();
+ }
+ }
+ return data;
+ },
+
+
+ initComponent: function() {
+ var me = this;
+
+ me.data = [['disk', gettext('Disk')],
+ ['network', gettext('Network')],
+ ['usb', gettext('USB')],
+ ['memory', gettext('Memory')],
+ ['cpu', gettext('CPU')]];
+
+ me.callParent();
+ }
+});
},
hotplug: {
header: gettext('Hotplug'),
- defaultValue: true,
- renderer: PVE.Utils.format_boolean,
+ defaultValue: 'disk,network,usb',
+ renderer: PVE.Utils.render_hotplug_features,
editor: caps.vms['VM.Config.HWType'] ? {
xtype: 'pveWindowEdit',
subject: gettext('Hotplug'),
items: {
- xtype: 'pvecheckbox',
+ xtype: 'pveHotplugFeatureSelector',
name: 'hotplug',
- uncheckedValue: 0,
- defaultValue: 1,
- deleteDefaultValue: true,
- fieldLabel: gettext('Hotplug')
+ value: '',
+ multiSelect: true,
+ fieldLabel: gettext('Hotplug'),
+ allowBlank: true
}
} : undefined
},