pve-manager/www/manager6/form/CPUModelSelector.js
Thomas Lamprecht 399ffa767f ui: eslint: enforce "dot-notation" rule
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2021-01-19 17:45:01 +01:00

105 lines
2.0 KiB
JavaScript

Ext.define('PVE.data.CPUModel', {
extend: 'Ext.data.Model',
fields: [
{ name: 'name' },
{ name: 'vendor' },
{ name: 'custom' },
{ name: 'displayname' },
],
});
Ext.define('PVE.form.CPUModelSelector', {
extend: 'Proxmox.form.ComboGrid',
alias: ['widget.CPUModelSelector'],
valueField: 'name',
displayField: 'displayname',
emptyText: Proxmox.Utils.defaultText + ' (kvm64)',
allowBlank: true,
editable: true,
anyMatch: true,
forceSelection: true,
autoSelect: false,
deleteEmpty: true,
listConfig: {
columns: [
{
header: gettext('Model'),
dataIndex: 'displayname',
hideable: false,
sortable: true,
flex: 3,
},
{
header: gettext('Vendor'),
dataIndex: 'vendor',
hideable: false,
sortable: true,
flex: 2,
},
],
width: 360,
},
store: {
autoLoad: true,
model: 'PVE.data.CPUModel',
proxy: {
type: 'proxmox',
url: '/api2/json/nodes/localhost/cpu',
},
sorters: [
{
sorterFn: function(recordA, recordB) {
let a = recordA.data;
let b = recordB.data;
let vendorOrder = PVE.Utils.cpu_vendor_order;
let orderA = vendorOrder[a.vendor] || vendorOrder._default_;
let orderB = vendorOrder[b.vendor] || vendorOrder._default_;
if (orderA > orderB) {
return 1;
} else if (orderA < orderB) {
return -1;
}
// Within same vendor, sort alphabetically
return a.name.localeCompare(b.name);
},
direction: 'ASC',
},
],
listeners: {
load: function(store, records, success) {
if (success) {
records.forEach(rec => {
rec.data.displayname = rec.data.name.replace(/^custom-/, '');
let vendor = rec.data.vendor;
if (rec.data.name === 'host') {
vendor = 'Host';
}
// We receive vendor names as given to QEMU as CPUID
vendor = PVE.Utils.cpu_vendor_map[vendor] || vendor;
if (rec.data.custom) {
vendor = gettext('Custom') + ` (${vendor})`;
}
rec.data.vendor = vendor;
});
store.sort();
}
},
},
},
});