Ext.define('PVE.form.MDevSelector', { extend: 'Proxmox.form.ComboGrid', xtype: 'pveMDevSelector', store: { fields: ['type', 'available', 'description'], filterOnLoad: true, sorters: [ { property: 'type', direction: 'ASC', }, ], }, autoSelect: false, valueField: 'type', displayField: 'type', listConfig: { columns: [ { header: gettext('Type'), dataIndex: 'type', flex: 1, }, { header: gettext('Available'), dataIndex: 'available', width: 80, }, { header: gettext('Description'), dataIndex: 'description', flex: 1, renderer: function(value) { if (!value) { return ''; } return value.split('\n').join('
'); }, }, ], }, setPciID: function(pciid, force) { var me = this; if (!force && (!pciid || me.pciid === pciid)) { return; } me.pciid = pciid; me.updateProxy(); }, setNodename: function(nodename) { var me = this; if (!nodename || me.nodename === nodename) { return; } me.nodename = nodename; me.updateProxy(); }, updateProxy: function() { var me = this; me.store.setProxy({ type: 'proxmox', url: '/api2/json/nodes/' + me.nodename + '/hardware/pci/' + me.pciid + '/mdev', }); me.store.load(); }, initComponent: function() { var me = this; if (!me.nodename) { throw 'no node name specified'; } me.callParent(); if (me.pciid) { me.setPciID(me.pciid, true); } }, });