Make CPU Model Selector a searchable grid view

Uses a ComboGrid with search feature and a column for vendor. Can be
sorted by both columns.

Default sort is as given in this file, I tried to align it as
* AMD
* Intel
* Other
alphabetically and in QEMU order (as before, seems to be release date?)
within those "groups".

Doesn't work with value set in widget definition (would need to be
preferredValue), but we always call setValue() anyway (and if we don't,
value will be '', aka the default, which is correct too), so just remove
that from ProcessorEdit.js.

Signed-off-by: Stefan Reiter <s.reiter@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
This commit is contained in:
Stefan Reiter 2019-09-10 19:11:44 +02:00 committed by Thomas Lamprecht
parent af89f6820b
commit 06dd1330df
2 changed files with 171 additions and 38 deletions

View File

@ -1,41 +1,175 @@
Ext.define('PVE.form.CPUModelSelector', {
extend: 'Proxmox.form.KVComboBox',
extend: 'Proxmox.form.ComboGrid',
alias: ['widget.CPUModelSelector'],
comboItems: [
['__default__', Proxmox.Utils.defaultText + ' (kvm64)'],
['486', '486'],
['athlon', 'athlon'],
['core2duo', 'core2duo'],
['coreduo', 'coreduo'],
['kvm32', 'kvm32'],
['kvm64', 'kvm64'],
['pentium', 'pentium'],
['pentium2', 'pentium2'],
['pentium3', 'pentium3'],
['phenom', 'phenom'],
['qemu32', 'qemu32'],
['qemu64', 'qemu64'],
['Conroe', 'Conroe'],
['Penryn', 'Penryn'],
['Nehalem', 'Nehalem'],
['Westmere', 'Westmere'],
['SandyBridge', 'SandyBridge'],
['IvyBridge', 'IvyBridge'],
['Haswell', 'Haswell'],
['Haswell-noTSX','Haswell-noTSX'],
['Broadwell', 'Broadwell'],
['Broadwell-noTSX','Broadwell-noTSX'],
['Skylake-Client','Skylake-Client'],
['Skylake-Server','Skylake-Server'],
['Cascadelake-Server','Cascadelake-Server'],
['KnightsMill','KnightsMill'],
['Opteron_G1', 'Opteron_G1'],
['Opteron_G2', 'Opteron_G2'],
['Opteron_G3', 'Opteron_G3'],
['Opteron_G4', 'Opteron_G4'],
['Opteron_G5', 'Opteron_G5'],
['EPYC', 'EPYC'],
['host', 'host']
valueField: 'value',
displayField: 'value',
emptyText: Proxmox.Utils.defaultText + ' (kvm64)',
allowBlank: true,
editable: true,
anyMatch: true,
forceSelection: true,
autoSelect: false,
deleteEmpty: true,
listConfig: {
columns: [
{
header: gettext('Model'),
dataIndex: 'value',
hideable: false,
sortable: true,
flex: 2
},
{
header: gettext('Vendor'),
dataIndex: 'vendor',
hideable: false,
sortable: true,
flex: 1
}
],
width: 320
},
store: {
fields: [ 'value', 'vendor' ],
data: [
{
value: 'athlon',
vendor: 'AMD'
},
{
value: 'phenom',
vendor: 'AMD'
},
{
value: 'Opteron_G1',
vendor: 'AMD'
},
{
value: 'Opteron_G2',
vendor: 'AMD'
},
{
value: 'Opteron_G3',
vendor: 'AMD'
},
{
value: 'Opteron_G4',
vendor: 'AMD'
},
{
value: 'Opteron_G5',
vendor: 'AMD'
},
{
value: 'EPYC',
vendor: 'AMD'
},
{
value: '486',
vendor: 'Intel'
},
{
value: 'core2duo',
vendor: 'Intel'
},
{
value: 'coreduo',
vendor: 'Intel'
},
{
value: 'pentium',
vendor: 'Intel'
},
{
value: 'pentium2',
vendor: 'Intel'
},
{
value: 'pentium3',
vendor: 'Intel'
},
{
value: 'Conroe',
vendor: 'Intel'
},
{
value: 'Penryn',
vendor: 'Intel'
},
{
value: 'Nehalem',
vendor: 'Intel'
},
{
value: 'Westmere',
vendor: 'Intel'
},
{
value: 'SandyBridge',
vendor: 'Intel'
},
{
value: 'IvyBridge',
vendor: 'Intel'
},
{
value: 'Haswell',
vendor: 'Intel'
},
{
value: 'Haswell-noTSX',
vendor: 'Intel'
},
{
value: 'Broadwell',
vendor: 'Intel'
},
{
value: 'Broadwell-noTSX',
vendor: 'Intel'
},
{
value: 'Skylake-Client',
vendor: 'Intel'
},
{
value: 'Skylake-Server',
vendor: 'Intel'
},
{
value: 'Cascadelake-Server',
vendor: 'Intel'
},
{
value: 'KnightsMill',
vendor: 'Intel'
},
{
value: 'kvm32',
vendor: 'Other'
},
{
value: 'kvm64',
vendor: 'Other'
},
{
value: 'qemu32',
vendor: 'Other'
},
{
value: 'qemu64',
vendor: 'Other'
},
{
value: 'host',
vendor: 'Other'
}
]
}
});

View File

@ -103,7 +103,6 @@ Ext.define('PVE.qemu.ProcessorInputPanel', {
{
xtype: 'CPUModelSelector',
name: 'cputype',
value: '__default__',
fieldLabel: gettext('Type')
},
{