]> git.proxmox.com Git - pve-manager.git/blob - www/manager6/form/PCISelector.js
ui: form/pci: add simple IOMMU group renderer
[pve-manager.git] / www / manager6 / form / PCISelector.js
1 Ext.define('PVE.form.PCISelector', {
2 extend: 'Proxmox.form.ComboGrid',
3 xtype: 'pvePCISelector',
4
5 store: {
6 fields: ['id', 'vendor_name', 'device_name', 'vendor', 'device', 'iommugroup', 'mdev'],
7 filterOnLoad: true,
8 sorters: [
9 {
10 property: 'id',
11 direction: 'ASC',
12 },
13 ],
14 },
15
16 autoSelect: false,
17 valueField: 'id',
18 displayField: 'id',
19
20 // can contain a load callback for the store
21 // useful to determine the state of the IOMMU
22 onLoadCallBack: undefined,
23
24 listConfig: {
25 width: 800,
26 columns: [
27 {
28 header: 'ID',
29 dataIndex: 'id',
30 width: 100,
31 },
32 {
33 header: gettext('IOMMU Group'),
34 dataIndex: 'iommugroup',
35 renderer: v => v === -1 ? '-' : v,
36 width: 75,
37 },
38 {
39 header: gettext('Vendor'),
40 dataIndex: 'vendor_name',
41 flex: 2,
42 },
43 {
44 header: gettext('Device'),
45 dataIndex: 'device_name',
46 flex: 6,
47 },
48 {
49 header: gettext('Mediated Devices'),
50 dataIndex: 'mdev',
51 flex: 1,
52 renderer: function(val) {
53 return Proxmox.Utils.format_boolean(!!val);
54 },
55 },
56 ],
57 },
58
59 setNodename: function(nodename) {
60 var me = this;
61
62 if (!nodename || me.nodename === nodename) {
63 return;
64 }
65
66 me.nodename = nodename;
67
68 me.store.setProxy({
69 type: 'proxmox',
70 url: '/api2/json/nodes/' + me.nodename + '/hardware/pci',
71 });
72
73 me.store.load();
74 },
75
76 initComponent: function() {
77 var me = this;
78
79 var nodename = me.nodename;
80 me.nodename = undefined;
81
82 me.callParent();
83
84 if (me.onLoadCallBack !== undefined) {
85 me.mon(me.getStore(), 'load', me.onLoadCallBack);
86 }
87
88 me.setNodename(nodename);
89 },
90 });
91