From 06dd1330dfde858f60e9236d91c309ae0f0e1c9c Mon Sep 17 00:00:00 2001 From: Stefan Reiter Date: Tue, 10 Sep 2019 19:11:44 +0200 Subject: [PATCH] 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 Signed-off-by: Thomas Lamprecht --- www/manager6/form/CPUModelSelector.js | 208 +++++++++++++++++++++----- www/manager6/qemu/ProcessorEdit.js | 1 - 2 files changed, 171 insertions(+), 38 deletions(-) diff --git a/www/manager6/form/CPUModelSelector.js b/www/manager6/form/CPUModelSelector.js index 505d27c8..87e15c08 100644 --- a/www/manager6/form/CPUModelSelector.js +++ b/www/manager6/form/CPUModelSelector.js @@ -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' + } + ] + } }); diff --git a/www/manager6/qemu/ProcessorEdit.js b/www/manager6/qemu/ProcessorEdit.js index c62dc734..bc17e152 100644 --- a/www/manager6/qemu/ProcessorEdit.js +++ b/www/manager6/qemu/ProcessorEdit.js @@ -103,7 +103,6 @@ Ext.define('PVE.qemu.ProcessorInputPanel', { { xtype: 'CPUModelSelector', name: 'cputype', - value: '__default__', fieldLabel: gettext('Type') }, {