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.rei...@proxmox.com>
---
 www/manager6/form/CPUModelSelector.js | 193 +++++++++++++++++++++-----
 www/manager6/qemu/ProcessorEdit.js    |   1 -
 2 files changed, 159 insertions(+), 35 deletions(-)

diff --git a/www/manager6/form/CPUModelSelector.js 
b/www/manager6/form/CPUModelSelector.js
index 9eb5b0e9..dea6c44c 100644
--- a/www/manager6/form/CPUModelSelector.js
+++ b/www/manager6/form/CPUModelSelector.js
@@ -1,38 +1,163 @@
 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'],
-       ['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: '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')
        },
        {
-- 
2.20.1


_______________________________________________
pve-devel mailing list
pve-devel@pve.proxmox.com
https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to